CLIPS

CLIPS

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 являются языки программирования Jess (часть CLIPS, работающая с правилами и переписанная на Java, позже развившаяся в другом направлении), 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. Инструкция для подключения поддержки русских кодировок

Ссылки

Литература

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



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "CLIPS" в других словарях:

  • CLIPS — Saltar a navegación, búsqueda CLIPS es una herramienta que provee un ambiente de desarrollo para la producción y ejecución de sistemas expertos. Fue creado a partir de 1984, en el Lyndon B. Johnson Space Center de la NASA. Los fondos cesaron a… …   Wikipedia Español

  • CLIPS — is a public domain software tool for building expert systems. The name is an acronym for C Language Integrated Production System. The syntax and name was inspired by Charles Forgy s OPS ( Official Production System, although there was nothing… …   Wikipedia

  • CLIPS — (C Language Integrated Production System) ist eine multiparadigme Programmiersprache mit Unterstützung für die regelbasierte, objektorientierte und prozedurale Programmierung. Bekannt geworden ist CLIPS als datengetriebenes (also… …   Deutsch Wikipedia

  • clips — (el. klips) sb., en, clips, ene, i sms. clips el. clipse , fx clips(e)maskine; en clips i papirerne; clips i ørerne; en clips i håret …   Dansk ordbog

  • clips — CLIPS, clipsuri, s.n. 1. Obiect de podoabă (agrafă, broşă, cercel) care se prinde cu un fel de clapă sau cu un ac cu arc. 2. Piesă formată din două elemente, care se asamblează şi se desfac cu uşurinţă. – Din germ. Klips. Trimis de hai,… …   Dicționar Român

  • clips — s.f.inv. CO clip {{line}} {{/line}} DATA: sec. XX. ETIMO: dall ingl. clips, pl. di clip …   Dizionario italiano

  • Clips — vgl. ↑Klips …   Das große Fremdwörterbuch

  • Clips — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Homonymie Clips, pluriel de clip, œuvre multimédia réalisée à partir d une chanson. CLIPS, langage de programmation par règles. Catégorie : Homonymie …   Wikipédia en Français

  • clips — 1. clip [ klip ] n. m. • 1932; mot angl. « attache, agrafe » 1 ♦ Petit bijou (boucle d oreille, broche, etc.) monté sur une pince. Var. abus. Un clips [ klips ]. 2 ♦ Chir. Agrafe chirurgicale (pour pincer un vaisseau, servir de repère, etc.). ⇒… …   Encyclopédie Universelle

  • clips — gnybtai statusas T sritis automatika atitikmenys: angl. clamps; clips; terminals vok. Klemmen, f rus. зажимы, m; клеммы, f pranc. bornes, f …   Automatikos terminų žodynas


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»