0
我是CLIPS的新手,我无法弄清楚为什么我的代码无法运行。其实我没有犯错误,但是当我按下跑步时,事实不会改变,目标也不会发现。该项目是我们有2瓶。 A容量为3,B为容量2.目标是A有0,B有1.我们可以用这些规则来做到这一点:fillA,fillB,emptyA,emptyB,moveAB,moveBA。 以下是我的代码。有人可以帮忙吗?谢谢!CLIPS代码没有结果
(deffacts problem
(name A cap 3 water 0)
(name B cap 2 water 0)
)
(defrule goal
(declare (salience 100))
(name A water 0)
(name B water 1)
=>
(printout t "FOUND" crlf)
(halt)
)
(defrule start
(initial-fact)
=>
(set-strategy random)
)
(defrule emptyA
?x<-(name A water ?w)
=>
(retract ?x)
(assert (name A water 0))
)
(defrule emptyB
?x<-(name B water ?w)
=>
(retract ?x)
(assert (name B water 0))
)
(defrule fillA
?x<-(name A water ?w)
=>
(retract ?x)
(assert (name A water 3))
)
(defrule fillB
?x<-(name B water ?w)
=>
(retract ?x)
(assert (name B water 2))
)
(defrule moveAB
?x<-(name A water ?w)
?y<-(name B water ?water)
(test (not (< ?w 0)))
(test (not (> ?water 2)))
=>
(retract ?x ?y)
(assert (name B water ?w))
(assert (name A water ?water))
)
(defrule moveBA
?x<-(name A water ?w)
?y<-(name B water ?water)
(test (not (> ?w 3)))
(test (not (< ?water 0)))
=>
(retract ?x ?y)
(assert (name A water ?water))
(assert (name B water ?w))
)