MSI2/LJK

From WikiZMSI

Spis treści

Ocena z laboratoriów

Na ocenę końcową wpływać będzie punktacja za zadania wykonane na zajęciach i w domu oraz programy. Punkty zebrane przez studenta z zadań i sprawozdań zostaną zsumowane i podzielone przez maksymalną liczbę punktów. Powstały odsetek będzie wskazywał na ocenę zgodnie z poniższą listą:

  • < 0 - 0.6 ) : niedostateczny
  • < 0.6 - 0.68 ): dostateczny
  • < 0.68 - 0.76 ): dostateczny plus
  • < 0.76 - 0.84 ): dobry
  • < 0.84 - 0.92 ): dobry plus
  • < 0.92 - 1 >: bardzo dobry

Laboratorium nr 0: Matlab - przypomnienie podstaw programowania

Zestawy zadań dla chcących potrenować.

Zestaw zadań nr 1
Zestaw zadań nr 2
Zestaw zadań nr 3

Po laboratorium nie jest przewidziane zaliczenie pisemne.


Laboratorium nr 1: Identyfikacja funkcji przynależności

Skrypt do zajęć.


Literatura

A. Piegat: "Modelowanie i sterowanie rozmyte"

Laboratorium nr 2: Model rozmyty typu SISO

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Instrukcja do zajęć.


Rozliczenie zajęć

  1. Wykonanie skryptu z systemem rozmytym modelującym wiarygodność klienta banku w zależności do jego wieku i wysłanie:
    1. skryptu z systmem
    2. wykresu z modelem w formacie jpg
  2. Wykonanie skryptu z systemem rozmytym modelującym dowolnie wybrany problem z jednym wejściem i jednym wyjściem i wysłanie
    1. skryptu z systmem
    2. wykresu z modelem w formacie jpg


Literatura

A. Piegat: "Modelowanie i sterowanie rozmyte"

D. Rutkowska, M. Piliński, L. Rutkowski: "Sieci neuronowe, algorytmy genetyczne i systemy rozmyte"


Laboratorium nr 3: Model rozmyty typu MISO

Dla dowolnie wybranego problemu z dwoma wejściami i jednym wyjściem opracować system wnioskujący o wartości wyjścia w oparciu o logikę rozmytą. Skorzystać z toolboxu 'fuzzy' w Matlabie.

Etapy:

  1. Określić co jest wejściami i co jest wyjściem.
  2. Podać dziedzinę wejść i wyjścia
  3. Dobrać słownik dla wejść i wyjścia.
  4. Zamodelować koncepty słowne (dobrać zbiory rozmyte dla wejść i wyjścia).
  5. Opracować bazę reguł.
  6. Podać dwa przykłady obliczania wyjścia dla zadanych wartości wejść.

Na zaliczenie opracowany i wykonany w toolboxie własny projekt należy zapisać (rozszerzenie .fis) i wysłać na adres jkolodziejczyk@wi.zut.edu.pl:

  1. w treści maila co jest wejściem a co jesty wyjściem
  2. plik .fis
  3. wykres modelu (surface)
  4. okno view/rules

proszę nie pakować załączników!

Elementy oceniane:

  • pomysł
  • modelowanie wejść i wyjścia
  • reguły w systemie


Na rozgrzewkę zamodelować za pomocą toolboxa fuzzy problem obliczania napiwku na podstawie oceny obsługi i jakości jedzenia. Postępować zgodnie z instrukcją

Laboratorium nr 4: Algorytmy ewolucyjne

Podczas zajęć laboratoryjnych należy wykorzystać program demonstrujący zastosowanie algorytmu genetycznego (ewolucyjny z kodowaniem binarnym) do optymalizacji funkcji dwóch zmiennych. Funkcje wykorzystane w programie należą do funkcji testowych dla algorytmów optymalizacyjnych. Listę takich funkcji można znaleźć na stronie Optimization Test Problems. Program należy uruchomić w Matlabie.

Przygotowanie (opis) programu

Pliki źródłowe należy pobrać w postaci spakowanego archiwum ESIN_gademo.zip

Cały program demonstracyjny składa się z kilku plików:

  1. demo.m: główny moduł programu; zawiera opis GUI.
  2. gademo.m: funkcja przygotowująca dane i uruchamiająca AG.
  3. genealg.m: algorytm genetyczny.
  4. fitness.m: obliczenie funkcji przystosowania.
  5. tselect.m: selekcja metodą turnieju.
  6. xover.m: krzyżowania (jednopunktowe, dwupunktowe, jednorodne).
  7. mutate.m: mutacja.
  8. decodeb.m: dekodowanie wartości chromosomu: przejście z genotypu na fenotyp.
  9. graph.m: tworzenie wykresów funkcji.

