CLIPS , (z angličtiny C Language Integrated Production System ) - softwarové prostředí pro vývoj expertních systémů . Syntaxe a název navrhl Charles Forgy v OPS ( oficiální produkční systém ). První verze CLIPS byly vyvíjeny od roku 1984 v Johnsonově vesmírném středisku NASA jako alternativa k tehdy existujícímu systému ART*Inference , dokud nebylo financování na počátku 90. let pozastaveno a NASA byla nucena nakupovat komerční produkty.
CLIPS je produkční systém . Implementace výstupu používá algoritmus Rete .
Hlavní myšlenkou je reprezentovat znalosti v následující formě:
Pravidlo 1: LI (jsou splněny podmínky 1) PAK (proveďte kroky 1) Pravidlo 2: LI (jsou splněny podmínky 2) PAK (proveďte kroky 2) ...Taková reprezentace je blízká lidskému myšlení a liší se od programů napsaných v tradičních algoritmických jazycích, kde jsou akce objednány a prováděny přesně podle algoritmu.
CLIPS je pro svou rychlost, efektivitu a bezplatnost jedním z nejpoužívanějších nástrojů pro vývoj expertních systémů. Vzhledem k tomu, že je ve veřejné doméně , je stále aktualizován a udržován jeho původním autorem Gary Rileym.
CLIPS obsahuje kompletní objektově orientovaný jazyk COOL pro psaní expertních systémů. Přestože je napsán v C , jeho rozhraní je mnohem blíže programovacímu jazyku LISP . Rozšíření lze vytvářet v C a CLIPS lze integrovat do programů C [1] .
CLIPS je navržen pro použití jako jazyk dopředného řetězení a ve své původní verzi nepodporuje zpětné řetězení.
Stejně jako ostatní expertní systémy se i CLIPS zabývá pravidly a fakty.
Informace, na jejímž základě expertní systém vyvozuje logický závěr, se nazývá fakta . V CLIPS jsou 2 typy faktů: uspořádané a šablonované . Fakta šablony mají šablonu danou konstrukcí deftemplate . Seřazené nemají explicitní konstrukci deftemplate, ale jedna je implikovaná. Šablona se podobá struktuře v C nebo zápisu v Pascalu, pole se nazývají sloty a jsou deklarovány pomocí konstrukce slotu . Například následující šablona deklaruje šablonu s názvem auta s poli: model , barva a číslo .
(předložit auta (slotový model) (barva slotu) (číslo slotu) )Fakta jsou uložena v pracovní paměti. Nová fakta jsou vtlačena do pracovní paměti pomocí příkazu Claim . Například následující příkaz
(tvrdit (auta))přidá objednaná faktická auta do pracovní paměti .
Následující příkaz umístí šablonový fakt se třemi atributy.
(tvrdit (auta (model "Audi") (Černá barva") (číslo "WY 2576") ) )CLIPS neumožňuje vkládat do pracovní paměti fakta se stejnými hodnotami slotu, i když to lze v případě potřeby povolit nastavením.
Znalost domény je v CLIPS reprezentována jako pravidla , která mají následující strukturu:
(podmínky) {synonyma: předchůdci v logice, levá strana - LHS z hlediska CLIPS} => (akce) {synonyma: důsledky v logice, pravá strana - RHS z hlediska CLIPS}Levá strana pravidla je podmínkou pro jeho spuštění a pravá strana akce, které je nutné provést, pokud jsou podmínky splněny. Znak => je speciální znak, který odděluje LHS a RHS.
Pravidla jsou deklarována příkazem defrule . Příklad pravidla:
(defrule search-black-audi (auta (model "Audi") (barva černá)) => (výtisk t "Je tu černé Audi!" crlf) )Toto pravidlo se aktivuje, když se v pracovní paměti objeví fakt s atributy (model "Audi") a (barva Černá).
Aktivace pravidla neznamená jeho provedení. Aktivace pravidla je umístění pravidla do pracovního seznamu pravidel nebo agendy v CLIPSu.
Aby se aktivovaná pravidla provedla, musíte provést příkaz (spustit).
Proces vkládání pravidel do pracovního seznamu a jejich provádění je řízeno inferenčním jádrem (ILM). MLV reaguje na určité události:
událost | Akce |
---|---|
UVÁDĚNÍ FAKTA DO PRACOVNÍ PAMĚTI | 1) Mapování faktů na pravidla ze znalostní báze 2) Mapování faktů na pravidla z pracovního seznamu pravidel |
VYMAZEJTE FAKTA Z PRACOVNÍ PAMĚTI | 1) Mapování faktů na pravidla ze znalostní báze 2) Mapování faktů na pravidla z pracovního seznamu pravidel |
POROVNÁNÍ NALEZENÁ PRAVIDLA ODPOVÍDAJÍCÍ FAKTŮM Z PRACOVNÍ PAMĚTI | Zařazení nalezených pravidel do pracovního seznamu pravidel |
DO PRACOVNÍHO SEZNAMU PRAVIDEL PŘIDÁNA NOVÁ PRAVIDLA | pracovní seznam pravidel je řazen podle zvolené strategie řešení konfliktů |
MIMO AKTUÁLNÍ PRAVIDLA ZJIŠTĚNÁ PŘI POROVNÁNÍ SKUTEČNOSTÍ S PRACOVNÍM SEZNAMEM PRAVIDEL | Nerelevantní pravidla (podmínky neodpovídají skutečnosti) jsou z pracovního listu odstraněny |
PRŮBĚHOVÝ PŘÍKAZ (RUN) | Provedou se akce (pravá strana) prvního pravidla v pracovním seznamu. |
PRACOVNÍ SEZNAM PRAVIDEL SE VYPRÁZDNIL | Zastaví provádění pravidel z pracovního seznamu |
Člověk si nemůže vždy stanovit úplné podmínky, které by vyhovovaly realitě. Existuje legenda, podle níž Diogenés ze Sinopu v reakci na Platónovu definici „Člověk je zvíře se dvěma nohami, bez peří“, oškubal kuře a přinesl ho do školy a prohlásil: „Tady je platónský člověk! K čemuž byl Platón nucen přidat svou definici „... a se širokými nehty“. Když se ve znalostní bázi objeví pravidla, která splňují fakta, ale provádějí opačné akce, dojde ke konfliktu pravidel. Existují například dvě pravidla:
1. (Pokud osoba strčila do jiného člověka - potrestat osobu za chuligánství)
2. (Pokud osoba strčila do jiné osoby, kterou řídil náklaďák - odměňte osobu za záchranu života)
Tato dvě pravidla budou v rozporu. První pravidlo je obecnější a aktivuje se vždy, když je aktivováno druhé. Ale nejdříve musí být provedeno druhé pravidlo. CLIPS má několik strategií pro řešení takových konfliktů. Ale i když není možné zvolit vhodnou strategii pro všechny případy, můžete určit priority pro pravidla. Pravidla s vyšší prioritou budou provedena jako první.
Toto pravidlo může být použitelné kvůli různým skutečnostem. Příslušné pravidlo je pak povoleno ( tvrdit ). Fakta a pravidla jsou vytvářena předběžným prohlášením, jak ukazuje příklad:
(odstraňování závad (problém s autem (název klíče_zapalování) (stav zapnutý)) (problém s autem (název motoru) (stav wont_start)) (problém s autem (název světlometů) (stav práce)) ) (pravidlo odchylky 1 (problém s autem (název klíče_zapalování) (stav zapnutý)) (problém s autem (název motoru) (stav wont_start)) => (tvrzení (problém s autem (název startéru) (chybný stav)) )Potomci CLIPS jsou následující jazyky a prostředí:
Stávající verze CLIPS pro Windows (clipswin.exe) nepodporují azbuku (konzolová verze CLIPS clipsdos.exe podporuje pouze azbuku ve formátu UTF-8). Právě nedostatek plné podpory azbuky je hlavním důvodem špatné distribuce CLIPS v Rusku. Otevřenost zdrojových kódů CLIPS zároveň umožňuje tuto situaci napravit. Zejména při kompilaci ze zdroje je možné je opravit přidáním podpory pro koi8-r nebo ansi1251 [4] .
Nejnovější verze je CLIPS 6.3, vydaná 17. března 2015.