(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)))
)
ich denke, vielleicht die RHS nicht sequentiell laufen. Aber wie soll ich es machen? dann änderte ich meine Art und Weise wie folgt aus:Warum kann meine Regel nicht feuern? wie man es macht?
(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))
)
und finaly, es did't Feuer zu, so muss es etwas falsch sein, oder vielleicht gibt es eine andere Art und Weise.
danke, es funktioniert! –