CLIPS — общедоступный программный инструмент для создания экспертных систем . Название представляет собой аббревиатуру от «Интегрированная производственная система на языке C». Синтаксис и название были вдохновлены OPS5 Чарльза Форги . Первые версии CLIPS разрабатывались начиная с 1985 года в Космическом центре НАСА — Джонсон (в качестве альтернативы существующей системе ART*Inference) до середины 1990-х годов, когда обязанности группы разработчиков перестали сосредотачиваться на технологии экспертных систем. Первоначальное название проекта было «Язык искусственного интеллекта НАСА» (NAIL).
CLIPS был, вероятно, наиболее широко используемым инструментом экспертной системы по состоянию на 2005 год. [1] Сам CLIPS написан на C , расширения могут быть написаны на C, а CLIPS можно вызывать из C. Его синтаксис напоминает синтаксис языка программирования Lisp . [2]
CLIPS включает в себя полноценный объектно-ориентированный язык для написания экспертных систем. COOL сочетает в себе парадигмы программирования процедурных, объектно-ориентированных и логических (доказывающих теорем) языков. [3]
CLIPS использует прямую цепочку . [4] [2] Как и другие языки экспертных систем, CLIPS имеет дело с правилами и фактами. Различные факты могут сделать правило применимым. Затем применяется применимое правило. [4] Факты и правила создаются путем их предварительного определения, как показано ниже:
( deftemplate car_problem ( имя слота ) ( статус слота )) ( дефактирует устранение неполадок ( car_problem ( имя зажигания_ключа ) ( статус включен )) ( car_problem ( название двигателя ) ( статус не запускается )) ( car_problem ( название фар ) ( статус работает ))) ( отменить правило 1 ( car_problem ( имя зажигания_ключа ) ( статус включен )) ( car_problem ( имя двигателя ) ( статус не запускается )) => ( утверждать ( car_problem ( имя стартера ) ( статус неисправен ))))
После настройки команда (сброс) заставляет CLIPS считывать факты и правила. В данном случае это приведет к утверждению трех фактов «устранения неполадок». Затем используется команда (выполнить). Учитывая, что оба факта, перечисленных в правиле 1, были подтверждены, условия для выполнения этого действия были выполнены, поэтому дополнительный факт утверждается в результате прогона.
CLIPS> ( сброс ) CLIPS > ( повестка дня ) 0 правило 1 : f- 1 ,f-2 Всего 1 активация. КЛИПЫ> ( факты ) f-0 ( начальный-факт ) f-1 ( car_problem ( имя зажигания_ключа ) ( статус включен )) f-2 ( car_problem ( название двигателя ) ( статус не запускается )) f-3 ( car_problem ( название фар ) ( статус работы ) ) Всего 4 факта . CLIPS> ( запустить ) CLIPS> ( факты ) f-0 ( исходный-факт ) f-1 ( car_problem ( имя зажигания_ключа ) ( статус включен )) f-2 ( car_problem ( название двигателя ) ( статус не запускается )) f-3 ( car_problem ( название фары ) ( статус работа )) f- 4 ( car_problem ( название стартера ) ( статус неисправен ) ) Всего 5 фактов . CLIPS> ( Assert < факт >+ ) ( Assert ( объект ( имя «стул» ) ( Материал дерево ) ( высота 3 фута ) ( Цвет коричневый )) CLIPS ( отозвать <индекс факта + ) ( отозвать 0 ) для цвета
В CLIPS значимость позволяет пользователю назначать приоритет (или вес) правилу.
Потомками языка CLIPS являются Jess (основанная на правилах часть CLIPS, переписанная на Java , позже она развилась в другом направлении) [5] и FuzzyCLIPS (который добавляет в язык концепцию релевантности).