background image

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 
 
 
 
 
 
 
 
 

 

 

 

background image

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 
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 -

background image

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 -

background image

−  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 -

background image

(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 -

background image

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 -


Document Outline