Правила CLIPS запускаются более одного раза - PullRequest
1 голос
/ 19 января 2020

Привет, я пытаюсь создать экспертную систему в клипах, но когда растение должно срабатывать только один раз, когда правило срабатывает столько раз, сколько характеристик совпадают с параметрами, указанными в правиле, есть ли способ вызвать это правило? только один раз для каждого растения в фактах?

Я пытался с помощью теста test () (помещая все условия или () включенного в тест), но это не сработало, это доставило бы мне проблемы с заводом шаблон

Пример правила


(defrule ruleexp
   (or
   (Plant (grownt normal))
   (Plant (leaf purple))
   (Plant (roots burned))
   (Plant (fruit dry)))
   =>
   (printout t "this should print only once" crlf))

1 Ответ

1 голос
/ 19 января 2020

Вы можете использовать условный элемент существующие , чтобы создать только одну активацию:

         CLIPS (6.31 6/12/19)
CLIPS> 
(deftemplate Plant
   (slot growth)
   (slot leaf)
   (slot roots)
   (slot fruit))
CLIPS>    
(defrule ruleexp
   (exists 
      (or (Plant (growth normal))
          (Plant (leaf purple))
          (Plant (roots burned))
          (Plant (fruit dry))))
   =>
   (printout t "this should print only once" crlf))
CLIPS>    
(assert (Plant (growth normal) 
               (leaf blue)
               (roots burned) 
               (fruit wet)))
<Fact-1>
CLIPS> (run)
this should print only once
CLIPS> 
...