Programowanie w CLIPS

Podobne dokumenty
JESS FAKTY, REGUŁY. czyli faktami. Rodzaje faktów, oraz sposoby ich implementacji w programie. Szablony do tworzenia faktów.

Programowanie w CLIPS

Systemy ekspertowe. Wykład 5 Wprowadzenie do CLIPSa Programowanie systemów ekspertowych. Joanna Kołodziejczyk

Inżynieria wiedzy. Katedra Wytrzymałości Materiałów i Metod Komputerowych Mechaniki 1. Podstawy programowania w języku CLIPS

Kontrola przepływu wykonywania -pętle (foreach, if, while ). Tworzenie własnych funkcji przy pomocy polecenia deffunction( ).

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Rys. 1 Budowa systemu ekspertowego

Inżynieria wiedzy. Katedra Wytrzymałości Materiałów i Metod Komputerowych Mechaniki

Systemy ekspertowe. Sprawozdanie I. Tworzenie bazy wiedzy w systemie PC- Shell. Wykonali: Wiktor Wielgus Łukasz Nowak

Java Developers Day. Silniki reguł biznesowych

Systemy ekspertowe. Krzysztof Patan

Systemy ekspertowe. PC-Shell. Sprawozdanie z bazy wiedzy

PODSTAWY BAZ DANYCH. 19. Perspektywy baz danych. 2009/2010 Notatki do wykładu "Podstawy baz danych"

PODSTAWOWE POJĘCIA BAZ DANYCH

JESS. Tomasz Rybak Applied Systems Division Software Departament Faculty of Computer Science Bialystok Technical University

Opis podstawowych funkcji PC- SHELLa

Podstawowe definicje Z czego składa się system ekspertowy? Wnioskowanie: wprzód, wstecz, mieszane

Laboratorium nr 5. Bazy danych OpenOffice Base.

System ekspertowy JESS

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

akademia androida Składowanie danych część VI

Wstęp do programowania 2

Dodawanie i modyfikacja atrybutów zbioru

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

QUERY język zapytań do tworzenia raportów w AS/400

NetDrive czyli jak w prosty sposób zarządzać zawartością FTP

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Gramatyki kształtu. 1 Cel zajęć. 2 Narzędzie. 3 Ćwiczenie wprowadzające. 2.1 Uwagi ogólne odnośnie działania

Temat: Model SUGENO. Instrukcja do ćwiczeń przedmiotu INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Rys. 1 Schemat blokowy systemu ekspertowego

Logika rozmyta typu 2

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Systemy eksperckie. Plan wykładu Wprowadzenie do sztucznej inteligencji. Wnioski z prób automatycznego wnioskowania w rachunku predykatów

Podstawowe zagadnienia z zakresu baz danych

Narzędzia informatyczne w językoznawstwie

Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.

Reguły i fakty zapisz za pomocą perceptów. Metodą wnioskowania w tył, sprawdzić czy mój komputer jest wyposażony w procesor PII.

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

SQL 4 Structured Query Lenguage

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Laboratorium 1 - Programowanie proceduralne i obiektowe

1 Wprowadzenie do algorytmiki

Zasada rozszerzania. A U A jest zbiorem rozmytym, B jest obrazem zbioru A Przeniesienie rozmytości A w odwzorowaniu f na zbiór B. sup.

Instrukcja programu ESKUP

KBEXPLORATOR A INNE NARZĘDZIA EKSPLORACJI REGUŁOWYCH BAZ WIEDZY

RBD Relacyjne Bazy Danych

PRZEWODNIK PO PRZEDMIOCIE

Wykład 4. SQL praca z tabelami 1

Oracle11g: Wprowadzenie do SQL

Kostki OLAP i język MDX

Tworzenie rozmytego systemu wnioskowania

Wykład 5. SQL praca z tabelami 2

PRZEWODNIK PO PRZEDMIOCIE

Platforma e-learningowa

Sprawozdanie 1 z PC-Shell a. Baza Wiedzy: Wybór śniadania

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Cele. Definiowanie wyzwalaczy

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Tabela wewnętrzna - definicja

