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

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

Programowanie w CLIPS

Programowanie w CLIPS

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

Rys. 1 Budowa systemu ekspertowego

Programowanie w logice

1 Podstawy c++ w pigułce.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie w języku C++ Grażyna Koba

Zmienne, stałe i operatory

Paradygmaty programowania

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Języki programowania zasady ich tworzenia

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wykonywanie działań matematycznych.

Języki programowania deklaratywnego

Podstawy programowania skrót z wykładów:

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

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Programowanie w języku Python. Grażyna Koba

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Systemy ekspertowe : program PCShell

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Algorytmika i Programowanie VBA 1 - podstawy

Języki i metodyka programowania. Wprowadzenie do języka C

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

1 Podstawy c++ w pigułce.

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

Języki programowania deklaratywnego

Język C++ zajęcia nr 2

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

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

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Wstęp do programowania. Wykład 1

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Mikrokontroler ATmega32. Język symboliczny

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

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

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

ZMIENNE. Podstawy PHP

Wykład 9: Polimorfizm i klasy wirtualne

Wprowadzenie do Scilab: podstawy języka Scilab

Zapis algorytmów: schematy blokowe i pseudokod 1

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Wykład 4. Środowisko programistyczne

Definicje. Algorytm to:

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

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

2 Przygotował: mgr inż. Maciej Lasota

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

1 Przygotował: mgr inż. Maciej Lasota

Kadry Optivum, Płace Optivum

Pracownia Komputerowa wykład III

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wstęp do programowania

Należy ściągnąć oprogramowanie Apache na platformę

Programowanie, część I

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania w języku C

Dodawanie i modyfikacja atrybutów zbioru

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Układy VLSI Bramki 1.0

Podstawy Kompilatorów

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Pascal - wprowadzenie

4. Funkcje. Przykłady

Opis podstawowych funkcji PC- SHELLa

PROLOG INNE PRZYKŁADY MACIEJ KELM

Wykład 2 Składnia języka C# (cz. 1)

Algorytm. a programowanie -

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programista samouk : profesjonalny przewodnik do samodzielnej nauki kodowania / Cory Althoff. Gliwice, copyright Spis treści

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Transkrypt:

Systemy ekspertowe Wykład 5 Wprowadzenie do CLIPSa Programowanie systemów ekspertowych Joanna Kołodziejczyk 2016 Joanna Kołodziejczyk Systemy ekspertowe 2016 1 / 26

Historia Plan wykładu 1 Historia 2 3 Maszyna wnioskująca Joanna Kołodziejczyk Systemy ekspertowe 2016 2 / 26

Historia Początki 1984r. NASA opracowanie prototypu. wersja 1.0 napisana w C do tworzenia sysytemów ekpsertowych 1985r. wersja 3.0 wraz z dukumentacją upubliczniona od wersji 6.1 dodatki w postacie programowania proceduralnego i obiektowego. Joanna Kołodziejczyk Systemy ekspertowe 2016 3 / 26

Historia Cechy języka Reprezentowanie wiedzy CLIPS wspiera trzy różne paradygmaty: regułowy: pozwala reprezentować wiedzę jako heurystyki lub ogólne zasady oparte na doświadczeniu, które podają zbiór działań, jakie należy wykonać w danej sytuacji obiektowy: pozwala modelować złożone systemy jako modularne komponenty proceduralny: możliwości języka C. Przenośność Może być przenoszony na dowolny system posiadający kompilator języka ANSI C; przenośność zapewnia dostarczany z systemem CLIPS kod źródłowy, który może być modyfikowany stosownie do potrzeb użytkownika. Joanna Kołodziejczyk Systemy ekspertowe 2016 4 / 26

