-1
(defrule myrule
(and
(s (time 1803))
(f1 (start ?s1))
(f2 (start ?s2))
(f3 (start ?s3))
)
=>
if(< ?s1 7)
then
(bind ?s1 (+ ?s1 24))
if(< ?s2 7)
then
(bind ?s2 (+ ?s2 24))
if(< ?s3 7)
then
(bind ?s3 (+ ?s3 24))
if(or (> ?s1 ?s2) (> ?s2 ?s3)(> ?s1 ?s3))
then
(assert 0015)))
)
我想,也許RHS不會順序運行。但我該怎麼做呢? 後來我改變了我的方法是這樣的:爲什麼我的規則不能開火?如何做到這一點?
(deffunction time-24 (?w1)
(if(< ?w1 7)
then
(bind ?w1 (+ ?w1 24))
)
)
(defrule myrule
(and
(s (time 1803))
(f1 (start ?s1))
(f2 (start ?s2))
(f3 (start ?s3))
(time-24 ?s1)
(time-24 ?s2)
(time-24 ?s3)
)
=>
(if(or (> ?s1 ?s2) (> ?s2 ?s3)(> ?s1 ?s3))
then
(assert 0015))
)
和finaly,但我以前不火了,所以一定有什麼不對勁,也許還有另一種途徑。
謝謝,它的工作原理! –