我如何管理萨顿和巴顿';s";强化学习“;Lisp代码?

我如何管理萨顿和巴顿';s";强化学习“;Lisp代码?,lisp,artificial-intelligence,common-lisp,reinforcement-learning,mcl,Lisp,Artificial Intelligence,Common Lisp,Reinforcement Learning,Mcl,我最近读了很多关于这方面的书,我发现自己是一位优秀的导游。作者提供了许多有用的例子 在我开始这个问题之前,我应该指出我对lisp的实际知识很少。我知道基本概念和它的工作原理,但我从来没有真正以有意义的方式使用过lisp,所以我可能只是在做一些令人难以置信的事情(n00b-ish.) 另外,作者在他的页面上声明他不会回答关于代码的问题,所以我没有联系他,并且认为堆栈溢出是一个更好的选择 我一直试图在linux机器上运行代码,同时使用GNU的CLISP和SBCL,但未能运行它。我总是用任何一个解释器

我最近读了很多关于这方面的书,我发现自己是一位优秀的导游。作者提供了许多有用的例子

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

另外,作者在他的页面上声明他不会回答关于代码的问题,所以我没有联系他,并且认为堆栈溢出是一个更好的选择

我一直试图在linux机器上运行代码,同时使用GNU的CLISP和SBCL,但未能运行它。我总是用任何一个解释器得到一个完整的错误列表。特别是,大多数代码似乎使用了包含行的文件“utilities.lisp”中包含的许多实用程序

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

(in-package :ut)
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")
但这只会造成更多的错误

> ; 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
有人知道我如何运行这个代码吗?我是不是完全不懂lisp

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

在CCL命令提示符下,命令

(load "utilities.lisp")
导致以下错误输出:

;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 >

不幸的是,我仍在学习lisp,所以虽然我感觉有些东西没有完全定义,但我真的不知道如何读取这些错误消息。

我猜代码依赖于CCL,所以请使用而不是CLISP或SBCL。您可以从这里下载:

该代码适用于Macintosh Common Lisp(MCL)。它只会在那里运行。使用Clozure CL(CCL)不会有帮助。您必须对图形代码进行注释。随机状态的东西对MCL也有点特殊。您必须将其移植到portable Common Lisp(,等等)。此外,文件名也是Mac专用的


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

在linux x86上使用最新版本的CCL,此文件另存为foo.Lisp:

#+ccl (defun random-state (x y)
        (ccl::initialize-random-state x y))

(load "utilities.lisp")
(use-package 'rss-utilities)


(load "testbed.lisp")

(setup)
(init)

(print (runs 10 10 .1))
运行

~/svn/ccl/lx86cl -l foo.lisp
打印一组警告消息和所需答案:

(-0.77201915 0.59691894 0.78171235 0.41514033 0.6744591 0.26383805 0.8981678 1.1274683 0.50265205 0.4081622)
为了找出所需的#'随机状态defun,我猜测“#.(random-state 64497 9)”是来自MCL的序列化随机状态对象。为了了解CCL是如何处理的,我检查了CCL中的随机状态输出:

$ ~/svn/ccl/lx86cl 
Welcome to Clozure Common Lisp Version 1.3-r11936  (LinuxX8632)!
? (make-random-state)
#.(CCL::INITIALIZE-RANDOM-STATE 64497 9)

如果您从未以有意义的方式使用过lisp,则有一个“强化学习:简介”的示例。此外,安装Clozure后,您必须更新
实用程序中对函数
随机状态的引用。lisp
随机-mrg31k3p状态

更具体地说,将:
#(RANDOM-STATE 64497 9)
替换为
#(ccl::RANDOM-mrg31k3p-STATE)

random-mrg31k3p-state
似乎在编写代码后的某个时间取代了
random-state
,请参见

$ ~/svn/ccl/lx86cl 
Welcome to Clozure Common Lisp Version 1.3-r11936  (LinuxX8632)!
? (make-random-state)
#.(CCL::INITIALIZE-RANDOM-STATE 64497 9)