2015-07-07 7 views
0

Вот мой кодКак правильно использовать состояние CLIPS?

(deffacts startup       

       (bird canary) 
       (colour-canary yellow) 

       (bird ostrich) 
       (can-not-fly ostrich) 

) 
(defrule r-bird-test 
    (bird ?var) 
    (not (bird ostrich)) 
    => 
    (printout t ?var " ****" crlf) 
) 

Теперь, когда я (сброс) и (запуск) не печатает "канарейку ****". Неужели я неправильно использую условие not? Может ли кто-нибудь указать, чего я здесь не хватает? Благодарю.

ответ

2

Как указано, условный элемент предотвращает выполнение правила, если присутствует факт (птичий страус). Поскольку этот факт присутствует после выполнения (сброса), это правило не выполняется. ? Если вы хотите, чтобы правило, чтобы выполнить для каждой птицы то, где вар не страус, вам нужно написать правило так:

CLIPS> 
(deffacts startup 
    (bird canary) 
    (colour-canary yellow) 
    (bird ostrich) 
    (can-not-fly ostrich)) 
CLIPS> 
(defrule r-bird-test 
    (bird ?var&~ostrich) 
    => 
    (printout t ?var " ****" crlf)) 
CLIPS> (reset) 
CLIPS> (run) 
canary **** 
CLIPS> 
+0

Я хотел бы до-голосования это дважды ..... спасибо много –

 Смежные вопросы

  • Нет связанных вопросов^_^