CLIPS Język programowania obiektowego (C Language Integrated Production System) Przygotował: Damian Kołaczkowski.

1 CLIPS Język programowania obiektowego (C Language Integ...
Author: Elżbieta Leśniak
0 downloads 10 Views

1 CLIPS Język programowania obiektowego (C Language Integrated Production System) Przygotował: Damian Kołaczkowski

2 Opis pracy 1. Informacje ogólne 2. Cechy systemu 3. Podstawowe elementy systemu 4. Podstawowe elementy składni języka Clips Fakty Reguły Kontrola wykonywania programów Zmienne 5. Maszyna wnioskująca 6. Wyrażenia matematyczne Formaty funkcji 7. Budowa reguł 8. COOL (CLIPS Object Oriented Language) 9. Podsumowanie

3 Opracowany w 1984 przez NASA / Johnson Space Center Oparty o język programowania C Mechanizmy wewnętrzne tego języka realizują wnioskowanie w przód Program napisany w Clipsie stanowi bazę wiedzy złożoną z faktów, reguł i obiektów Składnia tego języka jest podobna do składni języka Lisp Działa w cyklu: rozpoznaj warunki, działaj. 90% czasu zajmuje rozpoznawanie warunków i dopasowanie reguł do zaistniałej sytuacji. Informacje ogólne [1] [3] [4]

4 Cechy systemu [1] Możliwość reprezentowania wiedzy Przenośność Integracja/Rozszerzalność Interakcja z użytkownikiem Weryfikacja/Walidacja Pełna dokumentacja

5 Podstawowe elementy systemu ekspertowego [1] 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).

6 Podstawowe elementy składni języka Clips [4] Fakty Reguły Kontrola wykonywania programów Zmienne

7 Fakty [4] Fakty są wprowadzane na listę faktów poleceniem (assert), np. (assert(filtr)) W celu uniknięcia konieczności wielokrotnego wpisywania pojedyńczych faktów można zdefiniować blok faktów, używając polecenia (deffacts), np. ( deffacts skrzyzowanie (status stoj) (status idz) )

8 Fakty cd. Wyróżnia się trzy typy atomów: symboliczne – zaczynające się od litery, po której opcjonalnie następują: litery, cyfry, myślniki lub znaki podkreślenia literalne – zawierające dowolne znaki; zaczynają się one i kończą cudzysłowem, który również wchodzi w skład atomu numeryczne – liczby zmienno pozycyjne.

9 Reguły [4] W Clipsie reguły mają konstrukcję zbliżoną do instrukcji (IF... THEN...) Słowo IF dla uproszczenia jest pomijane, słowo THEN jest zastępowane symbolem = >.

10 Reguły cd. Zdanie: IF jest filtr THEN wprowadź pasmo w Clipsie jest reprezentowane przez poniższą regułę:

11 Reguły cd. Reguła Clipsu składa się z następujących elementów: 1. Nawiasy 2. Słowo kluczowe defrule 3. Obligatoryjna nazwa reguły 4. Opcjonalny komentarz (w cudzysłowie) 5. Pole warunków. 6. Symbol = > 7. Lista działań, jakie zostaną podjęte w chwili uaktywnienia reguły

12 Reguły cd. Część reguły znajdująca się po lewej stronie symbolu => nosi nazwę LHS (left hand side), a po prawej stronie RHS (right hand side). Aby wykonać program, wprowadza się polecenie (run); przedtem należy jednak użyć (reset)

13 Kontrola wykonywania programów [4] Clips umożliwia kontrolę wykonywania programu dzięki zastosowaniu polecenia (watch) Następujące polecenia włączają sygnalizację podczas: (watch facts)- wprowadzania faktów i usuwania faktów, (watch rules)- wykonywania reguł, (watch activations) - uaktywniania reguł.

14 Kontrola wykonywania programów cd. Polecenie (unwatch) wraz ze specyfikacją (unwatch facts) (unwatch rules) (unwatch activations) anuluje działanie polecenia (watch).

15 Zmienne [4] Nazwy zmiennych używanych w Clipsie rozpoczynają się od znaku zapytania, np.: ?x ?nazwisko Nazwami zmiennych mogą być tylko atomy symboliczne.

