Next: 2.5 推論エンジン
Up: 2 プロダクションシステム
Previous: 2.3 ルールの保存
作業記憶は大域変数 *working-memory* の値として保存されます.
以下のように,プロダクションシステムを走らせる ps 関数に対して作業記憶
を与えます.作業記憶の内容は行動部パターンにより生成されるものと同じ構
造をしています.
(defvar *working-memory* nil)
(defun ps (ruleset-name working-memory goal)
(setq *working-memory* working-memory)
(setf *rules* (get '*rules* ruleset-name))
(initialize-ruleset *rules*)
(production-system *rules* goal))
(defun initialize-ruleset (ruleset)
(mapc
#'(lambda (rule)
(setf (consequent-instantiation rule) nil)
(setf (antecedent-instantiations rule) nil)
(setf (previous-fired-instantiations rule) nil))
ruleset)
(mapc
#'(lambda (rule)
(setf (get rule 'cycle-last-fired) -1)
(setf (previous-fired-instantiations rule) nil))
ruleset))
(defmacro previous-fired-instantiations (rule)
`(get ,rule 'previous-fired-instantiations))
(defmacro consequent-instantiation (rule)
`(get ,rule 'consequent-instantiation))
(defmacro antecedent-instantiations (rule)
`(get ,rule 'antecedent-instantiations))
(defun cycle-last-fired (rule)
(get rule 'cycle-last-fired))
*working-memory* の更新は推論を行なった際にルールがマッチし,
行動部のパターンを実行したときになされます.
行動部の実行方法としては,make, remove, modifyといった
制御手続きがあればその手続きを実行する機構を組み込むことも
可能です.
そのような手続きを設けず単に行動部パターンを追加するという場合には,以
下のようにルールの条件部でマッチした各変数の値を用いて行動部パターン
(instantiation)を求めてそれをappendで追加することになります.
Next: 2.5 推論エンジン
Up: 2 プロダクションシステム
Previous: 2.3 ルールの保存
generated through LaTeX2HTML. M.Inaba 平成18年5月21日