slajdy v pdf
Transkript
Úvod do umělé inteligence – T7: CLIPS Úvod do umělé inteligence – CLIPS T7: CLIPS Syntaxe jazyka C Language Integrated Production System Clips je programovací jazyk (prostředí), které podporuje pravidlové, objektově orientované i procedurální programování. vyvinut v NASA/Johnson Space Center, USA ke stažení na webu na http://www.ghg.net/clips/CLIPS.html Data: • • • • atomy – číselné, nečíselné, TRUE, FALSE, nil čísla – čísla řetězce – uzavřeny do úvozovek seznamy (atomů, čísel, řetězců, seznamů) proměnné začínají znakem ? Funkce: • funkční volání s využitím prefixové notace (jako LISP) (+ (+ 2 3) (* 3 3)) • definování funkcí (deffunction max (?a ?b) (if (> ?a ?b) then (return ?a) else (return ?b))) P. Berka, 2007 Úvod do umělé inteligence – 1/15 T7: CLIPS P. Berka, 2007 2/15 Úvod do umělé inteligence – CLIPS pro expertní systémy T7: CLIPS Reprezentace znalostí 1. Fakta (rámce a jejich instance)- každý Reprezentace znalostí: fakt je tvořen jménem relace a (žádnou nebo více) položkami: • rámce • procedurální pravidla (adept (jmeno "Hloupý Honza") (velikost_nohy 45) (krev cervena) (majetek zadny) (dobra_rodina ne) (princ ne)) Inferenční mechanismus: • přímé řetězení • bez neurčitosti (tedy nekompozicionální) 1.1 Definování faktů (deftemplate <relation-name> [<optional-comment>] <slot-definition>*) Tedy CLIPS vhodný pro generativní expertní systémy kde <slot-definition> je: (slot <slot-name>) | (multislot <slot-name>) např: (deftemplate adept "example" (slot jmeno) (slot velikost_nohy) (slot krev) (multislot majetek) (slot dobra_rodina) (slot princ)) slot: obsah je jedna hodnota P. Berka, 2007 3/15 P. Berka, 2007 multislot: obsah je seznam hodnot 4/15 Úvod do umělé inteligence – T7: CLIPS Úvod do umělé inteligence – 2. Pravidla v procedurálním chápaní 1.2 Přidávání faktů (if LHS then RHS) (assert <fact>+) např. T7: CLIPS (assert (adept (jmeno "Hloupý Honza") (velikost_nohy 45) (krev cervena) (majetek zadny) (princ nil)) 2.1 Definování pravidel (defrule <rule-name> [<optional-comment>] <patterns>* => <actions>*) např. (defrule princ1 (noha mala) (dobra_rodina ano) => (assert (princ ano)) (printout t “je to princ” crlf)) 1.3 Rušení faktů (retract <fact-index>+) např. (retract 0) 1.4 Modifikování faktů (pravidlo bez rámců) (defrule princ2 (adept (noha mala) (dobra_rodina ano)) => (assert (adept (princ ano))) (printout t “je to princ” crlf)) (pravidlo s rámci)? (modify <fact-index> (<slot-name> <slot-value>)+) např. (modify 0 (velikost_nohy 42)) Použití proměnných pro uložení hodnot. Proměnné se (duplicate <fact-index> (<slot-name> <slot-value>)+) používají pro vázání LHS a RHS nějakého pravidla: např. (duplicate 1 (name "Chytrý Honza")) (defrule princ_tisk (adept (jmeno ?jmeno) (princ ano)) => (printout t ?jmeno “ je princ.” crlf)) 1.5 Výpis faktů výpis rámců (list-deftemplates) výpis instancí (list-deffacts) P. Berka, 2007 P. Berka, 2007 6/15 5/15 Úvod do umělé inteligence – T7: CLIPS Vázání proměnných na fakta pomocí operátoru <-. Příslušný fakt je pak možno např. odstranit příkazem retract: Úvod do umělé inteligence – T7: CLIPS Inferenční mechanismus 1. Prohledávání báze pravidel (hledání (defrule odstran_neprince ?f1 <- (adept (jmeno ?jmeno) (princ ne)) => (printout t ?jmeno “ neni princ.” crlf) (retract ?f1)) prvního aplikovatelného pravidla) Pro řízení inference se používá agenda, což je seznam pravidel, která se mají aktivovat. Agenda je zásobník (poslední přidané pravidlo se aktivuje jako první), pořadí vyhodnocování lze ale změnit: nebo modifikovat příkazem modify: (defrule princ ?f1 <- (adept (noha mala) (jmeno ?jmeno) (dobra_rodina ano)) => (modify ?f1 (princ ano)) (printout t ?jmeno “ princ: ” ?princ crlf) • Salience (priorita explicitně přiřazená k pravidlu) (defrule fire-rule (declare salience 30)) (emergency (type fire)) => (printout t "Fire emergency" crlf)) • Rozčleněním báze znalostí (faktů i pravidel) na 2.2 Výpis pravidel jednotlivé moduly, které se zpracovávají samostatně • všech (list-defrules) (defmodule <module-name> [<comment>]) • jednoho konkrétního při definování faktů a pravidel se musí uvádět i název modulu: (ppdefrule <defrule-name>) P. Berka, 2007 (deftemplate MODUL1::sensor (slot name)) 7/15 P. Berka, 2007 8/15 Úvod do umělé inteligence – T7: CLIPS 2. Aplikace pravidel (je-li splněn předpoklad v LHS, provedou se akce z RHS) Úvod do umělé inteligence – T7: CLIPS 2.2 Možné akce • vytváření nových faktů 2.1 Test splnění předpokladu (assert) • zjišťování, zda proměnná odpovídá faktům (pattern matching) o standardně shoda hodnot: (hair black) • odebrání faktů (retract) • vstup o negace: (hair ~black) (bind) o disjunkce: (hair brown | black) • výstup (printout) • aritmetický test (prefixová notace) (test (< ?velikost_nohy 40)) • logické operátory . . . o standardně konjunkce o disjunkce: (or (majetek peníze) (majetek pozemky)) o negace: (not (princ ano)) o existuje fakt: (exists (adept (noha mala))) o všechna fakta vyhovují: (forall (adept (noha ~mala))) o logické vyplývání = přestane-li v důsledku odstranění nějakého faktu platit LHS, odstraní se i fakta která byla přidána RHS: (logical (…)) P. Berka, 2007 9/15 Úvod do umělé inteligence – T7: CLIPS P. Berka, 2007 10/15 Úvod do umělé inteligence – T7: CLIPS Příklad Konzultace Princ 1 Spuštění programu (defrule princ (noha mala) (slechticka_rodina ano) => (assert (princ ano))) (run [<limit>] (defrule slechticka_rodina (modra_krev ano) (bohata_rodina ano) => (assert (slechticka_rodina ano))) Dávkový režim (deffacts <deffacts-name> <facts>*) (defrule bohata_rodina1 (penize ano) => (assert (bohata_rodina ano))) Dialogový režim (defrule bohata_rodina2 (pozemky ano) => (assert (bohata_rodina ano))) (bind ?string (read)) ;;; Vypis vysledku (defrule vypis_vysledku (princ ?x) => (printout t "Princ: " ?x crlf)) Výpis výsledků (printout t "Princ: " ?x crlf)) ;;; Negativni pravidla (defrule velka_noha (noha velka) => (assert (princ ne))) (defrule slechticka_rodina_ne (slechticka_rodina ne) => (assert (princ ne))) (defrule modra_krev_ne (modra_krev ne) => (assert (slechticka_rodina ne))) P. Berka, 2007 11/15 P. Berka, 2007 12/15 Úvod do umělé inteligence – T7: CLIPS (defrule bohata_rodina_ne (bohata_rodina ne) => (assert (slechticka_rodina ne))) ; definice ramcu ; (deftemplate adept (slot jmeno) (slot velikost_nohy) (slot krev) (multislot majetek) (slot dobra_rodina) (slot princ)) ;;; Nacitani (defrule Nacteni_nohy (initial-fact) => (printout t "Jakou ma adept velikost nohy? (mala, velka)" crlf) (bind ?string (read)) (assert (noha ?string))) ; pravidla ; (defrule princ ?a <- (adept (velikost_nohy ?velikost_nohy) (dobra_rodina ano) (jmeno ?jmeno) (princ nil)) (test (< ?velikost_nohy 40)) => (modify ?a (princ ano)) (printout t ?jmeno " je princ" crlf)) (defrule Nacteni_krve (initial-fact) => (printout t "Ma rodina adepta modrou krev? (ano, ne)" crlf) (bind ?string (read)) (assert (modra_krev ?string))) (defrule ne-princ-1 ?a <- (adept (velikost_nohy ?velikost_nohy) (jmeno ?jmeno) (princ nil)) (test (>= ?velikost_nohy 40)) => (modify ?a (princ ne)) (printout t ?jmeno " neni princ" crlf)) (defrule Nacteni_penez (initial-fact) => (printout t "Ma rodina adepta penize? (ano, ne)" crlf) (bind ?string (read)) (assert (penize ?string))) (defrule ne-princ-2 ?a <- (adept (dobra_rodina ne) (jmeno ?jmeno) (princ nil)) => (modify ?a (princ ne)) (printout t ?jmeno " neni princ" crlf)) (defrule Nacteni_pozemku (initial-fact) => (printout t "Ma rodina adepta pozemky? (ano, ne)" crlf) (bind ?string (read)) (assert (pozemky ?string))) P. Berka, 2007 13/15 T7: CLIPS (defrule dobra-rodina ?a <- (adept (jmeno ?jmeno) (krev modra) (dobra_rodina nil) (majetek penize | pozemky)) => (modify ?a (dobra_rodina ano))) (defrule spatna-rodina-krev ?a <- (adept (jmeno ?jmeno) (krev cervena) (dobra_rodina nil)) => (modify ?a (dobra_rodina ne))) (defrule spatna-rodina-bohatstvi ?a <- (adept (jmeno ?jmeno) (dobra_rodina nil) (majetek ~penize & ~pozemky)) => (modify ?a (dobra_rodina ne))) ; fakta ; (deffacts adepts (adept (jmeno Honza) (velikost_nohy 45) (krev cervena) (majetek zadny)) (adept (jmeno Wilibald) (velikost_nohy 39) (krev modra) (majetek pozemky)) ) P. Berka, 2007 T7: CLIPS Princ 2 (s využitím rámců) (defrule bohata_rodina2_ne (penize ne) (pozemky ne) => (assert (bohata_rodina ne))) Úvod do umělé inteligence – Úvod do umělé inteligence – 15/15 P. Berka, 2007 14/15
Podobné dokumenty
slajdy v pdf
IF předpoklad THEN závěr A akce
kde předpoklad je disjunktivní forma (disjunkce
konjunkcí) literálů, závěr je seznam literálů a akce
je seznam akcí (externích programů).
Úvod do expertních systémů - Ústav automatizace a informatiky
V literatuře se můžeme setkat také s pojmem znalostní systém (knowledge-based system),
který je podle staršího pojetí obecnější než pojem expertní systém. Expertní systém tedy lze
chápat jako zvláš...
VY_12_INOVACE_5.ČJ.07
Není krásnějších pohádek než ty, které píše život sám. (Andersen)
VY_12_INOVACE_5.ČJ.07
Program v Clipsu
pak hledana osoba nejspis neni evidovana v databazi." crlf
"Pokud nebudete rozumet nektere z nabizenych hodnot, staci
zadat 'help' a pripade nazev teto hodnoty." crlf
"Zadavani hodnot muzete kdykol...
upravená 2006
- původně navrženy pro radiovou síť, nevyužívá kontroly obsazenosti kanálu – vyšle rámec a pak řeší případné
kolize
- Prostá ALOHA – využití kanálu 18%
- pakety každý vysílá jak se mu zachce, pokud...
Ikigai- život stojí za to
výzkumů smyslu života a ikigai. Hned několik prospektivních studií v Japonsku totiž svědčí o tom, že
lidé, kteří nemají své vlastní ikigai podléhají razantně vyššímu riziku mortality. Například Tan...
Kódová klávesnice Alarm_keypad
➢ K procesoru kódové klávesnice lze připojit 2 typy klávesnic:
➢ klávesy připojené přímo každá zvlášť, lze přímo připojit 9 tlačítek, 8 tlačítek na port PB, 1
tlačítko na PD6, další lze připojit př...
(Microsoft PowerPoint - 07-JavaScript.ppt [Re\236im kompatibility])
Základní charakteristiky
• Syntaxe na základě C/Java
• Netypový jazyk
– implicitní deklarace proměnných
– základní typy: number (float), boolean, string
– funkce
Domácí práce a ne/spravedlnost
orientaci v tématu nám byly pomocí texty založené kvantitativně. Jelikož se ale
publikací a článků věnujících se problematice domácích prací vyskytuje velké
množství, orientovaly jsme náš výběr v k...