ESI/LN

From WikiZMSI

< ESI

Spis treści

Regulamin zajęć laboratoryjnych

Zajęcia laboratoryjne z przedmiotu "Elementy sztucznej inteligencji" mają na celu zapoznanie słuchaczy z językiem programowania logiki - Prolog i zachęcenie do wykorzystania tego języka do oprogramowania problemów z dziedziny "sztucznej inteligencji".

Kurs obejmuje 15h lekcyjnych w blokach dwugodzinnych. W sumie w semestrze odbywa się 7 zajęć po 2h.

Obecność na zajęciach

Regulamin studiów Politechniki Szczecińskiej w rozdziale III, §10, ustęp 2 stwierdza: "Nieobecność studenta, nawet usprawiedliwiona na więcej niż 1/5 godzin obowiązkowej formy zajęć może być podstawą do niezaliczenia tej formy zajęć."

W myśl tego przepisu należy uczestniczyć w możliwie wszystkich zajęciach. Student ma prawo do nieobecności na jednych zajęciach laboratoryjnych.

Jeżeli z uzasadnionego powodu student nie może uczestniczyć w zajęciach własnej grupy może odpracować zajęcia z inną grupą. Musi jednak zostać spełniony warunek, że grupa realizuje program zajęć, które student opuścił.

Zachowanie na sprawdzianach

Regulamin studiów Politechniki Szczecińskiej w rozdziale III, §15, ustęp 3 stwierdza: "W szczególności, w przypadku stwierdzenia przez nauczyciela akademickiego, że student podczas egzaminu, zaliczenia, kolokwium lub innego sprawdzianu wiedzy korzystał z niedozwolonych form pomocy, nauczyciel ten może wystawić studentowi ocenę niedostateczną i wnioskować do dziekana o jego ukaranie."

Uprasza się zatem o nie korzystanie z pomocy pisemnych czy ustnych. Konsekwencje są określone w regulaminie.

Wpływ oceny z laboratorium na ocenę z wykładu

Wpływ oceny z laboratorium na ocenę z całego kursu (system punktowy) wynosi 50%. Aby uzyskać wpis z wykładu należy uzyskać pozytywną ocenę z laboratoriów.

Ocena z laboratoriów

Na ocenę końcową wpływać będzie:

  1. punktacja z wejściówek,
  2. aktywność na zajęciach.

ad 1. Każde zajęcia laboratoryjne rozpoczynają się wejściówką. Zakres materiału będzie podawany z przynajmniej dwutygodniowym wyprzedzeniem w niniejszym serwisie.

Na każdym sprawdzianie padną najwyżej trzy pytania lub zagadnienia do omówienia. Za każdą odpowiedź autor może uzyskać od 0 pkt (brak odpowiedzi lub odpowiedź nieprawidłowa) do 1 pkt (odpowiedź w pełni poprawna), co pozwala zgromadzić maksymalnie do 3 pkt za jedną wejściówkę.

Niektóre zadania praktyczne będzie można wykonywać z wykorzystaniem kompilatora Prologu.

Jeżeli student jest nieobecny na zajęciach i nie uczestniczy w równoważnych laboratoriach z inną grupą, nie może odrabiać samej wejściówki.

ad 2. W trakcie zajęć może być oceniana aktywność w skali od -1 do 1.

Punkty ujemne zdobywają studenci za niepoprawne zachowanie, ostentacyjne demonstrowanie braku zainteresowania zajęciami, brak wyników pracy zadanej do wykonania w trakcie zajęć, itp.

Punkty dodatnie przyznawane będą za wykazanie się wiedzą powyżej przeciętną, rozwiązanie dodatkowego problemu zadanego przez prowadzącego, itp.

Punkty zebrane przez studenta z wejściówek i aktywności zostaną zsumowane i podzielone przez maksymalną liczbę punktów z wejściówek. Powstały odsetek będzie wskazywał na ocenę zgdonie 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

Sytuacje wyjątkowe

Jeżeli z powodu choroby student przebywa na zwolnieniu ponad 2 tygodnie, tak, że nie może odpracować zajęć z inną grupą, przedstawiając odpowiednie zwolnienie będzie mógł poprawiać wejściówkę na konsultacjach.

Zaliczenia poprawkowe

