next up previous
Next: 2.8 競合解消(conflict resolution)の戦略 Up: 2 プロダクションシステム Previous: 2.6 条件部の照合

2.7 競合解消(conflict resolution)

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

next up previous
Next: 2.8 競合解消(conflict resolution)の戦略 Up: 2 プロダクションシステム Previous: 2.6 条件部の照合
generated through LaTeX2HTML. M.Inaba 平成18年5月21日