System ekspertowy JESS

Podobne dokumenty
Rozdzia l 3. Laboratorium 3. danych zawierajac

Programowanie w CLIPS

Paradygmaty programowania. Paradygmaty programowania

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

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

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Paradygmaty programowania. Paradygmaty programowania

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

Powtórka algorytmów. Wprowadzenie do języka Java.

Wprowadzenie do języka Java

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Java jako język programowania

Paradygmaty programowania

Programowanie w CLIPS

Zaawansowane aplikacje WWW - laboratorium

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Powtórka algorytmów. Wprowadzenie do języka Java.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie obiektowe zastosowanie języka Java SE

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Programowanie obiektowe

Informatyka I. Wyk lad II Algorytm, podstawowe notacje, typy danych i wyrażenia

Podstawy i języki programowania

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

1 Podstawy c++ w pigułce.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Podstawy i języki programowania

Tablice (jedno i wielowymiarowe), łańcuchy znaków

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF

Funkcje systemu Unix

Podstawy, środowisko JDK, kompilacja programów z linii poleceń

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

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

JDK można pobrać ze strony

1 Przygotował: mgr inż. Maciej Lasota

Spis treści. 1 Java T M

Rozdział 4 KLASY, OBIEKTY, METODY

WPROWADZENIE DO JĘZYKA JAVA

Java EE produkcja oprogramowania

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

SYSTEM DIAGNOSTYCZNY OPARTY NA LOGICE DOMNIEMAŃ. Ewa Madalińska. na podstawie prac:

Wstęp do programowania. Wykład 1

Rys. 1 Schemat blokowy systemu ekspertowego

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Rys. 1 Budowa systemu ekspertowego

1. Podstawy budowania wyra e regularnych (Regex)

Platformy Programistyczne Podstawy języka Java

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Programowanie komputerowe. Zajęcia 4

Programowanie obiektowe

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

Języki i metody programowania Java. Wykład 2 (część 2)

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wyk lad 4 Dzia lania na macierzach. Określenie wyznacznika

Programowanie obiektowe

Katalog książek cz. 2

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

ALGORYTMY I STRUKTURY DANYCH

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Programowanie obiektowe

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Trochę o plikach wsadowych (Windows)

Metody numeryczne Laboratorium 2

Język JAVA podstawy. Wykład 3, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wyk lad 3 Wyznaczniki

Wykład 4: Klasy i Metody

Podstawy programowania obiektowego

Dokumentacja do API Javy.

Technologie Informacyjne - Linux 3

Ćwiczenie 1. Przygotowanie środowiska JAVA

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Uruchamianie SNNS. Po uruchomieniu. xgui & lub snns & pojawia si e okno. programu. Symulator sztucznych sieci neuronowych SNNS 1

KOLOKWIUM PODSTAWY PROGRAMOWANIA

Programowanie w Internecie. Java

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

9 10 = U1. Przykład dla liczby dziesiętnej ( 9): negacja 1001= =10110 U1. Podsumowując: w zapisie dziesiętnym

Wykład 1: Wprowadzenie do technologii Java

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Podstawy języka Java. przygotował:

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Języki i techniki programowania Ćwiczenia 2

Kontenery i komponenty graficzne

Transkrypt:

System ekspertowy JESS 1. Informacje wst epne System ekspertowy Jess jest w ca lości napisany w j ezyku Java. Jest to tzw. business rules engine, czyli biznesowy silnik regu l. Inaczej, jest to oprogramowanie, które pozwala waczyć do systemu dowolne regu ly biznesowe do bazy wiedzy systemu, a nast epnie przeprowadzić wnioskowanie dla podanych aktualnych danych. Jest to system szkieletowy, który umożliwia budowanie dowolnych systemów ekspertowych, w tym nawet bardzo z lożonych. System Jess w wersji 7.0 jest kompatybilny ze wszystkimi wersjami Javy, zaczynajac od JDK 1.4, aż do wersji JDK 1.6. Do używania zintegrowanego środowiska programistycznego, nazwanego w tym przypadku JessDE, wymaga Eclipse SDK. Standardowo jest on dostarczany na platform e Eclipse. Sam j ezyk Jess bardzo przypomina postać j ezyka Lisp. Stad Jess może być używany jako samodzielny program. Np. napisane C:\Jess70p1>jess.bat uzyskuje si e znak zach ety Jess> Jess> (+ 2 3) 5 Istnieje też możliwość dost epu do funkcji Jessowych, co gwarantuje klasa jess.rete. Każdy obiekt jess.rete posiada swoja w lasn a przestrzeń pami eci roboczej, agend e, regu ly. Aby wkomponować Jessa w aplikacj e javowa wystarczy stworzyć jeden lub wi ecej wspomnianych powyżej obiektów i w laściwie nimi operować. Ilustruje to poniższy przyk lad: import jess.*; public class ExSquare { 1

} public static void main(string[] unused) { try { Rete r = new Rete(); r.eval( (deffunction square (?n) (return (*?n?n))) ); Value v = r.eval( (square 3) ); System.out.println(v.intValue(r.getGlobalContext())); } catch (JessException ex) { System.err.println(ex); } } Po uruchomieniu powyższego programu otrzymuje si e: C:\ > java ExSquare 9 2. Podstawy programowania w j ezyku Jess Symbole sa sednem koncepcji j ezyka Jess. Symbole moga zawierać wszystkie litery, cyfry, wszystkie znaki ASCII. Oprócz tego w symbolach sa rozróżnialne duże i ma le litery. Zaawansowane symbole u?ywaja zarówno liter, jak i cyfr. Lańcuchy znaków sa oznaczane przez podwójny cudzys lów. Symbol backslash (\) umożliwia zapisanie znaku cudzys lowia wewnatrz konstruowanego lańcucha. W lańcuchach nie ma znaków ucieczki, jak ma to miejsce w Javie. Ucieczk e uzyskuje si e przechodzac do nowej linii. Fundamentalnym elementem sk ladni j ezyka Jess jest lista. Lista zawsze zawiera nawiasy okrag le - lewy i prawy. Przyk lady listy sa zawarte poniżej: (+ 3 4) Komentarze zaczynaja si e od znaku średnika (;) i kończa si e wraz z końcem linii. Oprócz tego można stosować komentarze blokowe z j ezyka C. Wywo lania funkcji w j ezyku Jess sa prostymi listami, np. 2

