让我们说我有这样的规则:
(defrule get_next_N_poz
?id <- (get_next_poz $?)
(world (limit $?) (ball ?b1 ?b2) (men $? ?x ?y - $?) (id ?))
(and
(test (= ?x ?b1))
(test (= ?y (- ?b2 1))))
=>
(printout t "north ready position:" ?x ?y)
(modify ?id (get_next_poz 1)))
如何添加新的&#34;和&#34;? 谢谢。
答案 0 :(得分:0)
这取决于您尝试实施的逻辑。你现有的和无论如何都是多余的,但是如果你想要第二个,你只需要在最后一个之后添加它:
(and
(test (= ?x ?b1))
(test (= ?y (- ?b2 1))))
(and
(test (= ?x ?b2))
(test (= ?y (+ ?b1 1))))
如果你想要这些条件中的一个或另一个,你可以这样做:
(or (and
(test (= ?x ?b1))
(test (= ?y (- ?b2 1))))
(and
(test (= ?x ?b2))
(test (= ?y (+ ?b1 1)))))
您可以在单个测试条件元素中使用和/或布尔函数,而不是使用和/或条件元素:
(test (or (and (= ?x ?b1)
(= ?y (- ?b2 1)))
(and (= ?x ?b2)
(= ?y (+ ?b1 1)))))