Jeżeli student nie uzyska wystarczającej liczby punktów końcowych i uzyska ocenę niedostateczną ma prawo do dwóch poprawek w ciągu roku (Regulamin studiów PS rozdział V §22 ustęp 4). Pierwsza poprawa odbędzie sie w sesji poprawkowej, a druga pod koniec semestru zimowego.

Inne

  • Wszelkie pytania, wątpliwości można rozwiązywać osobiście w czasie konsultacji lub drogą elektroniczną.
  • Proszę pamiętać, że pomimo tego, ze korespondencja jest elektroniczna ciągle ma charakter formalny. Proszę zatem przestrzegać zasad pisania pism oficjalnych. Zaczynać list od powitania, kończyć formą grzecznościową i podpisywać się imieniem i nazwiskiem.

Laboratorium 1 --- Prolog

Na zajęciach wykorzystywany będzie SWI Prolog. Oprogramowanie dostępne na serwerach Jota. Oficjalna strona SWI Prolog zawiera dokumentację jak i wersję kompilatora pod Linux'a i MS Windows.

Programowanie w Prologu - kilka użytecznych linków:

Materiał na laboratoria jest głównie zaczerpnięty z książki "PROLOG Programming for Artificial Intelligence" Ivana Bratko (ISBN: 0-201-40375-7). W języku polskim dostępna jest pozycja "Prolog. Programowanie." autorstwa W.F. Clocksin i C.S. Mellish. wyd. Helion, Gliwice 2003.

Co należy wiedzieć zanim...:

  • język deklaratywny i opisowy;
  • programowanie symboliczne;
  • obiekty i relacje (przykład: Ala ma kota. Pomiędzy obiektami Ala i kot istnieje relacja posiadania jednokierunkowa.);
  • reguły opisują relacje na podstawie innych relacji. (przykład: Właściciel to ktoś kto coś posiada.).
  • Program składa się z faktów i reguł zapisanych według odpowiedniej składni.

Zadania do wykonania

Deklarowanie faktów

1. Uruchomić interpreter SWI Prologu poleceniem

swipl 

w powłoce (shell).

2. Sprawdzić znane prawdy o liczbach

3 > 2. 

3. Utworzyć w edytorze tekstu plik o nazwie nowy.pl.

4. Wpisać do pliku następujące fakty:

  • Ala lubi koty.
lubi( ala, koty). 
  • Marek lubi psy.
lubi( marek, psy). 
  • Ala jest kobietą.
kobieta( ala). 
  • Marek jest mężczyzną.
mezczyzna( marek). 

5. Zapisać plik i wczytać w interpreterze poleceniem

['sciezka/nowy.pl'].

Zapytania

1. W trybie zapytań zadaj pytania do wprowadzonych faktów:

  • Czy Ala lubi koty?
lubi( ala, koty). 
  • Czy Marek jest kobietą?
kobieta( marek). 
  • Czy Jan jest mężczyzną?
mezczyzna( jan). 
  • Czy psy lubią Marka?
lubi( psy, marek). 

2. Zadaj pytania ze zmiennymi:

  • Czy jest coś co lubi Ala?
lubi( ala, X). 
  • Czy wiesz coś o istnieniu kobiet?
kobieta( Y). 
  • Czy psy są przez kogoś lubiane?
lubi( Ktos, psy). 

Pytania złożone

  • Czy Ala lubi koty i Marek lubi psy?
lubi( ala, koty),lubi( marek, psy). 
  • Czy Ala jest kobietą i Marek jest mężczyzną?
kobieta( ala), mezczyzna( marek). 
  • Czy jest coś co lubi zarówno Ala jak i Marek?
lubi( ala, X), lubi( marek, X). 

Dodawanie reguł

1. W pliku źródłowym dopisz reguły:

  • Marek lubi kobiety.
lubi( marek, X) :- kobieta( X). 
  • Ala lubi to co Marek.
lubi( ala, X) :- lubi( marek, X). 

2. W trybie zapytań zapytaj:

  • Co lubi Marek?
lubi( marek, X).
  • Co lubi Ala?
lubi( ala, X).

Program o zależnościach rodzinnych

  1. Pobierz plik źródłowy do zależności rodzinnych ⇒ Rodzinka.pro
  2. Narysuj graf zależności pomiędzy osobami.
  3. Skompiluj źródło ( ['Rodzinka.pro']. ).
  4. Dodaj do źródła następujące reguły.
    • Potomek child, to relacja odwrotna do rodzica parent.
    • Matka mother, to rodzic parent płci żeńskiej female.
    • Dziadek grandparent, to rodzic parent czyjegoś rodzica parent.
    • Siostra sister, to ktoś kto ma tego samego rodzica parent i jest kobietą female.
    • Przodek predecessor - poprzez rekurencyjne sprawdzanie poprzednich pokoleń rodziców parent.

