Я довольно новичок в программировании экспертов и встал с проблемой. Я хочу узнать, существует ли факт, а затем выполнить некоторую операцию, основанную на этих фактах в RHS.CLIP: как узнать, существует ли факт
Для примера: - У меня есть 4 факта.
(deffacts test (A 1) (B 2) (C 3) (D 4))
следующее Правило E не существует. поэтому он никогда не переходит в RHS. и доза не нарушает правила.
(defrule rul1
(declare (salience 10))
(A ?var1)
(B ?var2)
(C ?var3)
(E ?var4)
=>
(if
(
or (or (or (= ?var1 1) (= ?var2 1)) (= ?var3 1)) (= ?var4 4)
)
then
(printout t "Rule matched" crlf))
)
)
Мое требование, если факт не существует просто игнорировать это или назначить фиктивное значение, так что он может стрелять Rule.
Как я могу это достичь?
Ваш вопрос немного расплывчато. Всегда ли вы хотите, чтобы правило срабатывало или только если по крайней мере 3 из 4 фактов совпадают? – bogatron
Это должно быть CLIPS (с правом «s»?) – stackoverflowwww