Jess> (+ (+ 2 3) (* 3 3)) 14 Zmienne w j ezyku Jess sa identyfikatorami poprzedzonymi znakiem zapytania. Znak zapytania jest cz eści a nazwy zmiennej. Nazwa zmiennej może być dowolna kombinacja liter, cyfr, myślników itp. Na przyk lad Jess> (bind?x wartosc ) wartość Jess>?x wartość 3. Tworzenie w lasnych regu l W j ezyku Jess można tworzyć regu ly przypominajace dzia lanie if then. Przyk ladowa bardzo prosta regu la w tym j ezyku ma postać: Jess> (defrule powitanie-malucha Pozdrowienia dla dzieciaczków! (osoba {wiek < 3}) (printout t witaj maluszku crlf)) Powyższa regu la sk lada si e z dwóch cz eści, oddzielonych symbolem, który można odczytać jako then. Pierwza sk ladow a jest model sprawdzajacy, czy osoba jest poniżej 3 lat. Druga cz eści a jest odwo lanie do funkcji println. Obiekt osoba może być zdefiniowany nast epuj aco: Jess> (deftemplate osoba (slot Imie) (slot Nazwisko) (slot wiek) Napisany powyżej skrypt b edzie aktywowany, gdy ukaże obiekt osoba w obszarze pami eci roboczej. Przyk lad ilustrujacy dzia lanie regu l w Jess. Jess> (deftemplate osoba (slot Imie) (slot Nazwisko) (slot Wiek)) 3

TRUE Jess> (watch all) TRUE Jess> (reset) = Focus MAIN = f-0 (MAIN::initial-fact) TRUE Jess> (defrule witaj-malutki Specjalne pozdrowienie dla maluchow (osoba {wiek < 3} ) (printout t witam malutki! crlf)) MAIN::witaj-malutki: +1+1+1+t TRUE Jess> (assert (osoba (wiek 2))) = f-1 (MAIN::osoba (Imie nil) (Nazwisko nill) (wiek 2)) = Activation: MAIN::witaj-malutki : f-1 <Fact-1> Rozpocz ecie wykonywania skryptu rozpoczyna si e od komendy reset. Nast epnie, gdy zostanie dodana odpowiednia regu la (tutaj sprawdzanie wieku), system wyświetla informacj e o poprawnym wprowadzeniu definicji w postaci +1+1+t. Na końcu dodaje si e dane wg modelu osoba. Teraz można uruchomić t e aplikacj e, co nast epuje dzi eki poleceniu run. Zapisuje si e to w postaci: Jess> (run) FIRE 1 MAIN::witaj-malutki f-1 Witam malutki! <== Focus MAIN 1 4. Przebieg ćwiczenia 4

1) Uruchomić Jess. Sprawdzić jak dzia laj a listy z dzia laniami dodawania, mnożenia itp. Napisać komentarze, identyfikatory zmiennych itp. 2) Napisać w lasne regu ly oraz definicje szablonu. 3) Uruchomić przyk lad zamieszczony powyżej. Po jego uruchomieniu zmienić operator, np. Jess> (defrule nastolatek) (osoba {wiek > 12 && wiek < 20} (Imie?imie)) (print t?imie ma?wiek lat. crlf)) 4) Uruchomić przyk lad, który pozwala sprawdzić, kto jest kim w rodzinie. Jess> (reset) Jess>(clear) Jess> (deftemplate osoba (slot imie) (slot matka) (slot ojciec)) (slot plec) Jess>(assert (osoba (imie ania) (plec kobieta) (matka ewa) (ojciec adam))) (assert (osoba (imie kasia) (plec kobieta) (matka ania) (ojciec krzysztof))) (assert (osoba (imie pawel) (plec mezczyzna) (matka ewa) (ojciec adam))) (assert (osoba (imie piotr) (plec mezczyzna) (matka kasia) (ojciec pawel))) Jess>(defrule syn (or (osoba (imie?x) (plec mezczyzna) (ojciec?y)) (osoba (imie?x) (plec mezczyzna) (matka?y))) (printout t?x jest synem?y crlf)) Jess>(defrule corka (or (osoba (imie?x) (plec kobieta) (ojciec?y)) (osoba (imie?x) (plec kobieta) (matka?y))) 5

(printout t?x jest synem?y crlf)) Jess>(defrule babcia (and (osoba (imie?x) (matka?y)) (or (osoba (imie?z) (matka?x)) (osoba (imie?z) (ojciec?x))) (printout t?y jest babcia?z crlf)) Jess>(run) 6