Program należy uruchomić wywołując w linii komend Matlaba moduł główny demo (pamiętając o zmianie katalogu bieżącego na ten zawierający pliki źródłowe).

Zadania do wykonania - obserwacja zmian zachowania algorytmu w zależności od różnych parametrów

Każde z zadań ma na celu ustalenie wybieranych arbitralnie parametrów. Jeżeli z badań wynikać będzie, iż lepsze są inne niż domyślne wartości należy je zmieniać w kolejnych badaniach.

Parametr Zakres zmian
Funkcja przystosowaniaKażda dostępna z listy funkcja. Uruchamianie z ustawieniami programu standardowymi.
Długość chromosomu mała: 2 bity; duża: 20 bitów
Rozmiar populacji średni: 10 osobników; duży: 100 osobników
Liczba generacji mała: 100; duża: 10000
Prawdopodobieństwo mutacji małe: 0,001; duże: 0.5
Prawdopodobieństwo krzyżowania małe: 0,1; duże: 1
Typ krzyżowania Każdy dostępny z listy
Elitaryzm Wyłączony / Włączony


Zadania do wykonania:

  • Do każdej funkcji wskazać zestaw parametrów pozwalający na uzyskanie wartości bliskiej optymalnej. Wyniki wysłać do prowadzącego.

Laboratorium nr 5: Sieci neuronowe typu Perceptron prosty

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Materiały pomocnicze do zajęć.

Opis algorytmu uczenia regułą delta.

Do wysłania: (bez pakowania)

  1. skrypt z uczenia AND, OR, XOR z notatką o liczbie epok uczenia, wagach i wartości błęd
  2. skrypt z uczenia przykładów 2D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
  3. skrypt z uczenia przykładów 3D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
  4. skrypt z uczenia przykładów 8D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
  5. zadanie 3 - pominąć
  6. zadanie 4 - skrypt z własną funkcją uczącą perceptron prosty regułą delta.

Literatura:

L. Rutkowski: "Metody i techniki sztucznej inteligencji"

S. Osowski: "Sieci neuronowe w ujęciu algorytmicznym"

J. Korbicz, A. Obuchowicz, D. Uciński: "Sztuczne sieci neuronowe, podstawy i zastosowania"

Laboratorium nr 6: Jednokierunkowe, wielowarstwowe sieci neuronowe

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Materiały pomocnicze do zajęć.

Do wysłania: (bez pakowania)

  1. skrypty dla 3 wybranych plików zawierający notatki o testowanych architekturach sieci (liczba warstw, liczba neuronów, funkcje aktywacji) oraz błąd uczenia - podać każdą próbę, posortować wg błędu w porządku rosnącym
    1. wybór plików z danymi:
      1. przykład z kilkoma wyjściami
      2. przykład z 1 wyjściem
      3. dowolnie wybrany
    2. wykresy dla każdego pliku z danymi przestawiające wyjścia oczekiwane, przed, po procesie uczenia (do każdego wyjścia osobno) ale tylko dla architektury z najmniejszym błędem.
  2. zadanie 3 - skrypt wg instrukcji.

Literatura

L. Rutkowski: "Metody i techniki sztucznej inteligencji"

S. Osowski: "Sieci neuronowe w ujęciu algorytmicznym"

J. Korbicz, A. Obuchowicz, D. Uciński: "Sztuczne sieci neuronowe, podstawy i zastosowania"

Laboratorium nr 7: Sieci neuronowe uczone bez nauczyciela - uczenie konkurencyjne

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Materiały pomocnicze do zajęć.


Do wysłania: (bez pakowania)

  1. skrypt/y dla 3 wybranych plików zawierający notatki o testowanych architekturach sieci (liczba neuronów, środki klastrów (wagi)) oraz błąd modelu
    1. wybór plików z danymi:
      1. przykład z 2 wejściami
      2. przykład z 3 wejściami
      3. przykład wielowymiarowy
  2. zadanie 3 - skrypt wg instrukcji.

Laboratorium nr 8: Sieć Hopfielda

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Instrukcja do zajęć.

Do wysłania: (bez pakowania)

  1. skrypty zawierający
    1. definicję wzorców uczących (10 znaków w matrycy 4x4 lub 5x5)
    2. tworzenie sieci hopfielda
    3. działanie sieci hopfielda dla wszystkich znaków w zbiorze uczącym
    4. działanie sieci hopfielda (krok po kroku, aż do stanu stabilnego) dla zaszumionego wzorca wejściowego
  2. obrazek prezentujący uczone wzorce
  3. obrazek prezentujący znaki rozpoznane przez sieć dla wszystkich wzorców uczących
  4. obrazek prezentujący proces stabilizowania się sieci od znaku zaszumionego (1 wzorzec) do znaku, który rozpoznała sieć (2 wzorzec).


Literatura

