CLIPS, (від англ. C Language Integrated Production System) — програмне середовище для розробки експертних систем. Синтаксис і назва запропоновані Чарльзом Форго (Charles Forgy) в OPS (Official Production System). Перші версії CLIPS розроблялися з 1984 року в Космічному центрі Джонсона (Johnson Space Center), NASA (як альтернатива існуючій тоді системі ART*Inference), поки на початку 1990-х не було призупинено фінансування.
CLIPS є продукційною системою. Основна ідея полягає в представленні знань у вигляді такої форми:
Правило1: ЯКЩО (виконуються умови1) ТОДІ (виконати дії1) Правило2: ЯКЩО (виконуються умови2) ТОДІ (виконати дії2) ...
Таке представлення близьке до людського мислення і відрізняється від програм, написаних на традиційних алгоритмічних мовах, де дії впорядковані і виконуються строго за алгоритмом.
CLIPS є однією з найбільш широко використовуваних інструментальних середовищ для розробки експертних систем завдяки своїй швидкості, ефективності і безкоштовності. Будучи суспільним надбанням, вона досі оновлюється і підтримується своїм початковим автором, Гері Райлі (Gary Riley).
CLIPS включає повноцінну об'єктно-орієнтовану мову COOL для написання експертних систем. Хоча вона написана на мові С, її інтерфейс набагато ближче до мови програмування LISP. Розширення можна створювати на мові С, крім того, можна CLIPS інтегрувати в програми на мові С.
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).
Змінні
Коли факт введений у пам'ять, його поля можуть бути змінені тільки шляхом видалення та введення нового екземпляру факту, навіть команда modify послідовно видаляє та додає новий екземпляр факту.
На противагу фактам, які є статичними, змінні можуть набувати різних значень. Назві змінної завжди має передувати знак “?”. Для того щоб змінну зв'язати з фактом, використовується запис:
?var <- (fact_name (field value))
Конструкція defglobal дозволяє описувати змінні, які є глобальними у контексті оточення CLIPS. Тобто глобальна змінна доступна в будь-якому місці оточення CLIPS і зберігає своє значення незалежно від інших конструкцій. Для оголошення глобальної змінною використовується запис:
(defglobal [<defmodule-name>] ?*<назва глобальної змінною>* = <вираз>)
Машина логічного виводу
Процесом додавання правил в робочий список і їх виконанням керує машина логічного виводу (МЛВ). МЛВ реагує на певні події:
Подія | Дія |
---|---|
Додавання фактів в робочу пам'ять | # Зіставлення фактів з правилами з бази знань # Зіставлення фактів з правилами з робочого списку правил |
Видалення фактів з робочої пам'яті | # Зіставлення фактів з правилами з бази знань # Зіставлення фактів з правилами з робочого списку правил |
При зіставленні знайдено правила, що відповідають фактам з робочою пам'яті | Додавання знайдених правил в робочий список правил |
У робочий список правил додано нові правила | Робочий список правил сортується відповідно до обраної стратегії вирішення конфліктів |
При зіставленні фактів з робочим списком правил виявлено неактуальні правила | Неактуальні правила (умови яких не задовольняють фактам) видаляються з робочого списку |
Виконується команда (RUN) | Виконуються дії (права частина) правила, що є першим в робочому списку правил. |
Робочий список правил став порожнім | Зупиняється виконання правил з робочого списку |
Стратегії вирішення конфліктів
Людина не завжди може задати повні умови, які б задовольняли дійсності. Існує легенда, згідно з якою Діоген Синопський на визначення Платона «Людина є тварина на двох ногах, позбавлене пір'я», обскуб курку і приніс до нього в школу, оголосивши: «Ось платонівська людина!» На що Платон до свого визначення змушений був додати «... і з широкими нігтями ». Коли в базі знань з'являються правила, які задовольняють фактам, але виконують протилежні дії, то виникає конфлікт правил. Наприклад, є два правила:
- (Якщо людина штовхнула іншу людину - покарати людину за хуліганство)
- (Якщо людина штовхнула іншу людину, на яку їхала вантажівка - нагородити людину за порятунок життя)
Це два правила будуть між собою конфліктувати. Перше правило більш загальне і воно завжди активується, якщо активується друге. Але першим виконатися має друге правило. В 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, пізніше розвинулася в іншому напрямку), , Haley Eclipse, FuzzyCLIPS (з додаванням концепції значущості (relevancy) в мову) та інші.
Існуючі версії CLIPS для Windows (clipswin.exe) не підтримують кирилицю (консольна версія CLIPS clipsdos.exe підтримує тільки кирилицю в форматі UTF-8). Саме відсутність повноцінної підтримки кирилиці і є основною причиною слабкого поширення CLIPS в Україні. У той же час відкритість вихідних кодів CLIPS дозволяє виправити цю ситуацію. Зокрема, при компіляції з вихідних можливо пропатчити їх, додавши підтримку koi8-r або ansi1251.
Остання версія - CLIPS 6.3 Beta, випущена 7 квітня 2008.
Див. також
Посилання
- Домашня сторінка проекту [ 17 лютого 2011 у Wayback Machine.]
- Що таке CLIPS [ 20 квітня 2012 у Wayback Machine.](англ.) — Опис проекту на SourceForge
- — Потік в Usenet з обговоренням самої ранньої історії CLIPS
- RuleWorks Knowledge Based Systems [ 2 квітня 2022 у Wayback Machine.] — Програмування експертних систем за допомогою правил
- Сторінка з посиланнями по тематиці Clips і штучного інтелекту в цілому [ 28 травня 2010 у Wayback Machine.] (містить, в тому числі, режими Clips для Emacs)
- EHSIS [ 25 вересня 2010 у Wayback Machine.]: Розширення мови CLIPS, додає підтримку графічного інтерфейсу корисувача, мультимедія, взаємодії між процесами тощо, на MS Windows.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
CLIPS vid angl C Language Integrated Production System programne seredovishe dlya rozrobki ekspertnih sistem Sintaksis i nazva zaproponovani Charlzom Forgo Charles Forgy v OPS Official Production System Pershi versiyi CLIPS rozroblyalisya z 1984 roku v Kosmichnomu centri Dzhonsona Johnson Space Center NASA yak alternativa isnuyuchij todi sistemi ART Inference poki na pochatku 1990 h ne bulo prizupineno finansuvannya CLIPS ye produkcijnoyu sistemoyu Osnovna ideya polyagaye v predstavlenni znan u viglyadi takoyi formi pre Pravilo1 YaKShO vikonuyutsya umovi1 TODI vikonati diyi1 Pravilo2 YaKShO vikonuyutsya umovi2 TODI vikonati diyi2 pre Take predstavlennya blizke do lyudskogo mislennya i vidriznyayetsya vid program napisanih na tradicijnih algoritmichnih movah de diyi vporyadkovani i vikonuyutsya strogo za algoritmom CLIPS ye odniyeyu z najbilsh shiroko vikoristovuvanih instrumentalnih seredovish dlya rozrobki ekspertnih sistem zavdyaki svoyij shvidkosti efektivnosti i bezkoshtovnosti Buduchi suspilnim nadbannyam vona dosi onovlyuyetsya i pidtrimuyetsya svoyim pochatkovim avtorom Geri Rajli Gary Riley CLIPS vklyuchaye povnocinnu ob yektno oriyentovanu movu COOL dlya napisannya ekspertnih sistem Hocha vona napisana na movi S yiyi interfejs nabagato blizhche do movi programuvannya LISP Rozshirennya mozhna stvoryuvati na movi S krim togo mozhna CLIPS integruvati v programi na movi S CLIPS rozroblenij dlya zastosuvannya v roli movi pryamogo logichnogo vivodu Yak i inshi ekspertni sistemi CLIPS maye spravu z pravilami ta faktami FaktiInformaciya na pidstavi yakoyi ekspertna sistema robit logichnij visnovok nazivayetsya faktami V CLIPS ye 2 vidi faktiv vporyadkovani i shablonni Shablonni fakti mayut shablon sho zadayetsya konstrukciyeyu deftemplate Vporyadkovani ne mayut yavnoyi konstrukciyi deftemplate prote vona mayetsya na uvazi Shablonnij fakt nagaduye strukturu u movi C abo zapis u movi Pascal polya nazivayutsya slotami i ogoloshuyutsya konstrukciyeyu slot Napriklad nastupnij shablon ogoloshuye shablon z im yam cars i polyami model color i number deftemplate cars slot model slot color slot number Fakti rozmishuyutsya v robochij pam yati Novi fakti pomishayutsya v robochu pam yat komandoyu assert Napriklad nastupna komanda assert cars dodast v robochu pam yat uporyadkovanij fakt cars Nastupna komanda pomistit shablonnij fakt z troma atributami assert cars model Audi color Black number WY 2576 CLIPS ne dopuskaye pomishennya v robochu pam yat faktiv z odnakovimi znachennyami slotiv hocha pri neobhidnosti ce mozhna dozvoliti za dopomogoyu vidpovidnogo nalashtuvannya PravilaZnannya predmetnoyi oblasti predstavlyayutsya v CLIPS u viglyadi pravil yaki mayut nastupnu strukturu umova sinonimi antecedenti v logici liva chastina LHS v terminah CLIPS gt diya sinonimi konsekvent v logici prava chastina RHS v terminah CLIPS Liva chastina pravila ce umova jogo spracovuvannya a prava chastina ce ti diyi yaki povinni vikonatisya v razi vikonannya umov Znak gt specialnij simvol sho rozdilyaye LHS i RHS Pravila ogoloshuyutsya za dopomogoyu komandi defrule Priklad pravila defrule search black audi cars model Audi color Black gt printout t Mayemo chornij Audi crlf Dane pravilo aktivuyetsya todi koli v robochij pam yati z yavitsya fakt z atributami model Audi i color Black Aktivaciya pravila ne oznachaye jogo vikonannya Aktivaciya pravila ce dodavannya pravila v robochij spisok pravil abo agenda v CLIPS Shob aktivovani pravila vikonalisya potribno vikonati komandu run ZminniKoli fakt vvedenij u pam yat jogo polya mozhut buti zmineni tilki shlyahom vidalennya ta vvedennya novogo ekzemplyaru faktu navit komanda modify poslidovno vidalyaye ta dodaye novij ekzemplyar faktu Na protivagu faktam yaki ye statichnimi zminni mozhut nabuvati riznih znachen Nazvi zminnoyi zavzhdi maye pereduvati znak Dlya togo shob zminnu zv yazati z faktom vikoristovuyetsya zapis var lt fact name field value Konstrukciya defglobal dozvolyaye opisuvati zminni yaki ye globalnimi u konteksti otochennya CLIPS Tobto globalna zminna dostupna v bud yakomu misci otochennya CLIPS i zberigaye svoye znachennya nezalezhno vid inshih konstrukcij Dlya ogoloshennya globalnoyi zminnoyu vikoristovuyetsya zapis defglobal lt defmodule name gt lt nazva globalnoyi zminnoyu gt lt viraz gt Mashina logichnogo vivoduProcesom dodavannya pravil v robochij spisok i yih vikonannyam keruye mashina logichnogo vivodu MLV MLV reaguye na pevni podiyi Podiya Diya Dodavannya faktiv v robochu pam yat Zistavlennya faktiv z pravilami z bazi znan Zistavlennya faktiv z pravilami z robochogo spisku pravil Vidalennya faktiv z robochoyi pam yati Zistavlennya faktiv z pravilami z bazi znan Zistavlennya faktiv z pravilami z robochogo spisku pravil Pri zistavlenni znajdeno pravila sho vidpovidayut faktam z robochoyu pam yati Dodavannya znajdenih pravil v robochij spisok pravil U robochij spisok pravil dodano novi pravila Robochij spisok pravil sortuyetsya vidpovidno do obranoyi strategiyi virishennya konfliktiv Pri zistavlenni faktiv z robochim spiskom pravil viyavleno neaktualni pravila Neaktualni pravila umovi yakih ne zadovolnyayut faktam vidalyayutsya z robochogo spisku Vikonuyetsya komanda RUN Vikonuyutsya diyi prava chastina pravila sho ye pershim v robochomu spisku pravil Robochij spisok pravil stav porozhnim Zupinyayetsya vikonannya pravil z robochogo spiskuStrategiyi virishennya konfliktivLyudina ne zavzhdi mozhe zadati povni umovi yaki b zadovolnyali dijsnosti Isnuye legenda zgidno z yakoyu Diogen Sinopskij na viznachennya Platona Lyudina ye tvarina na dvoh nogah pozbavlene pir ya obskub kurku i prinis do nogo v shkolu ogolosivshi Os platonivska lyudina Na sho Platon do svogo viznachennya zmushenij buv dodati i z shirokimi nigtyami Koli v bazi znan z yavlyayutsya pravila yaki zadovolnyayut faktam ale vikonuyut protilezhni diyi to vinikaye konflikt pravil Napriklad ye dva pravila Yaksho lyudina shtovhnula inshu lyudinu pokarati lyudinu za huliganstvo Yaksho lyudina shtovhnula inshu lyudinu na yaku yihala vantazhivka nagoroditi lyudinu za poryatunok zhittya Ce dva pravila budut mizh soboyu konfliktuvati Pershe pravilo bilsh zagalne i vono zavzhdi aktivuyetsya yaksho aktivuyetsya druge Ale pershim vikonatisya maye druge pravilo V CLIPS ye kilka strategij dlya virishennya takih konfliktiv Ale navit yaksho nemaye mozhlivosti vibrati vidpovidnu strategiyu dlya vsih vipadkiv to mozhna vkazati prioriteti pravilam Pravila z velikim prioritetom budut vikonuvatisya pershimi Rizni fakti mozhut zrobiti pravilo takim sho mozhe zastosovuvatisya Zastosovne pravilo potim dopuskayetsya assert Fakti i pravila stvoryuyutsya za dopomogoyu poperednogo ogoloshennya Priklad ogoloshennya faktiv i pravil 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 gt assert car problem name starter status faulty Nashadkami CLIPS ye movi programuvannya Jess chastina CLIPS sho pracyuye z pravilami perepisana na Java piznishe rozvinulasya v inshomu napryamku Haley Eclipse FuzzyCLIPS z dodavannyam koncepciyi znachushosti relevancy v movu ta inshi Isnuyuchi versiyi CLIPS dlya Windows clipswin exe ne pidtrimuyut kirilicyu konsolna versiya CLIPS clipsdos exe pidtrimuye tilki kirilicyu v formati UTF 8 Same vidsutnist povnocinnoyi pidtrimki kirilici i ye osnovnoyu prichinoyu slabkogo poshirennya CLIPS v Ukrayini U toj zhe chas vidkritist vihidnih kodiv CLIPS dozvolyaye vipraviti cyu situaciyu Zokrema pri kompilyaciyi z vihidnih mozhlivo propatchiti yih dodavshi pidtrimku koi8 r abo ansi1251 Ostannya versiya CLIPS 6 3 Beta vipushena 7 kvitnya 2008 Div takozhProlog LispPosilannyaDomashnya storinka proektu 17 lyutogo 2011 u Wayback Machine Sho take CLIPS 20 kvitnya 2012 u Wayback Machine angl Opis proektu na SourceForge Potik v Usenet z obgovorennyam samoyi rannoyi istoriyi CLIPS RuleWorks Knowledge Based Systems 2 kvitnya 2022 u Wayback Machine Programuvannya ekspertnih sistem za dopomogoyu pravil Storinka z posilannyami po tematici Clips i shtuchnogo intelektu v cilomu 28 travnya 2010 u Wayback Machine mistit v tomu chisli rezhimi Clips dlya Emacs EHSIS 25 veresnya 2010 u Wayback Machine Rozshirennya movi CLIPS dodaye pidtrimku grafichnogo interfejsu korisuvacha multimediya vzayemodiyi mizh procesami tosho na MS Windows