Compare commits

..

No commits in common. "8bf7e8ae0c24f8f3b39f098e33dcb6af101136f4" and "cd62c8eed481af563ea5b6988418b97ff47b42c2" have entirely different histories.

2 changed files with 15 additions and 25 deletions

View file

@ -8,7 +8,7 @@
(:shape :scopes/shape)
(:util :scopes/util)
(:alx :alexandria))
(:export #:environment #:*environment* #:add-action #:add-sensors
(:export #:environment #:*environment* #:actions #:procs #:sensors
#:send #:send-message
#:neuron #:synapse #:std-proc
#:make-neuron #:update-neuron #:create-sensor
@ -19,23 +19,13 @@
;;;; environment: common information, with list of globally available actions
(defclass environment ()
((actions :reader actions :initarg :actions
:initform (make-hash-table :test #'equal))
((actions :reader actions :initarg :actions :initform (make-hash-table))
(sensors :reader sensors :initarg :sensors
:initform (make-hash-table :test #'equal))
(procs :reader procs :initarg :procs
:initform (make-hash-table :test #'equal))))
;(defvar *environment* (make-instance 'environment))
(defvar *environment* nil)
(defun add-action (key fn &optional (env *environment*))
;(util:lgi key fn env)
(setf (gethash key (actions env)) fn))
(defun add-sensors (key sns &optional (env *environment*))
;(util:lgi key sns env)
(setf (gethash key (sensors env)) sns))
(defvar *environment* (make-instance 'environment))
;;;; neurons (= behavior factories) and synapses (connection factories)
@ -57,7 +47,7 @@
(actor:become (neuron proc state syns env)))
(defun std-proc (msg state syns env)
;(util:lgi msg state syns env)
;(util:lgi msg state)
(destructuring-bind (nmsg nst nsyns)
(handle-action msg state syns env :default #'remember)
(forward nmsg nsyns)
@ -83,7 +73,7 @@
(defun find-sensors (msg)
(let* ((key (cddr (shape:head msg)))
(sns (gethash key (sensors *environment*))))
;(util:lgi key sns *environment*)
;(util:lgi key sns)
sns))
;;;; effector procs for pseudo-neurons embedded in environment
@ -113,10 +103,9 @@
(defun create-sensor (msg state syns env)
(let* ((key (shape:data msg))
(sensor (make-neuron actor:*self* :state key :env env))
(sensor (make-neuron actor:*self* :state key))
(nmsg (message:create (list :csys :created (car key) (cadr key)))))
;(setf (gethash key (sensors env)) (list sensor))
(add-sensors key (list sensor) env)
(setf (gethash key (sensors env)) (list sensor))
(list nmsg state syns)))
(defun add (msg state syns env)

View file

@ -54,17 +54,18 @@
;;;; test: initialization
(defun setup-test-init ()
(setup-config)
(core:setup-services)
(setf (tc:receiver t:*test-suite*) (core:find-service :test-receiver))
(csys:add-action :sensor #'csys:create-sensor)
(defun init ()
(setf (gethash :sensor (csys:actions csys:*environment*)) #'csys:create-sensor)
(let ((zero (csys:make-neuron nil :proc #'eff-proc)))
(csys:add-sensors '(:init :zero) (list zero))))
(setf (gethash '(:init :zero) (csys:sensors csys:*environment*)) (list zero))))
(deftest test-init ()
(let ((csys:*environment* (make-instance 'test-env :test-suite t:*test-suite*)))
(setup-test-init)
;(setup-xxx)
(setup-config)
(core:setup-services)
(setf (tc:receiver t:*test-suite*) (core:find-service :test-receiver))
(init) ; end of setup
(csys:send-message '(:csys :sensor :init :zero) '(:std :s1))
(csys:send-message '(:csys :sensor :init :zero) '(:std :s2))
(sleep 0.1)