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

View file

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