2012-05-02 28 views
0

比方说,我有这样一个规则:CLIPS多和

(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))) 

如何添加一个新的“和”? 谢谢。

回答

0

这取决于您尝试实施的逻辑。现有你是多余的,无论如何,但如果你想要第二个,你只是最后结束后添加:

(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))))) 

(or (and 
     (test (= ?x ?b1)) 
     (test (= ?y (- ?b2 1)))) 

    (and 
     (test (= ?x ?b2)) 
     (test (= ?y (+ ?b1 1))))) 

而不是使用和/或条件的元件,则可以在单个测试条件元素中使用和/或布尔函数