CLIPS ( C Language Integrated Production System ) — это общедоступный программный инструмент для создания экспертных систем . Синтаксис и название были вдохновлены OPS5 Чарльза Форджи . Первые версии CLIPS разрабатывались с 1985 года в Космическом центре имени Джонсона в НАСА (как альтернатива существующей системе ART*Inference) до 1996 года, когда обязанности группы разработчиков перестали фокусироваться на технологии экспертных систем. Первоначальное название проекта было NASA's AI Language (NAIL).
По состоянию на 2005 год CLIPS был, вероятно, наиболее широко используемым инструментом экспертной системы. [1] CLIPS написан на языке C , расширения могут быть написаны на языке C, и CLIPS может вызываться из C. Его синтаксис напоминает синтаксис языка программирования Lisp . [2]
CLIPS включает в себя полный объектно-ориентированный язык программирования для написания экспертных систем. COOL объединяет парадигмы программирования процедурных , объектно -ориентированных и логических языков программирования ( автоматическое доказательство теорем ). [3]
CLIPS использует прямую цепочку . [4] [2] Как и другие языки экспертных систем, CLIPS имеет дело с правилами и фактами. Различные факты могут сделать правило применимым. Затем применимое правило запускается. [4] Факты и правила создаются путем их предварительного определения, как показано ниже:
( deftemplate car_problem ( имя слота ) ( статус слота )) ( deffacts trouble_shooting ( car_problem ( name ignition_key ) ( status on )) ( car_problem ( name engine ) ( status wont_start )) ( car_problem ( name headlights ) ( status work ))) ( defrule rule1 ( car_problem ( name ignition_key ) ( status on )) ( car_problem ( name engine ) ( status wont_start )) => ( assert ( car_problem ( name starter ) ( status faulty ))))
После настройки команда (reset) заставляет CLIPS считать факты и правила. В этом случае это приведет к утверждению трех фактов "trouble_shooting". Затем используется команда (run). Учитывая, что оба факта, перечисленные в rule1, были утверждены, условия для выполнения его действия были выполнены, поэтому дополнительный факт утверждается в результате выполнения.
CLIPS> ( сброс ) CLIPS > ( повестка дня ) 0 правило 1: f-1,f-2 Всего 1 активация. CLIPS> ( факты ) f-0 ( начальный-факт ) f-1 ( проблема_автомобиля ( имя ignition_key ) ( статус on )) f-2 ( проблема_автомобиля ( имя engine ) ( статус wont_start ) ) f- 3 ( проблема_автомобиля ( имя headlights ) ( статус work ) ) Всего 4 факта . CLIPS> ( run ) CLIPS> ( facts ) f-0 ( initial-fact ) f-1 ( car_problem ( name ignition_key ) ( status on )) f-2 ( car_problem ( name engine ) ( status wont_start )) f-3 ( car_problem ( name headlights ) ( status work )) f-4 ( car_problem ( name starter ) ( status faulty )) Всего 5 фактов. CLIPS> ( assert <fact>+ ) ( Assert ( object ( name "chair" ) ( Material wood ) ( height 3feet ) ( Color brown )) CLIPS ( retract < fact - index + ) ( retract 0 ) для цвета
В CLIPS заметность позволяет пользователю назначать приоритет (или вес) правилу.
Потомками языка CLIPS являются Jess (основанная на правилах часть CLIPS, переписанная на Java , которая впоследствии развивалась в другом направлении) [5] и FuzzyCLIPS (который добавляет в язык концепцию релевантности).