我如何运行Sutton和Barton的"强化学习"Lisp代码?

kay*_*oll 7 lisp artificial-intelligence common-lisp reinforcement-learning mcl

我最近一直在阅读关于强化学习的很多内容,我发现"强化学习:简介"是一本很好的指南.作者为他们的许多工作示例提供了有用的源代码.

在我开始提出问题之前,我应该指出,我对lisp的实际知识很少.我知道基本概念及其工作原理,但我从未真正以有意义的方式使用过lisp,所以很可能我只是在做一些令人难以置信的事情n00b-ish.:)

此外,作者在他的页面上声明他不会回答有关他的代码的问题,所以我没有联系他,并认为Stack Overflow将是一个更好的选择.

我一直试图在Linux机器上运行代码,使用GNU的CLISP和SBCL,但是无法运行它.我使用任何一个解释器都会得到一整套错误.特别是,大多数代码似乎使用了包含行的"utilities.lisp"文件中包含的许多实用程序

(defpackage :rss-utilities
  (:use :common-lisp :ccl)
  (:nicknames :ut))

(in-package :ut)
Run Code Online (Sandbox Code Playgroud)

:ccl似乎是指某种基于Mac的lisp版本,但我无法证实这一点,它可能只是其他一些代码包.

> * (load "utilities.lisp")
>
> debugger invoked on a
> SB-KERNEL:SIMPLE-PACKAGE-ERROR in
> thread #<THREAD "initial thread"
> RUNNING {100266AC51}>:   The name
> "CCL" does not designate any package.
> 
> Type HELP for debugger help, or
> (SB-EXT:QUIT) to exit from SBCL.
> 
> restarts (invokable by number or by
> possibly-abbreviated name):   0:
> [ABORT] Exit debugger, returning to
> top level.
> 
> (SB-INT:%FIND-PACKAGE-OR-LOSE "CCL")
Run Code Online (Sandbox Code Playgroud)

我尝试删除这个特定的部分(将行更改为

  (:use :common-lisp)
Run Code Online (Sandbox Code Playgroud)

但那只会造成更多错误.

> ; in: LAMBDA NIL ;     (+
> RSS-UTILITIES::*MENUBAR-BOTTOM* ;     
> (/ (- RSS-UTILITIES::MAX-V
> RSS-UTILITIES::V-SIZE) 2)) ;  ; caught
> WARNING: ;   undefined variable:
> *MENUBAR-BOTTOM*
> 
> ;     (-
> RSS-UTILITIES::*SCREEN-HEIGHT*
> RSS-UTILITIES::*MENUBAR-BOTTOM*) ;  ;
> caught WARNING: ;   undefined
> variable: *SCREEN-HEIGHT*
> 
> ;     (IF RSS-UTILITIES::CONTAINER ;  
> (RSS-UTILITIES::POINT-H ;         
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::CONTAINER)) ;        
> RSS-UTILITIES::*SCREEN-WIDTH*) ;  ;
> caught WARNING: ;   undefined
> variable: *SCREEN-WIDTH*
> 
> ;     (RSS-UTILITIES::POINT-H
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::VIEW)) ;  ; caught
> STYLE-WARNING: ;   undefined function:
> POINT-H
> 
> ;     (RSS-UTILITIES::POINT-V
> (RSS-UTILITIES::VIEW-SIZE
> RSS-UTILITIES::VIEW)) ;  ; caught
> STYLE-WARNING: ;   undefined function:
> POINT-V
Run Code Online (Sandbox Code Playgroud)

有人知道如何运行这段代码吗?我只是完全不了解所有的事情吗?

更新[2009年3月]:我安装了Clozure,但仍然无法运行代码.

在CCL命令提示符下,命令

(load "utilities.lisp")
Run Code Online (Sandbox Code Playgroud)

导致以下错误输出:

;Compiler warnings :
;   In CENTER-VIEW: Undeclared free variable *SCREEN-HEIGHT*
;   In CENTER-VIEW: Undeclared free variable *SCREEN-WIDTH*
;   In CENTER-VIEW: Undeclared free variable *MENUBAR-BOTTOM* (2 references)
> Error: Undefined function RANDOM-STATE called with arguments (64497 9) .
> While executing: CCL::READ-DISPATCH, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry applying RANDOM-STATE to (64497 9).
> Type :? for other options.
1 >
Run Code Online (Sandbox Code Playgroud)

不幸的是,我还在学习lisp,所以虽然我觉得某些东西没有完全定义,但我真的不明白如何阅读这些错误信息.

Rai*_*wig 3

该代码适用于 Macintosh Common Lisp (MCL)。它只会在那里运行。使用 Clozure CL (CCL) 不会有帮助。您必须注释图形代码。随机状态的内容对于 MCL 来说也有些特殊。您必须将其移植到可移植的 Common Lisp(make-random-state等)。文件名对于 Mac 来说也是特殊的。

Clozure CL 是 Macintosh Common Lisp 的一个分支,但已更改为 Unix 约定(路径名等),并且不包括 MCL 的特殊图形代码。