Historia Cechy języka Integracja/Rozszerzalność Kod w języku CLIPS można wbudować wewnątrz kodu proceduralnego, wywoływanego jako podprogram, i zintegrowanego z takimi językami, jak C, Java, FORTRAN, ADA Interakcja z użytkownikiem Standardowa wersja języka CLIPS zawiera interakcyjne środowisko opracowywania programu, obejmujące zintegrowany edytor, narzędzia dla uruchamiania oraz natychmiastową pomoc. Dla środowisk Macintosh, Windows 3.1 i X Window opracowano rozwijalne menu, zintegrowane edytory i system wielookienkowy. Joanna Kołodziejczyk Systemy ekspertowe 2016 5 / 26

Historia Cechy języka Weryfikacja/Walidacja CLIPS zawiera szereg cech dla wsparcia weryfikacji i walidacji systemów ekspertowych: modularne projektowanie i podział bazy wiedzy, statyczną i dynamiczną kontrolę atrybutów pól i argumentów funkcji oraz analizę semantyczną wzorcowych reguł dla ustalenia, czy niespójności mogłyby przeszkodzić w odpaleniu reguły lub wygenerować błąd. Pełna dokumentacja W pakiecie języka CLIPS znajdziemy obszerną dokumentację, w tym źródłowy podręcznik języka i przewodnik użytkownika. Joanna Kołodziejczyk Systemy ekspertowe 2016 6 / 26

Plan wykładu 1 Historia 2 3 Maszyna wnioskująca Joanna Kołodziejczyk Systemy ekspertowe 2016 7 / 26

Shell Program napisany w języku CLIPS składa się z reguł faktów obiektów. W terminologii języka słowem shell (powłoka) określa się tę jego część, która zawiera podstawowe elementy systemu ekspertowego: 1 Wykaz faktów (fact-list) i wykaz obiektów (instance-list) w pamięci roboczej. 2 Baza wiedzy (knowledge-base) w postaci zbioru reguł oraz agenda reguł. 3 Maszyna wnioskująca (inference-engine). Można zatem powiedzieć, że system ekspertowy napisany w języku CLIPS jest programem sterowanym danymi, ponieważ fakty i obiekty są tymi danymi, które stymulują wykonanie poprzez maszynę wnioskującą. Joanna Kołodziejczyk Systemy ekspertowe 2016 8 / 26

Fakty (assert) Fakty są wprowadzane na listę faktów poleceniem (assert), np. (assert (kolor)) Każdy fakt może być wpisany na listę faktów tylko jeden raz (Clips nie przyjmuje duplikatów). W faktach wykorzystuje się trojakie wartości atomowe: 1 symboliczne zaczynające się od litery, po której opcjonalnie następują: litery, cyfry, myślnik lub znaki podkreślenia 2 literalne zawierające dowolne znaki; zaczynają się one i kończą cudzysłowem, który również wchodzi w skład atomu 3 numeryczne liczby. Joanna Kołodziejczyk Systemy ekspertowe 2016 9 / 26

Fakty (deffacts) W celu uniknięcia konieczności wielokrotnego wpisywania pojedynczych faktów można zdefiniować blok faktów, używając polecenia (deffacts), np. (deffacts skrzyzowanie (status stoj) (status idz)) Po słowie kluczowym (deffacts) podaje się nazwę definiowanego bloku, a następnie fakty (w nawiasach). Cała instrukcja jest ujęta w nawiasy. Fakty zdefiniowane w ten sposób są wprowadzane na listę faktów przez polecenie (reset). Joanna Kołodziejczyk Systemy ekspertowe 2016 10 / 26

Polecenie (reset) (reset) usuwa wszystkie fakty z listy, a następnie wprowadza fakty zdefiniowane przez (deffacts) oraz fakt (initial-fact) z indeksem f-0. (initial-fact) jest użyteczny przy startowaniu programów, ponieważ jest często umieszczony w części warunkowej reguły. Fakty zdefiniowane przez (deffacts) i wprowadzone na listę faktów, przez (reset) mogą być w prosty sposób usunięte z tej listy przez użycie słowa kluczowego (undeffacts) wraz z nazwą bloku faktów np. (undeffacts skrzyzowanie) Polecenie to jednocześnie usuwa zadeklarowany blok faktów Joanna Kołodziejczyk Systemy ekspertowe 2016 11 / 26

Polecenie (retract) i (clear) Służy do usuwania faktu z listy faktów. Fakt można usunąć jedynie przez podanie jego indeksu, nie można natomiast usunąć przez podanie samego faktu. Aby usunąć z listy fakt (filtr) o indeksie f-1, należy wprowadzić (retract 1). Polecenie (clear) usuwa wszystkie fakty z listy faktów. Polecenie to usuwa jednak również reguły. Joanna Kołodziejczyk Systemy ekspertowe 2016 12 / 26

Reguły W CLIPSie reguły mają konstrukcję zbliżoną do instrukcji (IF... THEN...), używanych w powszechnie stosowanych językach programowania. Słowo IF dla uproszczenia jest pomijane, słowo THEN jest zastępowane symbolem =>. Zgodnie z tym zdanie: IF jest filtr THEN wprowadź pasmo jest reprezentowane w CLIPSie przez poniższą regułę: (defrule stop Regula 1 (kolor czerwony) => (assert (status stoj))) Joanna Kołodziejczyk Systemy ekspertowe 2016 13 / 26

Konstrukcja reguły 1 Nawiasy. Cała reguła musi być umieszczona w nawisach. 2 Słowo kluczowe defrule. Oznacza, że następujących dalej ciąg znaków definiuje regułę. 3 Obligatoryjna nazwa reguły. Użycie po raz drugi tej samej nazwy powoduje usunięcie poprzednio wprowadzonej reguły o tej nazwie. Nazwą reguły może być tylko atom zaczynający się od litery. 4 Opcjonalny komentarz (w cudzysłowie). 5 Pole warunków. Może ono zawierać jeden lub więcej warunków. Jeśli wszystkie warunki są spełnione, to reguła przechodzi do zbioru reguł zwanego agendą. Tylko reguły z tego zbioru mogą być później uaktywnione. 6 Symbol => reprezentuje w regule słowo THEN. 7 Lista działań, jakie zostaną podjęte w chwili uaktywnienia reguły. Część reguły znajdująca się po lewej stronie symbolu => nosi nazwę LHS (left hand side), a po prawej stronie RHS (right hand side). Joanna Kołodziejczyk Systemy ekspertowe 2016 14 / 26

Polecenie (run) (run) uruchamia wykonanie programu. Powinno być poprzedzone komendą (reset). Użycie polecenia (run) z liczbą np. (run 25) powoduje uaktywnienie tylko 25 reguł. Tylko te reguły są uaktywniane, które znajdują się w agendzie. Czyli takie, gdy są spełnione wszystkie warunki znajdujące się w polu warunków reguły (LHS). W polu warunków musi wystąpić przynajmniej jeden fakt lub jedna zmienna Reguła może być uaktywniona tylko przez te fakty z listy faktów, które zostały wprowadzone na tę listę po zdefiniowaniu reguły. Reguła po uaktywnieniu nie może być powtórnie uaktywniona przez te same fakty. Aby jakaś reguła została ponownie uaktywniona, użyte przez nią fakty musza być usunięte z listy faktów, po czym jeszcze raz za nią wprowadzone. Joanna Kołodziejczyk Systemy ekspertowe 2016 15 / 26

Operacje na regułach (ppdefrule) podgląd treści reguły. (rules) lista nazw zdefiniowanych reguł. (excise) usuwanie reguły, np. (excise stop) Joanna Kołodziejczyk Systemy ekspertowe 2016 16 / 26

Kontrola wykonywania programów Polecenie (watch) umożliwia kontrolę wykonywania programu. Polecenia włączają sygnalizację podczas: (watch facts) wprowadzenia faktów i usuwania faktów (watch rules) wykonywania reguł (watch activations) - uaktywniania reguł Polecenie (unwatch) wraz ze spcecyfikacją (unwatch facts) (unwatch rules) (unwatch activations) anuluje działanie polecenia (watch). Joanna Kołodziejczyk Systemy ekspertowe 2016 17 / 26

