2012-05-02 45 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))))) 

而不是使用和/或條件的元件,則可以在單個測試條件元素中使用和/或布爾函數