Пример 13.3. Еще одно ошибочное применение ограничений

(deftemplate foo (multislot x (cardinality?VARIABLE 3))

(deftemplate bar (multislot у (cardinality?VARIABLE 2))

(deftemplate woz (multislot z (cardinality 7?VARIABLE))

(defrule error

(foo (x $?x))

(bar (y $?y))

(woz (z $?x $?y)) =>)

Результат выполнения этих команд приведен на рис. 13.3.

В данном случае ошибка возникает по следующим причинам. Составная переменная?х, используемая в первом образце правила, может содержать максимум 3 поля (согласно заданным ограничениям мощности). Составная переменная?у из второго образца правила может содержать максимум 2 поля. Объединение обеих переменных дает составную переменную, содержащую максимум 5 полей. Поскольку слот z в третьем образце правила error имеет минимальную мощность, равную 7, переменные?х и?у не могут удовлетворять ограничениям мощности для слота z, что вызывает соот­ветствующую ошибку.

Рис. 13.3. Еще одно ошибочное применение ограничений

Введите в CLIPS следующие команды:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: