CW2.PDF

(180 KB) Pobierz
Microsoft Word - M0PP007P00D45-002.doc
Katedra
Podstaw
Konstrukcji
Maszyn
Wydział
Mechaniczny
Technologiczny
Metody Sztucznej
Inteligencji
Politechnika
Śląska
Kierunek studiów MiBM, semestr 4
Prowadzący przedmiot
dr inż. Anna Timofiejczuk
Rok akademicki 2001/02
Instrukcja do ćwiczeń laboratoryjnych
Ćwiczenie 2
Temat
Zapis reguł dokładnych przy użyciu języka
CLIPS
Opracowała: dr inż. A. Timofiejczuk
ul. Konarskiego 18a
44-100 Gliwice
tel. 237 1467
fax 237 1360
http://kpkm.mt.polsl.gliwice.pl
M0PP0700D45-002
Gliwice 2002-02-15
- 1/6 -
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z systemem CLIPS oraz nabycie umiejętności
budowania dokładnych reguł wnioskowania i konstruowania systemów doradczych.
Język CLIPS został opracowany przez NASA/Jonson Space Center w 1984 roku i znalazł
zastosowanie w budowie systemów ekspertowych, rozpoznawaniu obrazów oraz rozumieniu
scen. CLIPS jest opracowany w języku programowania C a jego nazwa pochodzi od skrótu C
Language Integrated Production System . Mechanizmy wnioskowania języka CLIPS realizują
wnioskowanie w przód. Program napisany w CLIPSie jest bazą wiedzy złożoną z reguł i
stwierdzeń.
2. Wprowadzenie
Wybrane elementy języka Clips
CLIPS jest językiem przeznaczonym do tworzenia aplikacji nazywanych systemami
doradczymi. Wyróżnia się dwa sposoby reprezentacji wiedzy w CLIPSie:
reguły,
funkcje.
Programowanie w CLPISie związane jest z następującymi pojęciami: stwierdzenie,
zmienna, reguła, funkcja, mechanizm wnioskowania.
Podstawowymi elementami CLIPSa są:
lista stwierdzeń (w dokumentacji stwierdzenia nazwane są faktami ang. fact )
baza wiedzy
mechanizm wnioskowania.
STWIERDZENIA
Mechanizm wnioskowania, na podstawie listy stwierdzeń, decyduje o tym, które reguły
czynne i kiedy powinny być wywołane. Regułą czynną jest reguła, której przesłanka jest
spełniona.
Stwierdzenia decydują o tym, które reguły są regułami czynnymi. Najważniejszym
stwierdzeniem jest stwierdzenie initial-fact , bez którego proces wnioskowania nie może
zostać uruchomiony. Stwierdzenie to może być wprowadzane na listę na dwa sposoby
pokazane w poniższej tabeli.
Program napisany języku CLIPS nie może zostać wykonany bez listy stwierdzeń.
Wprowadzenie ich na listę stwierdzeń i usuwanie z listy jest możliwe za pomocą
następujących poleceń:
Polecenie
Działanie
Przykład
Uwagi
assert
wprowadzanie
stwierdzenia na listę
(assert( fakt ))
(assert (initial-
fact))
lub (reset)
stwierdzenie inicjalizujące jest
wymagane w większości
systemów doradczych, zwykle
pierwsza reguła systemu
sprawdza istnienie tego
stwierdzenia
deffacts
wprowadzenie bloku
stwierdzeń na listę
(deffact blok
( fakt1 )
( fakt2 ))
wprowadzanie bloku stwierdzeń
na listę odbywa się wyłącznie za
pomocą polecenia (reset)
M0PP07P00D45-002
Gliwice 2002-02-15
2/6
44749243.001.png
retract
usuwanie pojedynczego
stwierdzenia z listy
(retract 1)
undeffacts
usuwanie bloku
stwierdzeń z listy
(undeffacts
blok )
reset
usunięcie wszystkich
stwierdzeń z listy i
wprowadzenie
stwierdzenia
inicjalizującego
(reset)
polecenie powoduje
wprowadzenie na listę stwierdzeń
stwierdzenia inicjalizującego i
zdefiniowanie bloku stwierdzeń
clear
usunięcie wszystkich
stwierdzeń i reguł z listy
(clear)
facts
wyświetlenie stwierdzeń
o indeksie większym i
równym polu „index”
(facts 2)
pole index=2
REGUŁY
Reguły są jedną z najczęściej stosowanych reprezentacji wiedzy w systemach doradczych.
Ogólną postać reguły można zapisać następująco:
Reguła:
if
PRZESŁANKA
then KONKLUZJA
Przesłanka może zawierać pewną liczbę stwierdzeń połączonych funktorami
logicznymi. Jeżeli wszystkie stwierdzeniach i konkluzja występujące w regule są dokładne
(nie przybliżone lub rozmyte) to reguła jest regułą dokładną .
Ze względu na sposób uzyskiwania ostatecznej konkluzji w procesie wnioskowania
rozróżnia się dwa rodzaje reguł:
reguły proste, których nie można rozłożyć na reguły prostsze,
reguły złożone, które są odpowiednikiem zastosowania kilku reguł prostych
Regułę postaci „IF x THEN y” w CLIPSie zapisuje się następująco:
(defrule R1 „Reguła 1” (x) => (assert (y))
Definiowanie reguł, ich przeglądanie i usuwanie (w CLIPSie) jest mozliwe za pomocą wiąże
się z następujących poleceń:
Polecenie
Działanie
Przykład
Uwagi
defrule
definicja reguły i wprowadzenie
jej na listę
(defrule R1
(initial-fact)
=>
(assert(start))
ppdefrule
wyświetlenie treści reguły
(ppdefrule R1)
list-defrules
wyświetlenie listy reguł
(list-defrules)
undefrule
usunięcie reguły z listy reguł
(undefrule R1)
M0PP07P00D45-002
Gliwice 2002-02-15
3/6
44749243.002.png 44749243.003.png 44749243.004.png
Reguła składa się z dwóch części:
przesłanki, po lewej stronie znaku => nazywanej (LHS),
konkluzji, po prawej stronie znaku => nazywanej (RHS).
Stwierdzenie występujące w części LHS powinno być zdefiniowane przed uruchomieniem
reguły. Brak odpowiednich stwierdzeń na liście powoduje wystąpienie błędu.
Stwierdzenie występujące w części LHS mogą być połączone operatorami logicznymi AND,
OR. Stosowany jest zapis, w którym operator poprzedza argumenty.
(defrule R1
(or (fakt1) (fakt2))
=>
(assert (fakt3)))
Sprawdzanie wartości zmiennej za pomocą stwierdzenia można zrealizować w następujący
sposób:
Reguła sprawdza czy zmienna „?p” ma wartość „4” (zapis ?p oznacza zmienną -patrz punkt
ZMIENNE).
(defrule sprawdzanie
(liczba ?p=4)
=>
(print t „Zmienna o nazwie - p ma wartość 4” crlf))
gdzie zapis (liczba ?p=4) oznacza stwierdzenie o nazwie „liczba”, którego wartość logiczna
jest sprawdzana w regule. Stwierdzenie „liczba„ ma postać ”p równa się 4”. Jeżeli
stwierdzenie to jest prawdziwe na ekranie wypisywany jest komunikat: „Zmienna o nazwie -
p ma wartość 4”.
Usuwanie stwierdzeń z listy stwierdzeń za pomocą reguły może odbywać się tylko
poprzez usuwanie zmiennych, do których wcześniej przypisano te stwierdzenia:
gdzie ?x <- ( fakt ) oznacza przypisanie stwierdzenia fakt zmiennej ?x.
(defrule usuwanie
?x <- (fakt)
=>
(retract ?x))
ZMIENNE
Nazwa zmiennej w języku CLIPS rozpoczyna się od znaku zapytania i zapisuje się ją
w postaci: ?x, ?y, ?wynik.
Do nadawania wartości zmiennej służy funkcja „bind”, która ma następującą postać:
(bind arg1 arg2)
Funkcje operatorowe, takie jak *,/,+,-, mają postać:
(* arg1 arg2)
Przykłady wykorzystania zmiennych:
M0PP07P00D45-002
Gliwice 2002-02-15
4/6
(defurle start
; sprawdzanie istnienia stwierdzenia
; inicjalizującego
=>
; symbol słowa „then”
(printout t „Podaj liczbę: „ crlf)
;wypisanie na ekranie komunikatu „Podaj
liczbę”;
(assert (liczba (read ))))
; definicja stwierdzenia „liczba”
(defrule wynik
; definicja reguły „wynik”
?x <- (liczba ?p)
; przypisanie zmiennej ?x stwierdzenia „liczba”
=>
(bind ?wynik (* ?p 2))
; przypisanie zmiennej „?wynik” wartości
; zmiennej „?p” pomnożonej przez 2
(printout t ?p „*p 2 = „ ?wynik crlf)
; wypisanie na ekranie wyniku mnożenia
(retract ?x)
; usunięcie stwierdzenia „liczba”, za pomocą
; zmiennej „?x”
(assert (wynik ?wynik)))
; wprowadzenie na listę stwierdzeń nowego
; stwierdzenia o nazwie „wynik” i wartości
równej
; wynikowi mnożenia
Opis używanego oprogramowania
Ćwiczenie jest realizowane przy zastosowaniu kompilatora języka CLIPS ver. 6.0
działającego w środowisku Windows NT.
3. Sposób przeprowadzenia ćwiczenia
Przygotowanie do ćwiczenia
Przygotowanie do ćwiczenia obejmuje
zapoznanie się z punktami 1 i 2 instrukcji, pojęciami takimi jak: reguła, stwierdzenie
(fakt), system doradczy, mechanizm wnioskowania, dialog z użytkownikiem oraz z
podstawowymi pojęciami języka CLIPS i sposobem reprezentacji wiedzy za pomocą
reguł dokładnych. Przygotowanie do ćwiczenia będzie oceniane na początku zajęć w
formie krótkiego sprawdzianu.
przygotowanie w formie pisemnej zapisu określonego wcześniej (przez prowadzącego)
tematu w postaci reguł dokładnych. Opracowanie wykonane przez każdego studenta
indywidualnie powinno być oddane na początku zajęć, co również podlega ocenie.
Sposób przeprowadzenia ćwiczenia
1. Uruchomić środowisko MS Windows
2. Uruchomić interpreter Clips (wg wskazań prowadzącego)
3. Załadować plik zawierający przykładowy system doradczy (wskazany przez
prowadzącego) do systemu CLIPS (polecenie Load Constructs z menu File )
4. Załadować stwierdzenie inicjalizujące (polecenie Reset z menu Execution )
5. Uruchomić proces wnioskowania (polecenie Run z menu Execution )
6. Prześledzić działanie uruchomionego systemu doradczego oraz przetestować zapisane w
nim reguły
7. Zmodyfikować zapisany system doradczy wprowadzając dodatkowe reguły sprzeczne oraz
nadmiarowe
8. Sprawdzić działanie zmodyfikowanego systemu.
M0PP07P00D45-002
Gliwice 2002-02-15
5/6
(initial-fact)
; początek definicji reguły o nazwie start
Zgłoś jeśli naruszono regulamin