Я был бы очень признателен за помощь в моем проекте CLIPS.CLIPS incrementing variable без бесконечного цикла
Хорошо, поэтому я пытаюсь создать советника по породам собак. Deftemplate выглядит следующим образом:
(deftemplate breed
(multislot name)
(slot size)
(slot type-owner)
(slot Living_Space)
(slot children)
(slot grooming)
(slot exercise)
(slot noisiness)
(slot trainability)
(slot aggression)
(slot playfulness)
(slot excitability)
(slot score))
А deffacts выглядит следующим образом:
(deffacts dog-breeds
(breed (name Great_Dane)
(size 5)
(type-owner No)
(Living_Space 5)
(children 5)
(grooming 1)
(exercise 4)
(noisiness 2)
(trainability 1)
(aggression 2)
(playfulness 2)
(excitability 3)
(score 0))
Так я пишу два типа defrules: один втягивается факты, которые не отвечают (задаваемым пользователем) критерии и другой тип увеличивает значение «оценка» каждый раз, когда этот факт соответствует критериям. Только несколько правил втягиваются, поэтому для меня важно, чтобы правила приращения работали. Пользовательский ввод и критерии для каждого слота могут быть от 1 до 5.
Мой вопрос: как мне изменить следующий код, не входя в бесконечный цикл? В конце я хочу найти факт с максимальным счетом и отобразить его.
(defrule children
(input 1)
?children <- (breed (name ?)(size ?)(type-owner ?)(Living_Space ?) (children 1|2)(grooming ?)(exercise ?)(noisiness ?)
(trainability ?)(aggression ?)(playfulness ?)(excitability ?)(score ?score)
=>
(bind ?sc (+ ?score 1))
(modify ?children (score ?sc))
Спасибо, работает как шарм! –