Zmienne Nazwy zmiennych używanych w CLIPSie rozpoczynają się od znaku zapytania, np.:?x?nazwisko Nazwami zmiennych mogą być tylko atomy symboliczne. Przykład: (defrule pisz (nazwisko?x) => (printout t?x crlf)) (assert (nazwisko Kowalski) (nazwisko Nawrocki) (Jan Kabacki)) Do zmiennej?x będą przypisywane kolejno fakty (Kowalski), (Nawrocki). Po wprowadzeniu faktów system uaktywniania regułę dla faktu (Nawrocki) i po raz drugi dla faktu (Kowalski). Joanna Kołodziejczyk Systemy ekspertowe 2016 18 / 26

Inne przykłady (defrule nazwiska (nazw?x) => (assert (pan?x))) (defrule podwojne) (?x?x) => (printout Imie nazwisko pana?x sa jednakowe crlf)) (defrule redukcja?wyrzuc <- (Jan?x) => (printout Z listy został usunięty pan?wyrzuc crlf)) (retract?wyrzuc)) Joanna Kołodziejczyk Systemy ekspertowe 2016 19 / 26

Zmienna anonimowa Zmienna anonimowa (wildcard), reprezentowana jest przez znak zapytania. Ze zmienną anonimową może być związany tylko jeden atom. Wykorzystuje się ją tam, gdzie konieczne jest zaznaczenie obecności atomu, ale jego wartość nie ma znaczenia (defrule imie (Jan?) => (printout Został znaleziony Jan crlf)) Wielokrotna zmienna anonimowa (multi field wildcard) jest symbolizowana przez $? (znak dolara i znak zapytania bez żadnej nazwy). Można do niej przypisać dowolną liczbę (włącznie z zerem) atomów. Joanna Kołodziejczyk Systemy ekspertowe 2016 20 / 26

Wyrażenia matematyczne CLIPS traktuje wszystkie liczby jako zmiennopozycyjne. Elementarne operatory arytmetyczne są następujące: + dodawania, - odejmowania, * mnożenia, / dzielenia, ** potęgowania. Operatory nie mają priorytetów. Wyrażenia arytmetyczne mają postać prefiksową (operator arg arg) (+?x?y) (-?x?y?z) jest równoważne odejmowaniu?x -?y -?z Joanna Kołodziejczyk Systemy ekspertowe 2016 21 / 26

Wprowadzenie wyniku do listy faktów (defrule iloczyn (liczby?x?y) => (assert (=(*?x?y)))) Po wprowadzeniu tej reguły oraz faktu (liczby 5 6) i uruchomieniu programu, na liście faktów znajdą się: f-1 (liczby 5 6) f-2 (30) Joanna Kołodziejczyk Systemy ekspertowe 2016 22 / 26

Maszyna wnioskująca Plan wykładu 1 Historia 2 3 Maszyna wnioskująca Joanna Kołodziejczyk Systemy ekspertowe 2016 23 / 26

Maszyna wnioskująca Algorytm wnioskowania Joanna Kołodziejczyk Systemy ekspertowe 2016 24 / 26

Maszyna wnioskująca Stos Element wprowadzony jako ostatni jest wykorzystywany jako pierwszy (dotyczy to zarówno reguł, jak i faktów). Załóżmy dla uproszczenia, że wszystkie reguły mają w polu warunków jeden, identyczny dla wszystkich fakt. Po wprowadzeniu tego faktu na listę faktów reguły będą kopiowane do agendy. W chwili uruchomienia programu poleceniem (run) reguły będą wykonywane w takiej kolejności, w jakiej są umieszczone w agendzie. Joanna Kołodziejczyk Systemy ekspertowe 2016 25 / 26

Maszyna wnioskująca Literatura CLIPS 6.3 User s Guide http://www.clipsrules.net/?q=documentation Joanna Kołodziejczyk Systemy ekspertowe 2016 26 / 26