Katedra
Podstaw
Konstrukcji
Maszyn
Wydział
Mechaniczny
Technologiczny
Politechnika
Śląska
ul. Konarskiego 18a
44-100 Gliwice
tel. 237 1467
fax 237 1360
http://kpkm.polsl.pl
Metody Sztucznej
Inteligencji
Rok akademicki 20
10/11
Instrukcja do ćwiczeń laboratoryjnych
Ćwiczenie 2
Temat
Zapis reguł dokładnych
przy użyciu języka CLIPS
Opracowała: dr inż. A. Timofiejczuk
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 są
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ę 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)
- 2/6 -
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” (nazwa reguły R1) 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 możliwe za pomocą
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)
Reguła składa się z dwóch części:
- 3/6 -
− 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:
(defrule usuwanie
?x <- (fakt)
=>
(retract ?x))
gdzie ?x <- (fakt) oznacza przypisanie stwierdzenia fakt zmiennej ?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:
- 4/6 -
(defurle start
; początek definicji reguły o nazwie start
(initial-fact)
; 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
Ćwiczenie obejmuje następujące pojęcia: reguła, stwierdzenie (fakt), system doradczy,
mechanizm wnioskowania, dialog z użytkownikiem.
W ramach przygotowania do ćwiczenia należy zapoznać się z podstawowymi pojęciami
języka CLIPS i sposobem reprezentacji wiedzy za pomocą reguł dokładnych oraz
przygotować zapis określonego wcześniej (przez prowadzącego) tematu w postaci reguł
dokładnych.
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.
9. Uruchomić edytor (wg wskazań prowadzącego)
10.Zapisać przygotowane wcześniej reguły w pliku o odpowiednim formacie.
- 5/6 -
11.Załadować plik w interpreterze CLIPSa (polecenie Load Construct z menu File)
12.Uruchomić przygotowany system (polecenie Run z menu Execution)
13.Obserwacja działania systemu.
4. Literatura
[1] Cholewa W., Kaźmierczak J.: Diagnostyka techniczna maszyn. Przetwarzanie cech
sygnałów. Skrypt Politechniki Śląskiej nr 1693,Gliwice 1992.
[2] Cholewa W., Pedrycz W.: Systemy doradcze, Skrypt Politechniki Śląskiej nr 1447.
[3] Mulawka J.J.: Systemy ekspertowe, WNT Warszawa 1996.
- 6/6 -