CLIPS

13-09-2023

CLIPS, (от англ. C Language Integrated Production System) — программная среда для разработки экспертных систем. Синтаксис и название предложены Чарльзом Форги (Charles Forgy) в OPS (Official Production System). Первые версии CLIPS разрабатывались с 1984 года в Космическом центре Джонсона (Johnson Space Center), NASA (как альтернатива существовавшей тогда системе ART*Inference), пока в начале 1990-х не было приостановлено финансирование, и NASA вынудили купить коммерческие продукты.

CLIPS является продукционной системой. Основная идея состоит в представлении знаний в виде такой формы:

 Правило1:
   ЕСЛИ 
     (выполняются условия1)
   ТОГДА
     (выполнить действия1)
 Правило2:
   ЕСЛИ 
     (выполняются условия2)
   ТОГДА
     (выполнить действия2)
 ...

Такое представление близко к человеческому мышлению и отличается от программ, написанных на традиционных алгоритмических языках, где действия упорядочены и выполняются строго придерживаясь алгоритма.

CLIPS является одной из наиболее широко используемых инструментальных сред для разработки экспертных систем благодаря своей скорости, эффективности и бесплатности. Являясь общественным достоянием, она до сих пор обновляется и поддерживается своим изначальным автором, Гэри Райли (Gary Riley).

CLIPS включает полноценный объектно-ориентированный язык COOL для написания экспертных систем. Хотя она написана на языке Си, её интерфейс намного ближе к языку программирования LISP. Расширения можно создавать на языке Си, кроме того, можно интегрировать CLIPS в программы на языке Си[1].

CLIPS разработан для применения в качестве языка прямого логического вывода.

Как и другие экспертные системы, CLIPS имеет дело с правилами и фактами.

Содержание

Факты

Информация, на основании которой экспертная система делает логический вывод называется фактами. В CLIPS есть 2 вида фактов: упорядоченные и шаблонные. Шаблонные факты имеют шаблон, задаваемый конструкцией deftemplate. Упорядоченные не имеют явной конструкции deftemplate, однако она подразумевается. Шаблонный факт напоминает структуру в языке C или запись в языке Pascal, поля называются слотами и объявляются конструкцией slot. Например, следующий шаблон объявляет шаблон с именем cars и полями: model, color и number.

 (deftemplate cars
   (slot model)
   (slot color)
   (slot number)
 )

Факты размещаются в рабочей памяти. Новые факты помещаются в рабочую память командой assert. Например, следующая команда

 (assert (cars))

добавит в рабочую память упорядоченный факт cars.


Следующая команда поместит шаблонный факт с тремя атрибутами.

  (assert 
    (cars 
      (model "Audi") 
      (color Black) 
      (number "WY 2576")
    )
  )

CLIPS не допускает помещения в рабочую память фактов с одинаковыми значениями слотов, хотя, при необходимости, это можно разрешить соответствующей настройкой.

Правила

Знания предметной области представляются в CLIPS в виде правил, которые имеют следующую структуру:

 (условия)           {синонимы: антецеденты в логике, 
                      левая часть - LHS в терминах CLIPS}
 =>
 (действия)          {синонимы: консеквенты в логике,
                      правая часть - RHS в терминах CLIPS}

Левая часть правила - это условие его срабатывания, а правая часть - это те действия, которые должны выполниться в случае выполнения условий. Знак => специальный символ, разделяющий LHS и RHS.

Правила объявляются с помощью команды defrule. Пример правила:

 (defrule search-black-audi
   (cars (model "Audi") (color Black))
   =>
   (printout t "Есть черный Audi!" crlf)
  )

Данное правило активируется тогда, когда в рабочей памяти появится факт с атрибутами (model "Audi") и (color Black).

Активация правила не означает его выполнение. Активация правила - это помещение правила в рабочий список правил или agenda в CLIPS.

Чтобы активированные правила выполнились нужно выполнить команду (run).

Машина логического вывода

Процессом помещения правил в рабочий список и их выполнением управляет машина логического вывода(МЛВ). МЛВ реагирует на определенные события:

