プロダクションシステム
前向き推論の例 ― 積み木の世界
ワーキングメモリ
初期状態:
目標状態:
["clear", "c"] ["on", "c", "a"] ["on-table", "a"] ["clear", "b"] ["on-table", "b"]
["clear", "a"] ["on", "a", "b"] ["on", "b", "c"] ["on-table", "c"]
現状態:
ここでルールを選びます
ルールベース
{ // sXY --- X を Y に積む sab: { condition: [["on-table", "a"], ["clear", "a"], ["clear", "b"]], action: [["clear", "a"], ["on", "a", "b"]]}, sac: { condition: [["on-table", "a"], ["clear", "a"], ["clear", "c"]], action: [["clear", "a"], ["on", "a", "c"]]}, sbc: { condition: [["on-table", "b"], ["clear", "b"], ["clear", "c"]], action: [["clear", "b"], ["on", "b", "c"]]}, sba: { condition: [["on-table", "b"], ["clear", "b"], ["clear", "a"]], action: [["clear", "b"], ["on", "b", "a"]]}, sca: { condition: [["on-table", "c"], ["clear", "c"], ["clear", "a"]], action: [["clear", "c"], ["on", "c", "a"]]}, scb: { condition: [["on-table", "c"], ["clear", "c"], ["clear", "b"]], action: [["clear", "c"], ["on", "c", "b"]]}, // dXY --- X を Y から下ろす dab: { condition: [["clear", "a"], ["on", "a", "b"]], action: [["on-table", "a"], ["clear", "a"], ["clear", "b"]]}, dac: { condition: [["clear", "a"], ["on", "a", "c"]], action: [["on-table", "a"], ["clear", "a"], ["clear", "c"]]}, dbc: { condition: [["clear", "b"], ["on", "b", "c"]], action: [["on-table", "b"], ["clear", "b"], ["clear", "c"]]}, dba: { condition: [["clear", "b"], ["on", "b", "a"]], action: [["on-table", "b"], ["clear", "b"], ["clear", "a"]]}, dca: { condition: [["clear", "c"], ["on", "c", "a"]], action: [["on-table", "c"], ["clear", "c"], ["clear", "a"]]}, dcb: { condition: [["clear", "c"], ["on", "c", "b"]], action: [["on-table", "c"], ["clear", "c"], ["clear", "b"]]} }