Jak Prolog odpowiada na pytania

Zapisane w źródle fakty i reguły analizowane są od góry do dołu w kolejności wprowadzenia. Szukany jest fakt potwierdzający zapytanie. Jeżeli w pytaniu jest zmienna w trakcie wyszukiwania odpowiedzi jest ukonkretniana (unifikowana - podstawiane są pod nią stałe wartości - atomy). Jeżeli zapytanie jest złożone, to zawsze poszukuje się potwierdzenia predykatów od lewego do skrajnie prawego. Powrót do wcześniejszych predykatów celem sprawdzenia wszystkich kombinacji nazywa się nawracaniem (backtracking).

Zadania do wykonania w domu

  1. Stworzyć plik źródłowy opisujący wpisaną w tabelce wiedzę w Prologu. Skompilować i uruchomić program i zadać odpowiednie dla opracowywanej bazy wiedzy pytania.
zadanie Treść
1 Adam nie pracuje. Ewa pracuje. Anna pracuje. Aleks pracuje. Adam i Ewa są małżeństwem. Anna i Aleks są małżeństwem. Aleks jest małomówny. Anna jest dominująca. Ewa jest niewierna. Jeżeli ktoś nie pracuje to ma problemy finansowe. Jeżeli ktoś mało mówi lub jest dominujący, to ma problemy z komunikacją z partnerem. Problemy małżeńskie są wynikiem braku zatrudnienia obojga partnerów lub gdy komunikacja pomiędzy partnerami jest zachwiana. Problemy małżeńskie są wynikiem zdrady jednego z partnerów.

Pytania: Kto jest mężem Anny? Jakie małżeństwo ma jakie problemy z powodu męża? Czy małżeństwo Adama ma problemy?

2 Ręka jest częścią ciała. Głowa jest częścią ciała. Włosy są częścią głowy, Cebulki są częścią włosów. Oczy są częścią głowy. Oczy mogą być kolory niebieskiego, zielonego, brązowego lub czarnego. Włosy mogą być koloru blond, brąz, czarne. Coś jest ciemnego koloru gdy jest brązowe lub czarne. Coś jest jasnego koloru, gdy jest niebieskie, zielone lub blond. Każdy X należy do pewnej całości Y, gdy X jest częścią Y. Każdy X należy do pewnej całości Y, gdy X jest częścią Z, a Z należy do całości Y.

Pytania: Jakie kolory są wspólne dla oczu i włosów? Jakie części należące do ciała są koloru jasnego? Do jakich całości należą oczy?

3 Dane jest zachowanie dwuwejściowe bramki logicznej AND. Zatem wiemy, że na sygnał 1 i 1 odpowiedź jest 1. Analogicznie dane jest zachowania inwertera (NOT) i dwuwejściowej bramki OR. Wiemy, że NAND to jest bramka AND i NOT. Wiemy, że NOR to bramka OR i AND. Wiemy, że EXOR to duma wyjść z dwóch bramek AND, które na wejście przyjmują jedna sygnał wejściowy pierwszy i drugi zanegowany a druga odwrotnie.

Pytania: Jakie sygnały wejściowe trzeba podać by otrzymać wyjście 1 z EXOR? Jeżeli jeden z sygnałów wejściowych NOR jest równy jeden to jakie są wartości drugiego wejścia, by wyjście było równe zero? Jaka jest odpowiedź układu z rysunku ?

4Wiemy, że istnieje pewien graf którego węzły są połączone w jednym kierunku. I tak odpowiednio połączone są węzły: o z p, p z r, p z s, s z u. Wiemy, że istnieje przejście od pewnego węzła X do węzła Y, gdy węzeł X i węzeł Y są połączone. Wiemy też, że istnieje przejście od pewnego węzła X do węzła Y, gdy pomiędzy X i Y jest węzeł Z, który jest połączony z X i z Z istnieje przejście do Y.

Pytania: Czy istnieje przejście z węzła p do u? Czy istnieje przejście z węzła u do p? Czy istnieje połączenie z węzła o, które łączy się z węzłem z którego prowadzi ścieżka do u?

