私はかなり長い間、これについて壁に頭をぶつけてきましたが、これから説明しようとしていることを達成する方法についての参照は見つかりませんでした. 次のテンプレートに対応するセルのグリッドがあるとします。
(deftemplate cell
(slot x)
(slot y)
(slot type (allowed-values urban rural lake hill gate border))
)
これで、グリッド内のセルのタイプが(assert (cell (x <x_coord>) (y <y_coord>) (type <some_type>))
ステートメントでランダムに生成され、中央のセルを中心に 3x3 の範囲内のすべてのセルを検査し、検査したセルのタイプに応じてアクションを実行する次のルールを定義したいと考えています。
(defrule inspect
(cell (x ?xval) (y ?yval))
; ...
=>
(loop-for-count (?i -1 1) do
(loop-for-count (?j -1 1) do
; get "type" of cell @ coordinates (- ?x ?i ), (+ ?y ?j)
; do stuff according to type (i.e. assert other facts)
)
)
)
CLIPS ルールの RHS で特定の基準 (この場合はセルの座標) を指定して、ファクトを調べるにはどうすればよいでしょうか? LHS でパターン マッチングを実行する方法は知っていますが、RHS でも同様に実行できるかどうか知りたいと思っていました。前もって感謝します。