Programowanie w Ruby

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Indukowane Reguły Decyzyjne I. Wykład 3

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Przykład połączenie z bazą danych

Materiały do ćwiczeń z przedmiotu Sztuczna Inteligencja. Artur Michalski. Kierunek Informatyka. Studia InŜynierskie

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Modele danych walidacja widoki zorientowane na model

PROLOG INNE PRZYKŁADY MACIEJ KELM

SG-R... SPRĘŻYNY GAZOWE P (2 x S) 60+(2 x S) 42/45+(2 x S) 50+(2 x S) 32+(2 x S) 38+(2 x S) P.67 P.68 P.69 P.70 P.71 P.72

Delphi Laboratorium 3

Przepływy danych. Oracle Designer: Modelowanie przepływów danych. Diagramy przepływów danych (1) Diagramy przepływów danych (2)

Ref. 7 - Język SQL - polecenia DDL i DML

Programowanie obiektowe zastosowanie języka Java SE

Rysunek 8. Rysunek 9.

Wstęp do programowania

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

7. Formularze master-detail

PRZYKŁAD. Prosta uczelnia. Autor: Jan Kowalski nr indeksu: (przykładowy projekt)

PHP 5 język obiektowy

Metody wnioskowania. Wnioskowanie w przód (ang. forward chaining) Wnioskowanie w tył (ang. Backward chaining) Od przesłanki do konkluzji Np..

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Użycie Visual Basic for Applications ("VBA")

Materiały do laboratorium MS ACCESS BASIC

Typy danych, cd. Łańcuchy znaków

BAZY DANYCH. Co to jest baza danych. Przykłady baz danych. Z czego składa się baza danych. Rodzaje baz danych

Definicje. Algorytm to:

Camspot 4.4 Camspot 4.5

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Gramatyki atrybutywne

zajęcia 2 Definiowanie wektorów:

Windows 10 - Jak uruchomić system w trybie

Opracował: mgr inż. Marcin Olech

Programy użytkowe (utilities)

Transkrypt:

Programowanie w CLIPS

CLIPS - środowisko open source do tworzenia systemów ekspertowych. Stworzone w NASA - Johnson Space Center. System ekspertowy - jest to program lub zestaw programów komputerowych wspomagający korzystanie z wiedzy i ułatwiający podejmowanie decyzji. Systemy ekspertowe mogą wspomagać bądź zastępować ludzkich ekspertów w danej dziedzinie, mogą dostarczać rad, zaleceń i diagnoz dotyczących problemów tej dziedziny.

Z czego składa się system ekspertowy? 1.Explanation facility wyjaśnia proces wnioskowania, który doprowadził do danej konkluzji. 2.Knowledge acquisition facility dostarcza sposobów do pozyskania i przechowywania wiedzy pozyskanej od eksperta w bazie wiedzy (knowledge base). 3.Knowledge base - przechowuje wiedzę w postaci reguł. 4.Working memory - baza faktów wykorzystywanych przez reguły. 5.Inference engine - decyduje które reguły, i w jakiej kolejności zostaną uruchomione. 6.Agenda - lista reguł, których warunki spełnione są przez fakty znajdujące się w pamięci roboczej (working memory) 7.Pattern matcher - porównuje reguły i fakty.

Z czego składa się system ekspertowy? 1.Explanation facility wyjaśnia proces wnioskowania, który doprowadził do danej konkluzji. 2.Knowledge acquisition facility dostarcza sposobów do pozyskania i przechowywania wiedzy pozyskanej od eksperta w bazie wiedzy (knowledge base). 3.Knowledge base - przechowuje wiedzę w postaci reguł. 4.Working memory - baza faktów wykorzystywanych przez reguły. 5.Inference engine - decyduje które reguły, i w jakiej kolejności zostaną uruchomione. 6.Agenda - lista reguł, których warunki spełnione są przez fakty znajdujące się w pamięci roboczej (working memory) 7.Pattern matcher - porównuje reguły i fakty.

Fakty i reguły Fakt: Stal jest stopem żelaza i węgla Reguła: Jeśli w stali jest domieszka niklu to hartowanie jest ułatwione Fakt: Adam jest studentem metalurgii Reguła: Jeśli student jest studentem metalurgii to wie co to jest hartowanie