Wytyczne na wejściówkę

Umiejętność zapisywania faktów i reguł w Prologu. Wiedza o sposobie wnioskowania. Programy z tabeli i przerabiane na zajęciach.

Algorytmy genetyczne

Do zajęć laboratoryjnych należy wykorzystać program demonstrujący zastosowanie algorytmu genetycznego 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 Go test problem. 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.

Zadania - 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
Długość chromosomu mała: 2 bity; duża: 20 bitów
Rozmiar populacji średni: 20 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 - kodowanie nowych rozwiązań

Zadania mają na celu rozszerzenie programu demonstracyjnego o nowe funckje. Każdą zmianę należy wprowadzić w odpowiednich plikach źródłowych.

  1. Dodać jedną wybraną ze strony Go test problem funkcję testową. Pamiętając o możliwości ich graficznej prezentacji (moduł graph.m). (Zadanie obowiązkowe)
  2. Dodać metodę selekcji (Zadanie obowiązkowe)
    • Grupa 31: selekcja metodą ruletki [podpowiedź]
    • Grupa 34: selekcja ranking liniowy
  3. Dodać metodę mutacji na określonym odcinku pamiętając, że prawdopodobieństwo mutacji określa częstość mutacji chromosomu, a nie genu jak to jest w obecnej implementacji.(Zadanie dodatkowe na wyższą ocenę)
  4. Dodać kod pozwalający na prezentowanie na wykresie konturowym przemieszczania się populacji w każdej generacji. (Zadanie dodatkowe na wyższą ocenę)

Zadanie dodatkowe

W oparciu o prezentowany program demonstracyjny napisać program rozwiązujący problem plecakowy. Opis problemu plecakowego w opisie zadania z przedmiotu Sieci neuronowe i aplikacje sztucznej inteligencji

Prezentacja programu nastąpiłaby na kolejnych zajęciach laboratoryjnych. Należy dobrze znać kodu własnego programu.

Wytyczne na wejściówkę

Podstawy teoretyczne związane z algorytmami genetycznymi (kodowanie, funkcja przystosowania, metody selskcji, metody krzyżowania, metody mutacji) oraz wpływ różnych parametrów na zbieżność AG.

Laboratorium 3 --- Sterowanie rozmyte

Charakterystyka sterownika dźwigu:

Zadaniem operatora jest ustawienie kontenera w odpowiedniem położeniu do przeładunku. Kontener nie może się mocno kołysać, ponieważ zawartość może zostać zniszczona. Aby zapobiec wahaniom można zastosować trzy strategie:

  1. Szybko przenieść kontener ponad miejsce docelowe i czekać, aż przestanie się kołysać.
  2. Przenosić kontener powolutku, tak by kołysanie nie wystąpiło wcale.
  3. Zamontować dodatkowe liny, by ograniczyć kołysanie.

Pierwsze dwa rozwiązania są mało efektywne ze względu na czas. Ostatnie zaś jest zbyt kosztowne. Względy ekonomiczne nakazują by statek rozładować szybko i małym kosztem.

Budowa sterownika rozmytego - symulacja strategii ludzkiej

Strategia stosowana przez operatora dźwigu:

  1. Rozpocznij ze średnią mocą.
  2. Jeżeli nadal jest daleko od celu, dostosuj moc tak, by kontener pozostawał lekko w tyle.
  3. Jeśli kontener zbliża się do celu, zredukuj moc w ten sposób, by kontener wysunął się lekko w przód.
  4. Kiedy kontener jest bardzo blisko celu, zwiększ moc.
  5. Kiedy kontener jest ponad celem i nie kołysze się, zatrzymaj silnik.

