CLIPSCLIPS, (від англ. C Language Integrated Production System) — програмне середовище для розробки експертних систем. Синтаксис і назва запропоновані Чарльзом Форго (Charles Forgy) в OPS (Official Production System). Перші версії CLIPS розроблялися з 1984 року в Космічному центрі Джонсона (Johnson Space Center), NASA (як альтернатива існуючій тоді системі ART*Inference), поки на початку 1990-х не було призупинено фінансування. CLIPS є продукційною системою. Основна ідея полягає в представленні знань у вигляді такої форми:
CLIPS є однією з найбільш широко використовуваних інструментальних середовищ для розробки експертних систем завдяки своїй швидкості, ефективності і безкоштовності. Будучи суспільним надбанням, вона досі оновлюється і підтримується своїм початковим автором, Гері Райлі (Gary Riley). CLIPS включає повноцінну об'єктно-орієнтовану мову COOL для написання експертних систем. Хоча вона написана на мові С, її інтерфейс набагато ближче до мови програмування LISP. Розширення можна створювати на мові С, крім того, можна CLIPS інтегрувати в програми на мові С. CLIPS розроблений для застосування в ролі мови прямого логічного виводу. Як і інші експертні системи, CLIPS має справу з правилами та фактами. ФактиІнформація, на підставі якої експертна система робить логічний висновок, називається фактами. В CLIPS є 2 види фактів: впорядковані і шаблонні. Шаблонні факти мають шаблон, що задається конструкцією deftemplate. Впорядковані не мають явної конструкції deftemplate, проте вона мається на увазі. Шаблонний факт нагадує структуру у мові C або запис у мові Pascal, поля називаються слотами і оголошуються конструкцією slot. Наприклад, наступний шаблон оголошує шаблон з ім'ям cars і полями: model, color і number.
Факти розміщуються в робочій пам'яті. Нові факти поміщаються в робочу пам'ять командою assert. Наприклад, наступна команда
додасть в робочу пам'ять упорядкований факт cars. Наступна команда помістить шаблонний факт з трьома атрибутами.
CLIPS не допускає поміщення в робочу пам'ять фактів з однаковими значеннями слотів, хоча, при необхідності, це можна дозволити за допомогою відповідного налаштування. ПравилаЗнання предметної області представляються в CLIPS у вигляді правил, які мають наступну структуру:
Ліва частина правила - це умова його спрацьовування, а права частина - це ті дії, які повинні виконатися в разі виконання умов. Знак => спеціальний символ, що розділяє LHS і RHS. Правила оголошуються за допомогою команди defrule. Приклад правила:
Дане правило активується тоді, коли в робочій пам'яті з'явиться факт з атрибутами (model "Audi") і (color Black). Активація правила не означає його виконання. Активація правила - це додавання правила в робочий список правил або agenda в CLIPS. Щоб активовані правила виконалися потрібно виконати команду (run). ЗмінніКоли факт введений у пам'ять, його поля можуть бути змінені тільки шляхом видалення та введення нового екземпляру факту, навіть команда modify послідовно видаляє та додає новий екземпляр факту. На противагу фактам, які є статичними, змінні можуть набувати різних значень. Назві змінної завжди має передувати знак “?”. Для того щоб змінну зв'язати з фактом, використовується запис:
Конструкція defglobal дозволяє описувати змінні, які є глобальними у контексті оточення CLIPS. Тобто глобальна змінна доступна в будь-якому місці оточення CLIPS і зберігає своє значення незалежно від інших конструкцій. Для оголошення глобальної змінною використовується запис:
Машина логічного виводуПроцесом додавання правил в робочий список і їх виконанням керує машина логічного виводу (МЛВ). МЛВ реагує на певні події:
Стратегії вирішення конфліктівЛюдина не завжди може задати повні умови, які б задовольняли дійсності. Існує легенда, згідно з якою Діоген Синопський на визначення Платона «Людина є тварина на двох ногах, позбавлене пір'я», обскуб курку і приніс до нього в школу, оголосивши: «Ось платонівська людина!» На що Платон до свого визначення змушений був додати «... і з широкими нігтями ». Коли в базі знань з'являються правила, які задовольняють фактам, але виконують протилежні дії, то виникає конфлікт правил. Наприклад, є два правила:
Це два правила будуть між собою конфліктувати. Перше правило більш загальне і воно завжди активується, якщо активується друге. Але першим виконатися має друге правило. В CLIPS є кілька стратегій для вирішення таких конфліктів. Але навіть якщо немає можливості вибрати відповідну стратегію для всіх випадків, то можна вказати пріоритети правилам. Правила з великим пріоритетом будуть виконуватися першими. Різні факти можуть зробити правило таким, що може застосовуватися. Застосовне правило потім допускається (assert). Факти і правила створюються за допомогою попереднього оголошення. Приклад оголошення фактів і правил:
Нащадками CLIPS є мови програмування Jess (частина CLIPS, що працює з правилами, переписана на Java, пізніше розвинулася в іншому напрямку), ECLiPSe, Haley Eclipse, FuzzyCLIPS (з додаванням концепції значущості (relevancy) в мову) та інші. Існуючі версії CLIPS для Windows (clipswin.exe) не підтримують кирилицю (консольна версія CLIPS clipsdos.exe підтримує тільки кирилицю в форматі UTF-8). Саме відсутність повноцінної підтримки кирилиці і є основною причиною слабкого поширення CLIPS в Україні. У той же час відкритість вихідних кодів CLIPS дозволяє виправити цю ситуацію. Зокрема, при компіляції з вихідних можливо пропатчити їх, додавши підтримку koi8-r або ansi1251. Остання версія - CLIPS 6.3 Beta, випущена 7 квітня 2008. Див. такожПосилання
|