Programowanie w CLIPS Fakty + Reguły

Programowanie w CLIPS Fakty + Reguły Fakt: (assert (light-color green)) Reguła: (defrule is-driving-possible (light-color green) => (assert (driving possible))

Programowanie w CLIPS Fakty: - niemodyfikowalne (modyfikacja faktu oznacza jego usunięcie i stworzenie nowego) - mogą być tworzone - mogą byś usuwane Reguły: - składają się z poprzedników (LHS) i następstw (RHS) - reguła zostaje uruchomiona gdy spełniony jest jest poprzednik/poprzednicy (LHS) - następstwem (RHS) reguły jest najczęściej modyfikacja lub dodanie nowych faktów do pamięci roboczej (working memory)

Programowanie w CLIPS Produkcja faktów: Fakty uruchamiają reguły, które produkują nowe fakty, które uruchamiają reguły, które... itd. itd. Przypomnienie: Agenda - lista reguł, których warunki spełnione są przez fakty znajdujące się w pamięci roboczej (working memory). Program kończy się gdy na agendzie nie ma już reguł. Wynikiem działania programu jest lista faktów w pamięci roboczej.

Programowanie w CLIPS Wiedza reprezentowana jest przez: - unordered facts (fakty nieuporządkowane) - ordered facts (fakty uporządkowane) - rules (reguły)

Fakty Fakty uporządkowane (ordered facts): (jan kowalski) (pogoda słoneczna) (stal niklowana) (data-godzina 12.12.2011 19:30) (lista-numerow 2 32 3 5 6 7 34 32 4) Fakty nieuporządkowane (unordered facts): (person (name Jan Kowalski) (age 23 ) (eye-color blue) (hair-color brown))

Fakty W przypadku faktów uporządkowanych by odnieść się do danego pola/symbolu należy znać jego pozycję. W przypadku faktów nieuporządkowanych używa się nazwy slotu.

Fakty Fakty nieuporządkowane (unordered facts): Struktura (definicja faktu): Typ faktu: person (deftemplate person "An example deftemplate" (slot name) (slot age) (slot eye-color) (slot hair-color))

Fakty Fakty nieuporządkowane (unordered facts): Tworzenie (dodawanie) faktów: (assert (person (name John Q. Public) (age 23 ) (eye-color blue) (hair-color brown)))

(deftemplate question (slot factor (default none)) (slot question-to-ask (default none)) (slot has-pre-condition (type SYMBOL) (default no)) (multislot choices (default yes no)) (multislot range (type INTEGER))) Słowa kluczowe: - deftemplate: definicja faktu - slot: pojedynczy symbol - multislot: wiele symboli - type: typ symbolu - default: wartość domyślna

Fakty Dodawanie faktów: (assert <fakt>) Usuwanie faktów: (retract <indeks-faktu>) Modyfikowanie (uwaga: = usunięcie i dodanie nowego) (modify <indeks-faktu> <slot-modifier>+) gdzie <slot-modifier> to: (<slot-name> <slot-value>) np. (modify 0 (age 23) (name Adam Kowalski))

Fakty Wyświetlenie faktów: (facts) Usunięcie wszystkich faktów i ponowne dodanie tych z deffacts (o tym zaraz): (reset) Usunięcie faktów oraz reguł!: (clear)

Fakty Hurtowe dodawanie faktów danego typu (unordered facts): (deffacts people "Znajomi" (person (name "Adam Kowalski") (age 24) (eye-color blue) (hair-color black)) (person (name "Jan Kowalski") (age 24) (eye-color blue) (hair-color black)) (person (name "Katarzyna Nowak") (age 36) (eye-color green) (hair-color red))) Przydatne, gdy chcemy na początku programu dodać zbiór faktów, o których wiemy, że są prawdziwe (tzw. Initial knowledge)

Reguły Składnia: (defrule nazwa Left-Hand-Side (LHS) (antecedent/poprzednik) => Right-Hand-Side (RHS) (consequent/konsekwencja) ) LHS musi być spełnione (true), by reguła została umieszczona na agendzie. RHS określa czynności wykonywane przez regułę.

Reguły IF LHS THEN RHS

Reguły IF alarm pożarowy THEN podejmij-akcje uaktywnij zraszacze Uwaga: przed zdefiniowaniem reguły wszystkie używane przez nią fakty nieuporządkowane (deftemplate) muszą być zdefiniowane. (deftemplate alarm (slot typ)) (deftemplate wykonaj-akcje (slot akcja)) (defrule akcja-p.pożarowa Przykład reguły" (alarm (typ pożarowy)) => (assert (podejmij-akcje (akcja uaktywnij-zraszacze))) )

Reguły (defrule akcja-p.pożarowa Przykład reguły" (alarm (typ pożarowy)) => (assert (wykonaj-akcje (akcja uaktywnij-zraszacze))) ) Czy tak stworzona reguła zostanie umieszczona na agendzie (wykonana)? Nie. Stanie się to dopiero, gdy dodamy fakt: (assert alarm (typ pożarowy)) Rezultat wykonania reguły? Dodanie (produkcja) nowego faktu: (wykonaj-akcje (akcja uaktywnij-zraszacze))

Reguły Składnia LHS: (defrule nazwa (and (warunek 1) (warunek 2) ) => (defrule nazwa (or (warunek 1) (warunek 2) ) =>...

Reguły Składnia RHS: (defrule nazwa... => (tworzenie/usuwanie/modyfikowanie faktu; wypisanie;..) (tworzenie/usuwanie/modyfikowanie faktu; wypisanie;..)...

Reguły Ciąg zdarzeń: (defrule akcja-p.pożarowa Przykład reguły" (alarm (typ pożarowy)) => (assert (wykonaj-akcje (akcja uaktywnij-zraszacze))) ) (defrule uruchamianie-zraszaczy (wykonaj-akcje (akcja uaktywnij-zraszacze) (prąd wyłączony) => (assert (uruchom dopływ wody)) (assert (odblokuj zraszacze))

Reguły Zmienne reguł i zakresy: (defrule start-up (osoba (wiek?a&:(>?a 30)&:(<?a 40)) (imie $?n) ) => (printout t "Witaj "?n ". Masz"?a "lat" crlf)) Zmienne:?a jeden slot,?n wiele slotów (multislot), bo zdefiniowana jako $?n (pole imie w deftemplate osoba jest multislot może mieć wiele symboli) Zakres:?a&:(>?a 30)&:(<?a 40) zmienna?a, taka że?a > 30 oraz?a < 40

Reguły (defrule start-up (osoba (wiek?a&:(>?a 30)&:(<?a 40)) (imie $?n) ) => (printout t "Witaj "?n ". Masz"?a "lat" crlf)) Reguła nie zadziała: (assert (osoba (wiek 22) (imie Jan Kowalski)) Reguła zadziała: (assert (osoba (wiek 34) (imie Jan Kowalski))

Reguły Modyfikowanie i usuwanie faktów: (retract <indeks-faktu>) (modify <indeks-faktu> ) Jak wewnątrz reguły otrzymać indeks faktu?

Reguły (deftemplate parametry (slot temperatura) (slot czas)) (defrule obniz-temperature-hartowania?p <- (parametry (temperatura?temperatura) (czas?czas) ) (stop-to stal niklowana) => (modify?p (temperatura (-?temperatura 200) ) ) (assert (hartowanie)) ) Pobranie indeksu faktu:?p <- (parametry ) Analogicznie usuwanie faktu: (retract?p)

Uwaga na notację!!!: NIE : (a + b) TAK : (+ a b)

Skąd CLIPS wie, które reguły w danym momencie ma uruchomić? Przypomnienie: 3.Knowledge base - przechowuje wiedzę w postaci reguł. 4.Working memory - baza faktów wykorzystywanych przez reguły. 5.Inference engine - decyduje które reguły, i w jakiej kolejności zostaną uruchomione. 6.Agenda - lista reguł, których warunki spełnione są przez fakty znajdujące się w pamięci roboczej (working memory) 7.Pattern matcher - porównuje reguły i fakty. Uruchamianie programu: (run)