Событие Действие
ПОМЕЩЕНИЕ ФАКТОВ В РАБОЧУЮ ПАМЯТЬ 1) Сопоставление фактов с правилами из базы знаний
2) Сопоставление фактов с правилами из рабочего списка правил
УДАЛЕНИЕ ФАКТОВ ИЗ РАБОЧЕЙ ПАМЯТИ 1) Сопоставление фактов с правилами из базы знаний
2) Сопоставление фактов с правилами из рабочего списка правил
ПРИ СОПОСТАВЛЕНИИ НАЙДЕНЫ ПРАВИЛА СООТВЕТСТВУЮЩИЕ ФАКТАМ ИЗ РАБОЧЕЙ ПАМЯТИ Помещение найденных правил в рабочий список правил
В РАБОЧИЙ СПИСОК ПРАВИЛ ДОБАВЛЕНЫ НОВЫЕ ПРАВИЛА рабочий список правил сортируется согласно выбранной стратегии разрешения конфликтов
ПРИ СОПОСТАВЛЕНИИ ФАКТОВ С РАБОЧИМ СПИСКОМ ПРАВИЛ ОБНАРУЖЕНЫ НЕАКТУАЛЬНЫЕ ПРАВИЛА Неактуальные правила (условия не удовлетворяют фактам) удаляются из рабочего списка
ВЫПОЛНЯЕТСЯ КОМАНДА (RUN) Выполняются действия (правая часть) первого в рабочем списке правила.
РАБОЧИЙ СПИСОК ПРАВИЛ СТАЛ ПУСТ Останавливается выполнение правил из рабочего списка

Стратегии разрешения конфликтов

Человек не всегда может задать полные условия, которые бы удовлетворяли действительности. Существует легенда, согласно которой Диоген Синопский на определение Платона «Человек есть животное о двух ногах, лишённое перьев», общипал курицу и принес к нему в школу, объявив: «Вот платоновский человек!» На что Платон к своему определению вынужден был добавить «…и с широкими ногтями». Когда в базе знаний появляются правила, которые удовлетворяют фактам, но выполняют противоположные действия, то возникает конфликт правил. Например, есть два правила:
1. (Если человек толкнул другого человека - наказать человека за хулиганство)
2. (Если человек толкнул другого человека, на которого ехал грузовик - наградить человека за спасение жизни)
Это два правила будут между собой конфликтовать. Первое правила более общее и оно всегда активируется, если активируется второе. Но первым выполниться должно второе правило. В CLIPS есть несколько стратегий для разрешения таких конфликтов. Но даже если нет возможности выбрать подходящую стратегию для всех случаев, то можно указать приоритеты правилам. Правила с большим приоритетом будут выполняться первыми.


Различные факты могут сделать правило применимым. Применимое правило затем допускается (assert). Факты и правила создаются предварительным объявлением, как показано в примере:

(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))
 )

Потомками CLIPS являются языки программирования ECLiPSe, Haley Eclipse, FuzzyCLIPS (с добавлением концепции значимости relevancy в язык) и другие.

Существующие верcии CLIPS для Windows (clipswin.exe) не поддерживают кириллицу (консольная версия CLIPS clipsdos.exe поддерживает только кириллицу в формате UTF-8). Именно отсутствие полноценной поддержки кириллицы и является основной причиной слабого распространения CLIPS в России. В то же время открытость исходных кодов CLIPS позволяет исправить эту ситуацию. В частности, при компиляции из исходников возможно пропатчить их, добавив поддержку koi8-r или ansi1251[2].

Последняя версия - CLIPS 6.3 Beta, выпущена 7 апреля 2008.

См. также

Примечания

  1. В Windows программы написанные на других языках могут использовать динамически подключаемую библиотеку CLIPSWin32.DLL.
  2. Инструкция для подключения поддержки русских кодировок

Ссылки

  • Страница проекта
  • Что такое CLIPS (англ.) — описание проекта на SourceForge
  • Экспертная система CLIPS — кандидат для ядра диагностической системы
  • Поток в Usenet с обсуждением самой ранней истории CLIPS
  • RuleWorks Knowledge Based Systems — Программирование экспертных систем при помощи правил
  • Managed C++ .NET Framework CLIPS port
  • страница со ссылками по тематике Clips и искусственного интеллекта в целом (содержит, в том числе, режимы Clips для Emacs)

Литература

  • Джозеф Джарратано, Гари Райли «Экспертные системы: принципы разработки и программирование» = Expert Systems: Principles and Programming. — М.: «Вильямс», 2007. — 1152 с. — ISBN 978-5-8459-1156-8
  • Частиков А. П., Гаврилова Т. А., Белов Д. Л. «Разработка экспертных систем. Среда CLIPS.». — СПб.: «БХВ-Петербург», 2003. — 608 с. — ISBN 5-94157-248-4


CLIPS.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47