MSI2/LJK
From WikiZMSI
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ęć
- Wykonanie skryptu z systemem rozmytym modelującym wiarygodność klienta banku w zależności do jego wieku i wysłanie:
- skryptu z systmem
- wykresu z modelem w formacie jpg
- Wykonanie skryptu z systemem rozmytym modelującym dowolnie wybrany problem z jednym wejściem i jednym wyjściem i wysłanie
- skryptu z systmem
- 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:
- Określić co jest wejściami i co jest wyjściem.
- Podać dziedzinę wejść i wyjścia
- Dobrać słownik dla wejść i wyjścia.
- Zamodelować koncepty słowne (dobrać zbiory rozmyte dla wejść i wyjścia).
- Opracować bazę reguł.
- 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:
- w treści maila co jest wejściem a co jesty wyjściem
- plik .fis
- wykres modelu (surface)
- 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:
- demo.m: główny moduł programu; zawiera opis GUI.
- gademo.m: funkcja przygotowująca dane i uruchamiająca AG.
- genealg.m: algorytm genetyczny.
- fitness.m: obliczenie funkcji przystosowania.
- tselect.m: selekcja metodą turnieju.
- xover.m: krzyżowania (jednopunktowe, dwupunktowe, jednorodne).
- mutate.m: mutacja.
- decodeb.m: dekodowanie wartości chromosomu: przejście z genotypu na fenotyp.
- 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 przystosowania | Każ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)
- skrypt z uczenia AND, OR, XOR z notatką o liczbie epok uczenia, wagach i wartości błęd
- skrypt z uczenia przykładów 2D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
- skrypt z uczenia przykładów 3D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
- skrypt z uczenia przykładów 8D: 1 separowalny i 1 nieseparowlany z notatką o liczbie epok uczenia, wagach i wartości błędu
- zadanie 3 - pominąć
- 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)
- 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
- wybór plików z danymi:
- przykład z kilkoma wyjściami
- przykład z 1 wyjściem
- dowolnie wybrany
- 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.
- wybór plików z danymi:
- 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)
- 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
- wybór plików z danymi:
- przykład z 2 wejściami
- przykład z 3 wejściami
- przykład wielowymiarowy
- wybór plików z danymi:
- 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)
- skrypty zawierający
- definicję wzorców uczących (10 znaków w matrycy 4x4 lub 5x5)
- tworzenie sieci hopfielda
- działanie sieci hopfielda dla wszystkich znaków w zbiorze uczącym
- działanie sieci hopfielda (krok po kroku, aż do stanu stabilnego) dla zaszumionego wzorca wejściowego
- obrazek prezentujący uczone wzorce
- obrazek prezentujący znaki rozpoznane przez sieć dla wszystkich wzorców uczących
- 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)'
- skrypty zawierający komentarze opisujące
- testowany spread
- liczbę neuronów
- błąd sieci
- Testy przeprowadzić na zbiorach:
- sin bez szumu (z wykresem funkcji)
- sin z szumemem (z wykresem funkcji)
- 1 przykład 2 wejściowy ( z wykresem funkcji )
- 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:
- Gra w życie Conwaya
- O grze w życie by Mathworks
- Rozmyty automat komórkowy: opis z książki Fuzzy Hardware: Architectures and Applications pod redakcją Abraham Kandel,Gideon Langhol str. 298c FCA.pdf
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ń:
- (exit) zamyka CLIPSa.
- (clear) usuwa wszystkie programy i dane z pamięci (podobne do procedury restart).
- (reset) usuwa dynamiczne dane z pamięci
- (run) uruchamia program
- 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
- Numer 1 Definicja faktu i reguły
- Numer 2 Pobieranie danych od użytkownika
- Numer 4 Fakty nieuporządkowane - templates
- Numer 5 Sterowanie kolejnością reguł i jak wykorzystywać porównania
- Numer 6 Definiowanie funkcji (do wielokrotnych obliczeń)
Zadanie :
- Zadaniem jest stworzenie systemu wnioskującego o tym, co można ugotować na podstawie zawartości lodówki (kuchni).
- Zdefiniuj fakty o tym co jest w lodówce (kuchni) np. fakt, że mamy mąkę można zapisać jako (assert (maka)).
- Zdefiniuj reguły na przepisy np. Aby zrobić jajecznicę potrzebujemy jaja i masło.
- Reguły mają się kończyć wypisaniem na ekranie jakie dania jesteśmy w stanie przygotować mając do dyspozycji pewną liczbę produktów).
- Kod zapisać w pliku.