Next: 2.8 競合解消(conflict resolution)の戦略
Up: 2 プロダクションシステム
Previous: 2.6 条件部の照合
conflict-resolutionでは,いくつかの競合解消戦略を順に試し,最後にはひ
とつのルールのみを返す.
以下のように競合解消戦略を個別の関数にし,各関数の名前のリストを
*conflict-resolution-strategies*にいれておき,その要素を順に
funcallで調べている.
(defvar *conflict-resolution-strategies*
'(fireable-rules
find-least-recently-fired-rules
simplest-instantiations
find-first))
(defun conflict-resolution (matching-rules)
(dolist
(crs *conflict-resolution-strategies*
matching-rules)
(if *verbose*
(setf (get crs 'before-apply)
(copy-tree matching-rules)))
(setf matching-rules (funcall crs matching-rules))
(if *verbose*
(setf (get crs 'after-apply)
(copy-tree matching-rules)))))
generated through LaTeX2HTML. M.Inaba 平成18年5月7日