L. Rutkowski: "Metody i techniki sztucznej inteligencji"

S. Osowski: "Sieci neuronowe w ujęciu algorytmicznym"

J. Korbicz, A. Obuchowicz, D. Uciński: "Sztuczne sieci neuronowe, podstawy i zastosowania"

Laboratorium nr 9: Sieci neuronowe typu RBF

Autorem intrukcji i zadań jest dr inż. Marcin Pluciński.

Materiały pomocnicze do zajęć.

Do wysłania: (bez pakowania)'

  1. skrypty zawierający komentarze opisujące
    1. testowany spread
    2. liczbę neuronów
    3. błąd sieci
  2. Testy przeprowadzić na zbiorach:
    1. sin bez szumu (z wykresem funkcji)
    2. sin z szumemem (z wykresem funkcji)
    3. 1 przykład 2 wejściowy ( z wykresem funkcji )
    4. 1 przykład wielowejściowy


Literatura

L. Rutkowski: "Metody i techniki sztucznej inteligencji"

S. Osowski: "Sieci neuronowe w ujęciu algorytmicznym"

J. Korbicz, A. Obuchowicz, D. Uciński: "Sztuczne sieci neuronowe, podstawy i zastosowania"

Laboratorium nr 10: Strategia Ewolucyjna ucząca sieć neuronową

Zadanie omówione na zajęciach


Laboratorium nr 11: Automaty komórkowe

Zaprogramować automat komórkowy:


Laboratorium nr 12: Systemy ekspertowe w CLIPS

Otwarcie i zamknięcie programu

CLIPS zgłasza się znakiem zachęty CLIPS> i oczekuje na komendy. Kilka użytecznych poleceń:

  1. (exit) zamyka CLIPSa.
  2. (clear) usuwa wszystkie programy i dane z pamięci (podobne do procedury restart).
  3. (reset) usuwa dynamiczne dane z pamięci
  4. (run) uruchamia program
  5. CTRL+C kończy pętlę

Fakty

1. W CLIPS można tworzyć bazę wiedzy, która zawiera fakty i reguły. Fakty można wprowadzać poleceniem (assert) np.

CLIPS>(assert (kolor zielony))
<Fact-1>

Polecenie (assert), jak równiez inne polecenia, instrukcje lub fakty sa objete nawiasami.

2. Aby sprawdzić listę wprowadzonych faktów należy podać komendę (facts).

3. Fakty można usuwać poleceniem (retract nr_faktu). Zawsze trzeba podać numer faktu. Numer faktu usuniętego nie jest ponownie wykorzystywany.

CLIPS> (assert (kolor czerwony)) ; Komentarz
<Fact-2>
CLIPS> (facts)
f-0     (initial-fact)
f-1     (kolor zielony)
f-2     (kolor czerwony)
For a total of 3 facts.
CLIPS> (retract 1)
CLIPS> (facts)
f-0     (initial-fact)
f-2     (kolor czerwony)
For a total of 2 facts.

4. Komentarz rozpoczyna się średnikiem i trwa do końca linijki.

5. Polecenie (clear) kasuje wszystko, przywraca stan początkowy.

6. W celu unikniecia koniecznosci wielokrotnego wpisywania pojedynczych faktów mozna zdefiniowac blok faktów, uzywajac polecenia (deffacts), np.

(deffacts skrzyzowanie
(status stoj)
(status idz))

Po słowie kluczowym deffacts podaje sie nazwe definiowanego bloku, a nastepnie fakty (w nawiasach). Cała instrukcja jest ujeta w nawiasy. Fakty zdefiniowane w ten sposób sa wprowadzane na liste faktów przez polecenie (reset).

7. Polecenie (reset) usuwa wszystkie fakty z listy, a nastepnie wprowadza fakty zdefiniowane przez (deffacts) oraz fakt (initial-fact) z indeksem f-0.

8. Fakty zdefiniowane przez (deffacts) i wprowadzone na liste faktów, przez (reset) moga byc w prosty sposób usuniete z tej listy przez uzycie słowa kluczowego (undeffacts) wraz z nazwa bloku faktów np.

(undeffacts skrzyzowanie)

9. Definiowanie struktury faktów przy użyciu konstrukcji (deftemplate). Podaje się strukturę, która opisuje pewien obiekt i jakie jego cechy mogą być podane.

(deftemplate <relation-name> [<optional comment>] <slot-definition>*)
(deftemplate osoba
(slot imie)
(slot wiek)
(slot kolor-wlosow)
(multislot bracia)
(multislot siostry))

10. Na podstawie wzorca można wprowadzać fakty wykorzystując polecenie assert. Zaleta deftemplate: nie ma potrzeby wypełniania wszystkich slotów a ich kolejność nie jest obowiązkowa.