16 Zmienne cd. Zmienną szczególnego rodzaju jest tzw.zmienna anonimowa (wildcard), reprezentowana przez znak zapytania (defrule imie (Jan ?) => (printout „Zostal znaleziony Jan" crlf))

17 Zmienne cd. Wielokrotna zmienna anonimowa (multifield- wildcard) jest symbolizowana przez $? Można do niej przypisać dowolną liczbę (włącznie z zerem) atomów.

18 Maszyna wnioskująca [4] W Clipsie obowiązuje zasada odkładania na stos Narzędziem, które umożliwia modyfikację kolejności wykonywania reguł, jest deklaracja priorytetu (declare (salience)) podawana wraz z priorytetem, np. 100 (declare (salience 100)) Priorytetem może być liczba całkowita z przedziału (-10000, 10000).

19 Wyrażenia matematyczne [4] Clips traktuje wszystkie liczby jako zmiennopozycyjne. Elementarne operatory arytmetyczne są następujące: + dodawania, - odejmowania, * mnożenia, / dzielenia, ** potęgowania.

20 Wyrażenia matematyczne cd. (operator arg arg) (defrule iloczyn (liczby ?x ?y) => (assert (=(* ?x ?y)))) F1 (liczby 5 6) F2 (30) (bind arg1 arg2)

21 Wyrażenia matematyczne cd. Formaty funkcji Funkcje trygonometryczne i hiperboliczne: Format ( ) sinasinsinhasinh cosacoscoshacosh tanatantanhatanh secasecsechasech cscacsccschacsch cotacotcothacoth

22 Wyrażenia matematyczne cd. Formaty funkcji Funkcje min i max: Format ( ) Funkcja modulo: Format (mod ) Wynikiem jest reszta z dzielenia argl przez arg2 Funkcja wykładnicza: Format (exp )

23 Wyrażenia matematyczne cd. Formaty funkcji Funkcje logarytmiczne: Format ( ) przy czym o postaci log zwraca wartość logarytmu o podstawie natu­ralnej (e), natomiast log10 zwraca wartość logarytmu o podstawie 10. Pierwiastkowanie: Format (sqrt ) Funkcja testująca (test) ma format: (test ( ))

24 Wyrażenia matematyczne cd. Formaty funkcji Logiczne funkcje predefiniowane: !NOT &&AND ||OR Predefiniowane funkcje porównania: =równy (tylko dla liczb) eqrówny (liczby i łańcuchy) ! =nie równy >=większy lub równy >większy

25 Budowa reguł [4] (defrule ulica (or (swiatlo czerwone) (swiatlo pomaranczowe)) = > (printout „Stoj." crlf)) (defrule ulica (or ?fakt

26 Negacja faktu: (not (liczba 100)) Operatory i atomy: (~Janowski) (nazwisko Rawacki|Oleszkiewicz) ?zmienna&:( ) - funkcja predefiniowana lub funkcja użytkownika - zero lub więcej argumentów

27 COOL [1] (CLIPS Object Oriented Language) jest integralną częścią środowiska języka CLIPS, który wspiera pięć podstawowych cech języka obiektowego: abstrakcję, hermetyzację, dziedziczenie, polimorfizm, wiązanie dynamiczne.

28 COOL cd. Posiada 17 predefiniowanych klas systemowych: OBJECTUSER INITIALOBJECTPRIMITIVE NUMBERINTEGER FLOATINSTANCE INSTANCENAMEINSTANCEADDRESS ADDRESSFACTADDRESS EXTERNALADDRESSMULTIFIELD LEXEMESYMBOL STRING

29 Podsumowanie Język hybrydowy (łączy w sobie trzy paradydmaty: regułowy, funkcjonalny i obiektowy) Prostszy niż Prolog czy Lisp użyteczność dyrektyw: propagation, default i default- dynamic Do słabości języka można zaliczyć mało czytelną składnię

30 Literatura [1] http://binboy.sphere.pl/index.php?show=49 [2] http://www.ghg.net/clips/CLIPS.html [3] http://www.kie.ae.poznan.pl/~marek/edu/zw/ [4 ]Jan J. Mulawka „Systemy ekspertowe”