문제

나는 많이 읽고있다 강화 학습 최근에, 그리고 나는 발견했다 "강화 학습 : 소개" 훌륭한 가이드가되기 위해. 저자는 도움이되는 지방입니다 소스 코드 많은 일을 위해.

질문을 시작하기 전에 LISP에 대한 실질적인 지식이 최소값이라는 것을 지적해야합니다. 나는 기본 개념과 그것이 어떻게 작동하는지 알고 있지만, LISP를 의미있는 방식으로 사용한 적이 없으므로 엄청나게 N00B-ish를하고있을 것입니다. :)

또한 저자는 자신의 페이지에 자신의 코드에 대한 질문에 답하지 않을 것이라고 말하면서 나는 그에게 연락하지 않았고 스택 오버플로가 훨씬 더 나은 선택이라고 생각했습니다.

GNU의 CLISP와 SBCL을 모두 사용하여 Linux 시스템에서 코드를 실행하려고했지만 실행할 수 없었습니다. 어느 통역사를 사용하여 전체 오류 목록을 계속받습니다. 특히, 대부분의 코드는 라인이 포함 된 파일 '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")

나는이 특정 조각을 제거하려고 시도했다 (라인을 바꾸는 것은

  (:use :common-lisp)

그러나 그것은 단지 더 많은 오류를 일으켰습니다.

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

이 코드를 어떻게 실행할 수 있는지 아는 사람이 있습니까? 나는 단지 모든 것에 대해 무지합니까?

업데이트 [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에 대해 배우고 있기 때문에 무언가가 완전히 정의되지 않았다는 느낌이 들지만,이 오류 메시지를 읽는 방법을 실제로 이해하지 못합니다.

도움이 되었습니까?

해결책

이 코드는 Macintosh Common LISP (MCL) 용입니다. 거기에서만 달릴 것입니다. Clozure Cl (CCL)을 사용하면 도움이되지 않습니다. 그래픽 코드에 댓글을 달아야합니다. 임의의 상태는 또한 MCL에 약간 특별합니다. 휴대용 공통 LISP로 포트해야합니다 (랜덤-스테이트를 만들었습니다, 등.). 또한 파일 이름은 Mac에 특별합니다.

Clozure CL은 Macintosh Common LISP의 포크이지만 UNIX 규칙 (PathNames, ...)으로 변경되었으며 MCL의 특수 그래픽 코드는 포함되지 않습니다.

다른 팁

내 생각에 코드는 CCL 의존적이므로 사용하십시오. CCL CLISP 또는 SBCL 대신. 여기에서 다운로드 할 수 있습니다. http://trac.clozure.com/openmcl

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)

필수 #'random-state 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를 의미있는 방식으로 사용한 적이 없다면 MATLAB 코드 "강화 학습 : 소개".

에 추가 Rainer Joswig의 대답: Clozure를 설치하면 함수에 대한 참조를 업데이트해야합니다. RANDOM-STATE 안에 utilities.lisp 에게 random-mrg31k3p-state.

보다 구체적으로 교체 : #.(RANDOM-STATE 64497 9) ~와 함께 #.(ccl::random-mrg31k3p-state)

random-mrg31k3p-state 교체 한 것 같습니다 random-state 코드가 작성된 후 언젠가는 참조하십시오 l1-numbers.lisp? Rev = 13327

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top