(assert (osoba (imie greg)))
(assert  (osoba (imie joe)(wiek 32)(kolor-wlosow brazowy)(bracia mat mik)(siostry jane)))
(assert (osoba (wiek 44)(imie ken)))

11. Wprowadzanie faktów ze wzorca może też być wykonane przez polecenie (deffacts):

deffacts <deffacts name> [<optional comment>] <facts>)
(deffacts znajomi
(osoba (imie greg))
(osoba (wiek 44)(imie ken))
(osoba (siostry mary)))

12. Polecenie musi być poprzedzone deftemplate (o ile korzystamy ze wzorców). Po wykonaniu polecenia (reset) CLIPS umieści fakty w liście faktów.

Reguły

W Clipsie reguły maja konstrukcje zblizona do instrukcji (IF ... THEN ...), używanych w powszechnie stosowanych jezykach programowania. Słowo IF dla uproszczenia jest pomijane, słowo THEN jest zastepowane symbolem =>:

(defrule <rule-name>
    <facts>+
  =>
    <actions>*)

Przykład:

(defrule kaczka 
  (zwierze kaczka)
   =>
  (assert (dzwiek kwacze)))

Jeżeli w bazie jest fakt, że istnieje zwierzę kaczka, to dodaj kolejny fakt do bazy, że kaczka kwacze.

Kontrola w programie

Clips umożliwia kontrolę wykonywania programu dzięki zastosowaniu polecenia

(watch).

  • (watch facts) - wprowadzenia faktów i usuwania faktów,
  • (watch rules) - wykonywania reguł,
  • (watch activations) - uaktywniania reguł.

Reguły z komunikatem

W celu lepszej komunikacji z użytkownikiem można stosować komunikaty na ekranie:

(defrule kaczka 
  (zwierze kaczka)
   =>
  (assert (dzwiek kwacze))
  (printout t "To jest kaczka" crlf))

Wprowadzić regułę i doprowadzić do jej odpalenia (run).

Zmienne

Reguły ze zmiennymi używają ?symbol do reprezentowania pewnej grupy obiektów, na których reguła działa.

(defrule drapieznik 
 (ma-pazury ?x)
  =>  
 (assert (jest-drapieznik ?x)))

Dodaj fakt, że pantera ma pazury, odpal reguły poleceniem (run) i zobacz jaki fakt powstanie.

Zmienna anonimowa

Zadeklaruj bazę wiedzy:

(deffacts start
(zwierz pies) (zwierz kaczka) (zwierz zolw)
(cieplokrwisty pies) (cieplokrwisty  kon)  (cieplokrwisty  kaczka)
(sklada-jaja kaczka) (sklada-jaja zolw)
(dziecko  kon kuc) (dziecko  zolw zolwik))

W regule można stosować zmienne anonimowe ?.

(defrule zwierz
 (zwierz ?)
 =>
 (printout t "zwierzak znalezniony" crlf))

Odpalenie reguł daje wynik, który wskazuje iż reguła dopasowała część if czterokrotnie. Zmienna anonimowa może być używana w jednej regule wielokrotnie w zależności od potrzeby. Zatem dozwolone jest (dziecko ? ?), acz niedozwolona jest składnia (? ? dziecko)

Reguła usuwająca fakty

Aby usunąć fakt należy znać jego numer, gdyż CLIPS nie usuwa faktów po kontekście.

(defrule usun-ssaki
 ?fakt <- (ssak ?)
 =>
 (printout t "usuwanie " ?fakt crlf)
 (retract ?fakt))

Jeżeli spełniony jest fakt (ssak ?), to indeks tego faktu jest przechowywany w zmiennej ?fakt. (odpowiada za to przypisanie symbol <-).

Regułę można usunąć poleceniem undefrule podając nazwę reguły jako argument np. (undefrule usun-ssaki).

Krótkie tutoriale do CLIPS po angielsku

  1. Numer 1 Definicja faktu i reguły
  2. Numer 2 Pobieranie danych od użytkownika
  3. Numer 4 Fakty nieuporządkowane - templates
  4. Numer 5 Sterowanie kolejnością reguł i jak wykorzystywać porównania
  5. Numer 6 Definiowanie funkcji (do wielokrotnych obliczeń)

Zadanie :

  1. Zadaniem jest stworzenie systemu wnioskującego o tym, co można ugotować na podstawie zawartości lodówki (kuchni).
  2. Zdefiniuj fakty o tym co jest w lodówce (kuchni) np. fakt, że mamy mąkę można zapisać jako (assert (maka)).
  3. Zdefiniuj reguły na przepisy np. Aby zrobić jajecznicę potrzebujemy jaja i masło.
  4. Reguły mają się kończyć wypisaniem na ekranie jakie dania jesteśmy w stanie przygotować mając do dyspozycji pewną liczbę produktów).
  5. Kod zapisać w pliku.