Интеллектуальные робототехнические системы



     Смотрите здесь спринклерный ороситель. |     

Основы программирования в системе CLIPS. - часть 2


Конструкторы не возвращают никаких значений, в отличии от функций, например:

(deftemplate person (slot name) (slot age) (multislot friends)) (deffacts people (person (name Joe) (age 20)) (person (name Bob) (age 20)) (person (name Joe) (age 34)) (person (name Sue) (age 34)) (person (name Sue) (age 20)))

Пример функции:

(deffunction factorial (?a) (if (or (not (integerp ? a)) (< ? a0)) then (printout t "Factorial Error!" crlf) else (if (= ? a0) then 1 else (*? a (factorial ($-$ ? a1))))))

Правила в CLIPS состоят из предпосылок и следствия. Предпосылки также называют ЕСЛИ-частью правила, левой частью правила или LHS правила (left-hand side of rule). Следствие называют ТО-частью правила, правой частью правила или RHS правила (right-hand side of rule).

Пример правила представлен ниже:

(deftemplate data (slot x) (slot y)) (defrule twice (data (x ? x) (y =(*2 ? x)))

) (assert (data (x2) (y4)); f-0 (data (x3) (y9))); f-1

Здесь самая распространенная в CLIPS функция assert добавляет новые факты в список правил. В противоположность assert функция retract удаляет факты из списка фактов, например:

(defrule vis11 ?doors < — (fit ? wdfit) (test (eq ? wdfit no))

(assert (EVIDENCE OF MAJOR ACCIDENT)) (retract ? doors))

В этом правиле проверяется наличие факта doors и в случае его отсутствия факт doors удаляется из списка фактов задачи.

Функция modify является также весьма распространенной. Она позволяет в определенном факте поменять значение слота, например,

(deftemplate age (slot value)) (assert (age (value young))) (modify 0 (value old))

Следующий пример описывает представление данных в виде фактов, объектов и глобальных переменных. Примеры фактов:

(voltage is 220 volt) (meeting (subject "AI") (chief "Kuzin") (Room "3240"))

В первой строке приведен упорядоченный факт, во второй - неупорядоченный, в котором порядок слотов не важен.

CLIPS поддерживает следующие типы данных: integer, float, string, symbol, external-address, fact-address, instance-name, instance-address.




Содержание  Назад  Вперед