Zasady postępowania operatora zamieniono na reguły rozmyte. Aby zautomatyzować proces sensory muszą badać odległość i kąt wychylenia kontenera. Dokładny opis reguł (w postaci bazy reguł "IF-THEN" dostępny pod adresem: http://fuzzytech.com/e/e_a_pfd.html.

Odręczna próba symulacji:

  1. Uruchomić symulator "Container Crane".
  2. Spróbować przenieść jak najszybciej kontener ze statku nad platformę.
  3. Rozpocząć sterowanie ręczne - przycisk [Manual].
  4. Regulować moc [+] [0] [-] zgodnie z własną intuicją.
  5. Powtórzyć próbę stosując różne strategie sterowania.
  6. Spróbować przenieść kontener korzystając z reguł opisanych w "Sterownik rozmyty - symulacja strategii ludzkiej".

Analiza wstępna modelu:

  1. Uruchomić symulację sterownika rozmytego (przycisk [Fuzzy]).
    1. Przeanalizować poszczególne bloki modelu:
      • rozmycia (fuzyfikacji): zwrócić uwagę na niesymetryczność rozkładu MBF,
      • inferencji: liczba reguł, wartości DoS i operatory,
      • wyostrzenia (defuzyfikacji): rozkład klas wyjściowych, metody defuzyfikcji.
    2. Obejrzyj zachowanie następujących elementów modelu podczas symulacji:
      • wejść,
      • reguł,
      • wyjścia,
      • model (Plot 3D - opcja Debug RCU),
      • zmiany wartości wejść i wyjścia w czasie (Time Plot opcja Debug RCU).

Dodatkowe materiały w języku angielskim:

  • Opis problemu i sterownika rozmytego na stronie fuzzyTECH.com
  • Manual do fuzzyTECHa strony: 9-24 i strony 116-130 (dołączony do demonstracyjnej wersji programu).

Zadania i problemy do analizy:

  1. Skasować reguły z bazy i zastąpić je własnymi, takimi by sterowanie obywało się bez analizy kąta wychylenia od pionu (jedno wejście).
  2. Zmodyfikować bazę reguł, tym razem tak by opisywała przesuwanie na miejsce przeładunku nie dopuszczając do wahań (nawet przyniewielkich kątach przeciwdziałać wychyleniom).
  3. Zbadać jaki wpływ na zachowanie dźwigu ma zmiana funkcji przynależności (wejściowych, wyjściowych) z wielokątnych na gładkie? Obejrzeć kształt charakterystyki regulatora (powierzchnie modelu 3D). Zastanowić się czym są wywołane zmiany zachowania sterownika.
  4. Zmienić operator agregacji, tak by nie zmieniać koniunkcyjnego charakteru przesłanki (MIN na PROD).
  5. Zmienić operator akumulacji z MAX na BSUM i obserwować zmiany.
  6. Zmienić metodę defuzyfikacji na wszystkie dostępne warianty. Obserwować efektywność sterowania oraz proces defuzyfikacji.

Wytyczne na wejściówkę

Znajomość: zagadnień logiki rozmytej, przykładu omawianego na laboratoriach.


Laboratorium 4 --- Sztuczne sieci neuronowe

Uruchomić w Matlabie poleceniem nnd zestaw programów demonstracyjnych do sieci neuronowych. Przyciskiem [Table of contents] wyświetlić spis treści. Poniżej przedstawiona jest lista zadań do wykonania:

Prosty perceptron - obliczenia w neuronie:

  1. Neuron z jednym wejściem: Obserwacja zachowania pojedynczego neuronu.
    • Sprawdzić jakie wzory mają możliwe do wykorzystania funkcje aktywacji. help nazwa_funkcji
    • Zaobserwować zmianę wzbudzenia a(w) w zależności od zmiennej wartości wagi wejścia.
  2. Neuron dwuwejściowy: Należy dostroić wagi (w), bias(b), funkcję aktywacji (F) i (p), by uzyskać na wyjściu: -1, 0 , 6.

Przykład zadania klasyfikacji rozwiązanego różnego typu sieciami neuronowych

Ze spisu treści należy uruchomić następujące programy demonstracyjne:

  1. Klasyfikacja perceptronem [Chapter III - An illustrative example],
  2. Klasyfikacja siecią Hopfielda [Chapter III - An illustrative example],
  3. Klasyfikacja siecią konkurencyjną [Chapter XIV - Competitive Network].

Wszystkie zadania prezentują problem rozpoznania jabłka i pomarańczy. Dla każdego przykładu należy:

  • Wykonać kilkukrotne próby rozpoznania owoców.
  • Określić według jakich cech następuje rozpoznanie. W jakim stopniu mają one wpływ na rozpoznanie? Po czym określa się istotność danej cechy w modelu?
  • Narysować sieć neuronową realizująca zadanie z opisem wszystkich elementów oznaczenia wag i biasów zgodne z oznaczeniami w zadaniu oraz podać wzory funkcji aktywacji.

Wytyczne na wejściówkę

Działanie pojedynczego neuronu, sieci Hopfielda, perceptronu i sieci konkurencyjnej.