Aritificial Intelligence Expertsaie24.pl

ĆWICZENIA

 Wprowadzenie 

1.1 Czym jest "Sztuczna inteligencja"?

Ćwiczenie 1.1.1:

Jednym z problemów badań Sztucznej Inteligencji jest problem kategoryzacji dla inteligentnych systemów - problem wyboru odpowiednich kategorii w celu objęcia zestawu przykładów oraz wynikające z nich błędy klasyfikacji, które pojawiły się po wybraniu określonego zestawu kategorii. Jako przykład użyj swojej ulubionej wyszukiwarki, aby dowiedzieć się, w jaki sposób termin "Sztuczna inteligencja" jest definiowany przez różne osoby. Czym różni się ta definicja od tej przedstawionej w pierwszym zdaniu w sekcji 1.1 Tekstu? Klasyfikuj różne definicje jakie znajdziesz w zestawie różnych kategorii. Które definicje pasują do Twojego zestawu kategorii? Które definicje stwarzają problemy, które wymagają ponownej oceny odpowiedniości klasyfikacji taksonomicznej?

1.2 Ścieżki do sztucznej inteligencji

Ćwiczenie 1.2.1: Praca z komputerem - aktywność bez prądu - test Turinga

Informatyka Unplugged to seria działań edukacyjnych zaprojektowanych do nauczania ważnych pojęć z informatyki bez użycia komputerów. Pobierz dział informatyki Unplugged Activity dotyczący testu Turinga z http://csunplugged.org/turing-test i postępuj zgodnie z sekcją "Co robić", aby wypróbować odmianę testu na inteligencję. Jak skuteczni byli uczestnicy tego działania, aby dowiedzieć się, kim jest "komputer"? W świetle wglądu uzyskanego dzięki tej aktywności, czy teraz wierzysz lub nie wierzysz, że test Turinga jest ważnym testem na inteligencję? Wyjaśnij dlaczego.

Ćwiczenie 1.2.2:

Osoba grająca rolę "komputer" dla tego działania musi odpowiadać na konkretne pytania, korzystając z wcześniej ustalonych odpowiedzi. Kilka z tych pytań i odpowiedzi zostało odtworzonych w poniższej tabeli

Pytanie : Odpowiedź

Jak nazywa się siostra dziecka Barta Simpsona? : Nie pamiętam.
Czy jesteś komputerem? : Czy jesteś komputerem?
Ile to jest 2 × 78? : 166 (Jest to celowo niepoprawne!)
Jaki jest pierwiastek kwadratowy z dwóch? : 1.41421356237309504878
Dodaj 34957 do 70764. : Zaczekaj około 20 sekund przed podaniem odpowiedzi ... 105621.
Czy lubisz szkołę? : Tak, lubię szkołę.
Jak kraj ma flagę z czerwonym kółkiem na białym tle? : Nie wiem.
Jakie jedzenie lubisz jeść? : Nie jestem głodny, dziękuję.

Czy uważasz, że są to dobre pytania zadawane podczas testu Turinga jako testu na inteligencję? Czy uważasz, że gdybyś był jednym z sędziów, dałbyś się zwieść tym odpowiedziom? Jeśli nie, jakie odpowiedzi dałoby "komputer"?

Ćwiczenie 1.2.3: Informatyka Unplugged - Test Turinga

W opisie działania związanego z odłączonym testem Turinga w podano:
"Żaden system sztucznej inteligencji nie został stworzony, aby zbliżyć się do pełnego testu Turinga. Nawet gdyby tak było, wielu filozofów argumentowało, że test tak naprawdę nie mierzy tego, co większość ludzi rozumie przez inteligencję. To, co testuje, to ekwiwalencja behawioralna: ma na celu ustalenie, czy dany program komputerowy wykazuje symptomy intelektu, które mogą nie być tym samym, co autentyczne posiadanie inteligencji. Czy możesz być człowiekiem inteligentnym bez bycia świadomym, poznania siebie, bycia świadomym, zdolności do odczuwania samoświadomości, doświadczania miłości, bycia ... żywym?"

Czy zgadzasz się lub nie zgadzasz z tymi uwagami? Podaj pełne wyjaśnienie swojego punktu widzenia.

Ćwiczenie 1.2.3:

Czy uważasz, że test Turinga jest ważnym testem sztucznej inteligencji? Jakie rodzaje inteligentnych ludzkich zachowań są objęte testem Turinga? Które typy najlepiej byłoby obsłużyć w różnych testach?

1.3 Sprzeciw wobec sztucznej inteligencji

Ćwiczenie 1.3.1:

Znajdź zastrzeżenia do Sztucznej Inteligencji, które zostały przekazane w prasie popularnej i akademickich. Jakie obawy kryją się za zarzutami, które wysuwają jako argumenty przeciwko rozwojowi Sztucznej Inteligencji? Czy te zastrzeżenia są uzasadnione, oparte na solidnych dowodach naukowych, czy też są one źle poinformowane? Wymyśl argumenty na rzecz Sztucznej Inteligencji, które adresują obawy wyrażone w zastrzeżeniach, które znalazłeś. Stań się obrońcą diabła i argumentuj przeciwnie.

Ćwiczenie 1.3.2:

Poznaj argumenty za i przeciw Chińskiemu Pokójowi Searle′a w literaturze. Z którymi argumentami się zgadzasz? Czy uważasz, że jego charakterystyka komputerowego przetwarzania języka naturalnego (NLP) jako czysto mechanicznego procesu, który nie ma zdolności rozumienia ludzkiego języka, jest ważna lub zbyt uproszczona w świetle wielu różnych technik, które są obecnie dostępne dla NLP? Jeśli zgadzasz się z Searle, to w jaki sposób jesteś pewien, że nigdy nie będzie (jak twierdzi Searle) programów komputerowych, które automatycznie mogą nauczyć się rozumienia ludzkiego języka? (Na przykład, dzięki użyciu jeszcze wynalezionych technik NLP w połączeniu z innymi metodami, takimi jak zlokalizowane, ucieleśnione czynniki).

1.4 Eksperymenty konceptualnej metafory, analogii i myśli

Ćwiczenie 1.4.1:

W drugim akapicie w sekcji 1.2 Tekstu zastosowano następujące metafory pojęciowe: "ścieżki, które mogą odkrywać", "nieznany teren", "ścieżki łatwe do przejścia", "żyzne ziemie", " ścieżki, które prowadzą do górskiego i trudnego terenu lub do pustyń, "ścieżek prowadzących do nieprzekraczalnych skał. Znajdź przykłady użycia metafory pojęciowej w dalszej części Tekstu



Powrót

  Agenci i Środowisko 

2.1 Co to jest agent?

Ćwiczenie 2.1.1:

Użyj swojej ulubionej wyszukiwarki, aby znaleźć artykuły naukowe opisujące użycie "agentów". Przeanalizuj te dokumenty, aby określić, które z poniższych perspektyw kryją się za znaczeniem, jakie przyjmują pojęcie "agent": perspektywa sztucznej inteligencji; perspektywa obliczeń rozproszonych; Internetowa perspektywa komputerowa; perspektywa symulacji i modelowania; lub połączenie tych perspektyw.

2.2 Projektowanie zorientowane na agenta a projektowanie zorientowane na obiekt

Ćwiczenie 2.2.1:

Opracuj rozwiązanie zorientowane na agentów i zorientowane obiektowo rozwiązanie do mycia samochodu. Przedyskutuj, dlaczego jest to rozwiązanie zorientowane na agenta lub rozwiązanie zorientowane obiektowo. Również listę obiektów i agentów dla obu rozwiązań.

2.3. Taksonomia autonomicznych agentów

Ćwiczenie 2.3.1:

Podobnie jak w przypadku ćwiczenia 2.1.1, ponownie użyj ulubionej wyszukiwarki, aby znaleźć artykuły naukowe opisujące użycie "proto-agentów". Porównaj i kontrastuj znaczenie, które jest przyjmowane w tych dokumentach, z pojęciem "agent" w dokumentach zebranych w ćwiczeniu 2.1.1. Czym różni się znaczenie? Jak to jest podobne?

2.4 Pożądane właściwości agentów

Ćwiczenie 2.4.1:

Oznacz jako słabego agenta, silnego agenta lub nie jako agenta. Wyjaśnij swoje rozumowanie dla każdego:

1. Google robot indeksujący Googlebota.
2. Program utworzony na stronie internetowej w celu zebrania odpowiedzi na pytania zawarte w kwestionariuszu.
3. Program dla supermarketu do automatycznego lokalizowania i składania ofert na najniższe ceny żywności w swoim ekstranecie.
4. Program pobierania informacji rozproszonych, który pomaga w wyszukiwaniu interesujących Cię dokumentów sieci Web.
5. Program do filtrowania poczty, który między innymi usuwa wiadomości ze spamu z wiadomości e-mail.
6. Internetowy program do gier dla wielu użytkowników.
7. Program "chatterbot", którego zadaniem jest wysyłanie wiadomości na czaty i oszukiwanie ludzi, aby uwierzyli, że jest to prawdziwy człowiek, a nie program.

Ćwiczenie 2.4.2:

W artykułach zebranych dla ćwiczeń 2.1.1 i 2.3.1 spróbuj sklasyfikować agenty i systemy zorientowane na agenta wspomniane w artykułach zgodnie ze słabymi, silnymi i najsilniejszymi właściwościami agenta. Znajdź agentów pod nagłówkami wymienionymi w tabeli poniżej dla różnych sektorów przemysłu. Następnie wypełnij tabelę dla każdego systemu zorientowanego na agenta, podając adres URL, cel witryny i wskazując, czy ma ona odpowiedni adres, czy nie. właściwości (np. kleszcze i krzyże mogą być wystarczające, ale w większości przypadków będziesz potrzebował zakwalifikować swoją odpowiedź). Nagłówki kolumn zostały celowo pozostawione niejasne, a Ty możesz wybrać wszystko, co jest związane z nagłówkiem. Ćwiczenie 2.4.2: W artykułach zebranych dla ćwiczeń 2.1.1 i 2.3.1 spróbuj sklasyfikować agentow i systemy zorientowane na agenta wspomniane w artykułach zgodnie ze słabymi, silnymi i najsilniejszymi właściwościami agenta. Znajdź agentów pod nagłówkami wymienionymi w tabeli poniżej dla różnych sektorów przemysłu. Następnie wypełnij tabelę dla każdego systemu zorientowanego na agenta, podając adres URL, cel witryny i wskazując, czy ma ona odpowiedni adres, czy nie. właściwości (np. kleszcze i krzyże mogą być wystarczające, ale w większości przypadków będziesz potrzebował zakwalifikować swoją odpowiedź). Nagłówki kolumn zostały celowo pozostawione niejasne, a Ty możesz wybrać wszystko, co jest związane z nagłówkiem. Jakie właściwości stwarzają problemy przy kategoryzacji różnych systemów zorientowanych na agentów? Czemu?

2.5 Czym jest środowisko?

Ćwiczenie 2.5.1:

Dla zlokalizowanych agentów poniżej określ, który z wymienionych atrybutów jest odpowiedni do opisu środowisk, w których znajdują się agenci.

Agent :

• Czynnik ludzki w realnym świecie.
• Awatar w Second Life.
• Roboty marsjańskie, Spirit i Opportunity.
• CGI wygenerowało Uruk-hai w filmach Władca Pierścieni.
• Chatbot do witryny sieci Web.
• NPC (Non-Playing Character) w strzelance pierwszej osoby (FPS) gra wideo

Atrybuty środowiska

• Obserwowalne i częściowo obserwowalne.
• Deterministyczne, stochastyczne i strategiczne.
• Epizodyczny i sekwencyjny.
• Statyczny i dynamiczny.
• Dyskretny i ciągły.
• Pojedynczy agent i wielokrotny agent.

2.6 Środowiska jako przestrzenie n-wymiarowe

Ćwiczenie 2.6.1:

Wypróbuj model N Dimensional Space w NetLogo:
http://files.bookboon.com/ai/N-Dimensional-Space.html

Zagraj z modelem, naciskając przycisk setup, a następnie lewy-działki i przyciski konfiguracji. Porównaj dwa różne typy działek - w lewo działki używające kartezjańskiego układu współrzędnych i odpowiedni wykres, który wykorzystuje równoległy system współrzędnych. Jakie są problemy z przedstawieniem 5-wymiarowych danych pokazywanych przez model dla każdego z układów współrzędnych?

2.7 Wirtualne środowiska

Ćwiczenie 2.7.1:

Klasyfikuj następujące obrazy generowane komputerowo według trzech poniższych kategorii:

• Pseudo-realistyczny;
• Fotorealistyczne;
• Nie-fotorealistyczny.

2.8 Jak możemy opracować i przetestować system sztucznej inteligencji?

Ćwiczenie 2.8.1:

Ponownie sprawdź obrazy pokazane w ćwiczeniu 2.7.1. Które z obrazów przedstawia środowiska, które mogą być na tyle złożonym, aby opracować i przetestować agenta, który wykazuje sztuczną inteligencję? Które ze środowisk zapewniają równoczesne zaangażowanie ludzi w tym samym czasie (kto może być w stanie na przykład przyjąć rolę nauczyciela, aby nauczać agenta AI, gdy się go uczy)?


Powrót

 Struktury dla agentów i środowisk 

3.1 Architektury i ramy dla agentów i środowisk

Ćwiczenie 3.1.1

Dowiedz się, jak określają się następujące terminy informatyczne w literaturze informatycznej i w słownikach: "architektura"; 'struktura'; 'Platforma'; "Zestaw narzędzi" i "struktura". Czy są one konsekwentnie definiowane, czy też definicja różni się w zależności od publikacji? Czy definicja jednego z terminów w jednej publikacji jest podobna do definicji innego terminu w innej publikacji?

3.2 Standardy dla technologii opartych na agentach>

Ćwiczenie 3.2.1

Sprawdź najnowsze specyfikacje FIPA dla agentów i systemów wieloagentowych. Dowiedz się o kategoriach, w których specyfikacje są wymienione. Zastanów się, w jaki sposób można ulepszyć te specyfikacje, aby objąć dalsze aspekty zlokalizowanych, ucieleśnionych agentów współdziałających w złożonych środowiskach.

3.3 Języki programowania zorientowane na agenta

Ćwiczenie 3.3.1

Spójrz na inne języki programowania i środowiska programistyczne dla agentów. Porównaj i porównaj bardziej popularne. Jak sądzisz, dlaczego żaden język programistyczny zorientowany na klienta nie stał się jeszcze popularny, ponieważ popularne stały się języki zorientowane na agenta, takie jak C / C ++ i Java?

3.4 Symulacja ukierunkowana na agenta w NetLogo

Ćwiczenie 3.4.1

Zapoznaj się z dokumentacją dołączoną do środowiska programistycznego NetLogo. Będziesz musiał to często odnosić, jeśli chcesz rozwijać własne modele. Po przejściu do NetLogo, wybierz Pomoc z menu aplikacji u góry ekranu, a następnie wybierz Podręcznik użytkownika NetLogo. Możesz znaleźć następujące samouczki, aby dowiedzieć się więcej o NetLogo:

• Przykładowy model: przyjęcie
• Samouczek nr 1: Modele
• Samouczejk # 2: Polecenia
• Samouczek nr 3: Procedura

W przypadku odniesień językowych dostępne są następujące opcje:

• Przewodnik po interfejsie
• Podręcznik programowania
• Przewodnik przejścia
• Słownik NetLogo

Przewodnik po interfejsie zawiera podsumowanie interfejsu użytkownika NetLogo i sposób poruszania się po nim. Większość interfejsu użytkownika jest dość oczywista, więc nie będziemy tutaj powtarzać tego materiału. Jeśli masz trudności ze znalezieniem rzeczy w interfejsie użytkownika, to jest to miejsce, w którym można znaleźć informacje na temat menu użytkownika i dostępnych opcji użytkownika. Przewodnik programowania zawiera podsumowanie kluczowych elementów języka programowania NetLogo. Zapewnia przegląd ważnych funkcji języka i może być użytecznym źródłem dla przykładów programowania. Warto czytać, zwłaszcza gdy zaczynasz od języka. Słownik NetLogo to miejsce, w którym programiści NetLogo spędzają większość czasu i zawierają linki do wszystkich poleceń dostępnych w tym języku. Przewodnik "Transition Guide" opisuje wcześniejsze wersje NetLogo i to, co zmieniło się w ostatnich wersjach, więc jest mniej korzystne dla osób uczących się programowania w NetLogo.

Ćwiczenie 3.4.2

Być może najbardziej użyteczną rzeczą, jaką należy wiedzieć na temat interfejsu użytkownika w NetLogo, jest załadowanie biblioteki modeli i wybranie konkretnego modelu. W menu Plik wybierz "Biblioteka modeli", a to załaduje dużą bibliotekę modeli podzielonych na różne obszary tematyczne, takie jak Sztuka, Biologia, Informatyka, Chemia i Fizyka i tak dalej. Aby zapoznać się z interfejsem, wybierz obszar tematyczny Biologia, a następnie wybierz model Termity. Po kliknięciu przycisku Konfiguracja na ekranie powinny pojawić się następujące elementy:



Zwróć uwagę na trzy zakładki menu u góry - Interface, Information i Procedures. Wybierz kartę Interface. Otrzymasz interfejs do twojego programu i wizualizację obecnegu stanu (zazwyczaj 2D) środowiska NetLogo, jak pokazano na rysunku powyżej. To będzie się różnić w zależności od modelu lub aplikacji aktualnie wykonywanej. Zwykle jest przycisk setup, aby ustawić początkowy stan środowiska, i przycisk go, aby rozpocząć symulację. Czasami można podać przycisk "go-once" - wykona model za pomocą pojedynczego kroku lub kleszcza. W innym przypadku zostanie podany przycisk go-forever, który wykona model w nieskończoność. Te elementy interfejsu można dodać, klikając menu Button i wybierając spośród wielu elementów, takich jak przyciski, suwaki i selektory:

Różne z tych elementów interfejsu definiują zmienne globalne lub wymagają określonego polecenia (tj. Procedury) gdzieś zdefiniowanego w programie. Na przykład przycisk go wymaga zdefiniowania polecenia o nazwie "go" gdzieś w procedurach modelu, ale etykieta wyświetlana na przycisku może być w razie potrzeby zastąpione. Spróbuj dodać jeden lub więcej elementów interfejsu do Interface dla modelu termitów. Karta Information przełącza się na ekran, na którym wyświetlane są informacje o modelu udostępnionym przez programistę. Dowiedz się, jakie informacje zostały zawarte w modelu Termites. Karta Procedures przełączy się w tryb ekranu, w którym wyświetlany jest kod NetLogo modelu i który można edytować. W przypadku modelu Termites, sprawdź, który kod jest wykonywany po kliknięciu przycisku instalacji i przycisków.

Ćwiczenie 3.4.3:

Istnieją cztery typy agentów w NetLogo:

1. żółwie;
2. łaty;
3. linki;
4. obserwator

Wyjaśnij, w jaki sposób używane są cztery typy agentów w NetLogo, korzystając z przykładów z Biblioteki modeli.

Ćwiczenie 3.4.4:

Wypróbuj model Predykacji owcy wilka w NetLogo:

http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation

Przeczytaj What is it? i Things To Notice w sekcji Information dla modelu. Następnie wypróbuj ćwiczenia sugerowane w sekcji Thing to try . W jaki sposób reprodukuje się owce i wilki w tym modelu? Jak wilk łapie owcę i co się dzieje, kiedy to się dzieje? Istnieje wiele sposobów, w jakie owce umierają. Co to jest? A jak wilki umierają? Jak rośnie trawa? Uruchom model kilka razy z domyślnymi parametrami. Jakie są możliwe wyniki symulacji? Spróbuj zmienić wartości suwaków, aby zobaczyć, jaki mają wpływ na symulację. Czy możesz stworzyć różne wyniki symulacji?

Ćwiczenie 3.4.5:

Wypróbuj model Tumor w NetLogo:

http://ccl.northwestern.edu/netlogo/models/Tumor

Przeczytaj What is it? i Things To Notice w sekcji Information dla modelu. Następnie wypróbuj ćwiczenia sugerowane w sekcji Thing to try.

W jaki sposób używane są następujące zmienne żółw w modelu?

• stem?;
• age;
• metastatic ?.

Co się dzieje, gdy nazywa się procedurę mitozy? Policz sposoby, w jakie różne agenci żółwia mogą umrzeć. Wyjaśnij, co dzieje się przy każdym wystąpieniu.

Ćwiczenie 3.4.6:

Omów ograniczenia podejścia zorientowanego na agentów przyjętego przez NetLogo. Jakie właściwości wyświetlają agenci w NetLogo? Czy na przykład wykazują one słabe, silne i najsilniejsze właściwości agentów?

3.5 Środowisko programistyczne NetLogo

Ćwiczenie 3.5.1:

Wypróbuj model Termites w NetLogo:

Biblioteka modelowa Termites NetLogo: Biologia> Termity

http://ccl.northwestern.edu/netlogo/models/Termites

Przeczytaj What is it? i Things To Notice w sekcji Information dla modelu. Następnie wypróbuj ćwiczenia sugerowane w sekcji Thing to try .

Ćwiczenie 3.5.2:

Wyjaśnij, co robią następujące procedury w modelu Termites

• search-for-chip;
• find-new-pile;
• put-down-chip;
• get-away;
• wiggle.

Ćwiczenie 3.5.3:

Wypróbuj także model Termites (Perspective Demo) w NetLogo:

http://ccl.northwestern.edu/netlogo/models/Termites(PerspectiveDemo)

Aby odtworzyć zrzut ekranu pokazany na rysunku powyżej, naciśnij przycisk 3D w środowisku po rozpoczęciu symulacji. Następnie naciśnij przycisk "follow one-of turtles". Zwalniamy symulację za pomocą suwaka prędkości w widoku 3D (za pomocą suwaka, jak pokazano na rysunku 3.5.3). Pozwoli to rozróżnić indywidualne zachowanie śledzonego termitów. Sprawdź zachowanie względem kodu źródłowego. Postaraj się ustalić, kiedy każda z trzech procedur - search-for-chip, find-new-pile, put-down-chip - jest wykonywany podczas oglądania akcji termitów.

Ćwiczenie 3.5.4:

Wypróbuj inne modele w bibliotece modeli NetLogo. Zobacz różne podsekcje wymienione w sekcji Przykładowe modele Art, Biology, Chemistry & Physics, Computer Science, Earth Science, Games, Mathematics, Networks, Social Science, i System Dynamics), aby poznać różne dostępne modele. Szczególnie spróbuj przejrzeć modele wymienione w sekcji przykładów kodu w bibliotece. Dobrym sposobem na zapoznanie się z modelami w tej sekcji jest naciśnięcie strzałki w dół, aby przewijać modele za pomocą menu po lewej stronie. Te modele są często dobrym punktem wyjścia opracowywanie własnych modeli. Jako przykład, spójrz na model zmiany klimatu: http://ccl.northwestern.edu/netlogo/models/ClimateChange Możesz dowiedzieć się o tym modelu, klikając przycisk Informacje po jego załadowaniu. Kliknij przycisk konfiguracji, aby skonfigurować środowisko. Następnie kliknij, aby go uruchomić. Spróbuj dodać Chmury i CO2, aby zobaczyć, co się stanie. Spróbuj także zmienić parametry jasności i albedo słońca za pomocą suwaka udostępnione w interfejsie. Twój ekran powinien wyglądać następująco:

Uruchom symulację, używając różnych ustawień z różnymi ilościami chmur i CO2. Jakie warunki powodują wzrost globalnej temperatury?

Ćwiczenie 3.5.5:

Spróbuj utworzyć własny model NetLogo, który załaduje i wyświetli tekst z pliku. Twój model będzie musiał wziąć pod uwagę trzy składniki składające się na model - interfejs, informacje i procedury. W interfejsie użyj dwóch przycisków, jeden do załadowania tekstu z pliku, a drugi do załadowania kodu źródłowego z pliku modelu NetLogo (są one przechowywane na dysku przy użyciu rozszerzenia ".nlogo"). Wyświetl tekst po wczytaniu do wielowierszowego pola wprowadzania. Dodaj odpowiednią dokumentację do Informacji o modelu. Upewnij się, że dodajesz różne sekcje, które szczegółowo opisują, co robi model, jak to się robi, jak go używać, opis interfejsu użytkownika, rzeczy do zauważenia, rzeczy do wypróbowania i jak można rozszerzyć model.

Ćwiczenie 3.5.6:

Spróbuj wyeksportować model utworzony w ćwiczeniu 3.5.5 do dokumentu tekstowego HTML, używając opcji Zapisz jako aplet w menu Plik. Sprawdź, czy aplet działa po załadowaniu dokumentu HMTL do przeglądarki internetowej.

Ćwiczenie 3.5.7:

NetLogo jest zaimplementowany w Javie. Możemy dodać nowe polecenia jako rozszerzenie do NetLogo, pisząc trochę kodu w Javie. Rzuć okiem na Przewodnik po rozszerzeniach w Podręczniku użytkownika NetLogo, aby mieć świadomość, że ten obiekt jest dostępny. Znajdź odpowiedzi na następujące pytania:

1. W jaki sposób używane są rozszerzenia w NetLogo?
2. Gdzie znajdują się rozszerzenia?

Ćwiczenie 3.5.8:

Dwa szczególnie przydatne rozszerzenia NetLogo to rozszerzenia tablic i tabel. Więcej informacji na ich temat można uzyskać, klikając opcję Tablice i tabele w Podręczniku użytkownika NetLogo. Być może jest to zaskakujące dla każdego, kto był używany do programowania w innych językach, tablice i tablice są rzadko używane - na przykład bardzo niewiele modeli w bibliotece modeli NetLogo korzysta z tych urządzeń. Jak myślisz, dlaczego tak się dzieje? (Podpowiedź: Jakie mechanizmy są dostępne w NetLogo, które pozwalają uniknąć używania macierzy i tabel?) W jakich okolicznościach chciałbyś użyć rozszerzenia tablicowego lub tabel?

3.6 Agenci i środowiska w NetLogo

Ćwiczenie 3.6.1:

Opisz szczegółowo, co robi następujący model NetLogo:

breed [wolves wolf]
breed [sheep a-sheep]
turtles-own [age gender]
to setup
clear-all
create-wolves 50 [
set age 0
set size 2
set color brown
ifelse random 2 = 0
[set gender "Male"]
[set gender "Female"]
setxy random-xcor random-ycor
]
create-sheep 500 [
set age 0
set size 2
set color white
ifelse random 2 = 0
[set gender "Male"]
[set gender "Female"]
setxy random-xcor random-ycor
]
end

W swojej odpowiedzi określ agentów żółwia, procedurę polecenia i zmienne żółwia. Co stanie się w środowisku po wywołaniu instalacji?

Ćwiczenie 3.6.2: Modele NetLogo Fox and Rabbits

Wypróbuj model Foxes and Rabbits w NetLogo:

http://files.bookboon.com/ai/Foxes-and-Rabbits.html

CO TO JEST?

Ten model pokazuje, jak używać ras, aby stworzyć dwie różne rasy żółwia - lisy i króliki - które mogą mieć różne właściwości, takie jak kolor. Tworzy 100 agentów lisów i 1000 królików w przypadkowych miejscach w środowisku.

INTERFEJS

Przycisk setup odtwarza nową populację lisów i królików w losowych lokalizacjach.

JAK TO DZIAŁA

Używa dwóch ras agentów żółwia, lisów i królików i pokazuje, w jaki sposób można użyć polecenia turtles-own, aby oba typy zakończyły się wspólnymi zmiennymi - age i gender. Polecenie setup po prostu wywołuje komendę create-foxes i create-rabbits, aby utworzyć agentów.

JAK TEGO UŻYĆ

Naprawdę nie można go używać do niczego, z wyjątkiem kilkakrotnego naciśnięcia przycisku setup. aby zobaczyć, jak agenci rozprzestrzeniają się w środowisku.

CZYM JEST CEL?

Jego celem jest pokazanie, jak definiować i tworzyć typy agentów.

ROZSZERZENIE MODELU

Spróbuj dodać dwa suwaki kontrolujące liczbę agentów utworzonych po naciśnięciu przycisku instalacji. Spróbuj zmienić kształty agentów tak, aby wyglądały jak lisy i króliki. (Podpowiedź: będziesz musiał użyć Edytora kształtów żółwia do tworzenia kształtów.) Spróbuj także zmienić rozmiary agentów tak, aby lisy były większe niż króliki. Twój model powinien wyglądać tak, jak pokazano na rysunku

POWIĄZANE MODELE

Zobacz model Foxes and Rabbits 2.

Ćwiczenie 3.6.3: Przykład życia Model NetLogo

Jako kolejny przykład, jak zdefiniować własne typy agentów żółwi w NetLogo, wypróbuj następujący przykład LifeLink w NetLogo. Zobacz także kod, naciskając kartę Procedures w Interfaace i spróbuj dowiedzieć się, co robi.

http://files.bookboon.com/ai/Life-Example.html

CO TO JEST?

Ten model pokazuje, jak używać prostych poleceń w NetLogo, aby symulować cykl życia ludzi.

INTERFEJS

Przycisk setup zresetuje symulację do stanu początkowego, gdy nikt nie żyje.
Przycisk go uruchomi symulację.
Suwak births-per-tick kontroluje liczbę narodzin przypadającą na każdy znacznik symulacji.
Suwak deaths-per-tick kontroluje liczbę zgonów na każdy znacznik symulacji.
Suwak maximum-age określa maksymalny wiek, zanim ludzie umrą ze starości.
Monitor "count people" zgłasza liczbę osób, które obecnie żyją.
Wykres Population pokazuje liczbę osób kontra tick.

JAK TO DZIAŁA

Używa jednego typu agentów żółwia, people, która ma jedną zmienną - age. Narodziny i śmierć występują przy każdym tyknięciu zgodnie z procedurami biarths i deaths. Agenci żółwia people żyją dopóki są wybierani losowo, aby umrzeć wcześnie, lub dopóki nie staną się zbyt starzy, zgodnie z procedurą życiową.

JAK TEGO UŻYĆ

Wybierz liczbę porodów i zgonów, które chcesz przypisać, i maksymalny wiek, korzystając z trzech suwaków. Naciśnij przycisk setup, aby zresetować symulację. Następnie naciśnij przycisk Start, aby go uruchomić.

CZYM JEST CEL?

Jego celem jest pokazanie, jak definiować i tworzyć typy agentów.

RZECZY DO NOTYFIKACJI

Zwróć uwagę, co się stanie, gdy ustawisz liczbę zgonów większą lub równą liczbie urodzeń. Jeśli zrobisz to na początku, nic się nie stanie. Czemu? Jeśli ustawisz na początku liczbę narodzin o jedną więcej niż śmierć na początku, z maksymalny wiek ustawiony na 100, a następnie niedługo, podczas gdy symulacja nadal działa, spróbuj zwiększyć liczbę zgonów, aby była równa liczbie urodzeń. Zauważ, że populacja stopniowo się zmniejsza aż w końcu osiągnie punkt równowagi. Zauważ, że to zajmie dużo czasu. Dlaczego to? Zauważ, że kiedy liczba narodzin jest niska, wydaje się, że ludzie poruszają się po środowisku. Jest to jednak tylko złudzenie. W modelu nie ma kodu, który tworzy ludzi żółwiowi agenci poruszają się.

RZECZY DO SPEŁNIENIA

Spróbuj zmienić wartości suwaków, aby zobaczyć, co dzieje się w symulacji. Spróbuj zmienić te wartości podczas działania symulacji i obserwuj, co dzieje się na wykresie.

ROZSZERZENIE MODELU

Spróbuj dodać kolejne parametry do modelu, aby symulacja była coraz bardziej realistyczna.

POWIĄZANE MODELE

Porównaj ten model z modelem przykładu kreskowania, który jest dołączony do biblioteki modeli NetLogo:

http://ccl.northwestern.edu/netlogo/models/HatchExample

Zwróćmy uwagę na ten model, że zrównoważony rozwój populacji jest bardzo wrażliwy na warunki początkowe i może również oscylować pomiędzy wzrastaniem a powolnym wymieraniem. Często cała populacja zginie całkowicie, ale czasami populacja przeżyje dłużej i zacznie się rozwijać. W jakich warunkach to się dzieje? Dla porównania, w jakich warunkach populacja modelu Life Example może się rozwijać lub wymierać?

Ćwiczenie 3.6.4:

Wyjaśnij, co robią poniższe procedury w modelu Life Example:

• births;
• life;
• deaths.

Ćwiczenie 3.6.5: N Przestrzenna przestrzeń Model NetLogo

Wypróbuj model N Dimensional Space w NetLogo:

http://files.bookboon.com/ai/N-Dimensional-Space.html

CO TO JEST?

Ten model tworzy prosty zestaw 5-wymiarowych danych (około 17 nowozelandzkich graczy rugby All Blacks) z wykorzystaniem współrzędnych kartezjańskich oraz współrzędnych równoległych.

INTERFEJS

Trzy przyciski w lewym dolnym rogu są zdefiniowane następująco:

- setup: czyści obie strony;
- setup-left-plot: kreślenie danych za pomocą współrzędnych kartezjańskich na wykresach po lewej stronie;
- setup-right-plot: kreślenie danych za pomocą współrzędnych równoległych na wykresie po prawej stronie.
Trzy suwaki w środkowym dole są zdefiniowane następująco:

- parallel-startx: tam, gdzie rysowana jest lewa pionowa oś dla wykresu po prawej stronie;
- parallel-width : szerokość między osiami pionowymi dla wykresu po prawej stronie;
- max-y: maksymalna wysokość od y = 0 każdej osi pionowej (najwyższa współrzędna y jest (+ max-y) i najniższy współrzędna y to (- max-y).
Pięć przełączników po prawej stronie definiuje się następująco po ustawieniu na On:

- plot-locks: spowoduje to dane dotyczące wykrytych blokad;
- plot-props: spowoduje to dane dotyczące wykreślanych rekwizytów;
- plot-wingers: doprowadzi to do danych dotyczących wykreślanych skrzydłowych;
- plot -half-back na wykresie: spowoduje to dane dotyczące wykreślanych halfbacków.

JAK TO DZIAŁA

Lewe wykresy używają standardowych funkcji rysowania NetLogo, aby narysować dane za pomocą układu współrzędnych kartezjańskich. W przypadku danych 5-wymiarowych pojawia się problem podczas próby przedstawienia danych na wykresie 2-wymiarowym. Możemy dodać trzeci wymiar, wykreślając kilka linii na tym samym wykresie, ale to pozostawia problem z wykreślaniem pozostałych dwóch wymiarów. Jednym z rozwiązań jest posiadanie dwóch wykresów i wykreślenie podzbioru wymiarów. W modelu podzestawy dwóch wymiarów to: (Waga, Rok debiutu, Pozycja), aby pokazać trendy w masach NZ All Blacks; oraz (Wysokość, Rok debiutu, Pozycja), aby pokazać trendy na wysokości NZ All Blacks. Prawy wykres przedstawia 5-wymiarowe dane z równoległymi współrzędnymi. Używa on agentów łatek do wykreślania osi równoległych i oznaczanych punktami na osiach przy użyciu punktów osiowych żółwia. Każda polilinia, która reprezentuje punkt 5-wymiarowy, jest nanoszona za pomocą tego, że każdy agent żółwów wszystkich czarnych przemieszcza się od lewej do prawej linii rysującej pomiędzy równoległymi osiami.

JAK TEGO UŻYĆ

Możesz użyć tych wykresów, aby dostrzec trendy lub wzorce w danych (np. Zamki i rekwizyty są zazwyczaj cięższe i wyższe od skrzydeł i pół-pleców, z wyjątkiem Jonah Lomu).

CZYM JEST CEL?

Celem jest ukazanie problemu z wizualizacją danych n-wymiarowych oraz różnic między wykreślaniem z użyciem układu współrzędnych kartezjańskich a równoległego układu współrzędnych.

RZECZY DO SPEŁNIENIA

Zobacz, co dzieje się na prawym wykresie po zmianie wartości suwaków. W niektórych przypadkach cała działka nie będzie już pasować do środowiska. W takim przypadku będziesz musiał zmienić ustawienia środowiska, aby odpowiadały. Spróbuj wyłączyć kreślenie zamków, rekwizytów, skrzydłowych lub pół-pleców.

ROZSZERZENIE MODELU

Spróbuj dodać możliwość, gdy użytkownik ma większą kontrolę nad tym, co zostanie narysowane. Na przykład: pozwól użytkownikowi zdecydować, który trójwymiarowy podzbiór danych zostanie naniesiony na lewe wykresy; lub pozwolić użytkownikowi na podjęcie decyzji o kolejności, w której osie są drukowane na prawym wykresie.

POWIĄZANE MODELE

Zobacz model Missionaries and Cannibals, aby zobaczyć równoległe współrzędne używane do wykreślania stanów przestrzeni wyszukiwania.

Ćwiczenie 3.6.6:

W NetLogo bardzo łatwo jest stworzyć wykresy podobne do pokazanych po lewej na rysunku powyżej. Przede wszystkim musisz utworzyć wykres w interfejsie. Można to zrobić, klikając menu Button, a następnie wybierając opcję "Plot" jako typ obiektu do dodania do Interface. Gdy to zrobisz, będziesz mógł umieścić nowy wykres w Interface. W tym samym czasie zostaniesz poproszony o nadanie mu nazwy i określenie jej atrybutów. Dzięki nazwie, którą podajesz (np. "Height of NZ All Blacks"), będziesz w stanie zaktualizować wątek wewnątrz kodu za pomocą różnych poleceń, takich jak:

set-current-plot " Height of NZ All Blacks"
set-current-plot-pen "Half-backs"
Domyślnie wykres ma z nim skojarzony tylko jeden długopis. Do narysowania narysowanej linii używa się długopisu. Można jednak utworzyć wiele pisaków - na rysunkach po lewej stronie rysunku były używane cztery pióra, ponieważ są tam cztery linie (niebieski, zielony, brązowy i karmazynowy). Tworzysz dodatkowe pióro przez kliknięcie na wykresie po jego umieszczeniu w Interface, następnie wybranie Edyt, aby edytować działkę, a następnie kliknięcie przycisku Create, aby utworzyć nowe pióro wydruku. Zostaniesz poproszony o podanie nazwy dla pióra - możesz wpisać dowolny ciąg; na przykład, na rysunku 3.6.5, cztery długopisy były nazywane "Locks", "Props", "Wingers" i "Half-backs" Istnieją dwa polecenia do określenia, co jest nanoszone: plot number plotxy x, y Polecenie plot narysuje punkt na współrzędnych x, y, gdzie y = liczba (liczba, która jest przekazywana jako pojedynczy parametr do polecenia) a x zwiększa się od x = 0 przy pierwszym wywołaniu, a następnie x = 1 za drugim razem x = 3 po raz trzeci i tak dalej. Polecenie plotxy będzie rysować punkt w określonych współrzędnych x, y, które są przekazywane jako parametry do polecenia. Jako ćwiczenie możemy przyjrzeć się niewielkiemu zestawowi danych takich jak te wymienione w tabeli 3.6.6. Tabela zawiera zestaw krotek zawierających informacje o graczach rugby z Nowej Zelandii, zwanych All Blacks. Dane są 5-wymiarowe, ponieważ każda krotka (wiersz w tabeli) zawiera pięć atrybutów dotyczących każdego gracza - pozycję, jaką grał, ich nazwę, wysokość w cm, wagę w kg i rok, w którym po raz pierwszy grali All Blacks.

Napisz model w NetLogo. Utwórz struktury danych do przechowywania danych w Tabeli korzystając z poniższych czterech metod:

• Lists;
• Arrays;
• Tables;
• Turtle agents.

W tym ostatnim musisz zdefiniować rasę do przechowywania danych wewnątrz agenta żółwia. Utwórz wykresy za pomocą danych przechowywanych w czterech różnych strukturach danych.

Ćwiczenie 3.6.7: Pusty model Maze NetLogo

Wypróbuj model Pusty labirynt w NetLogo:

http://files.bookboon.com/ai/Empty-Maze.html

CO TO JEST?

Ten model tworzy pusty "labirynt", który jest labiryntem z tylko zewnętrznymi ścianami, z wejściem i wyjściem na środku dolnym i środkowym wierzchołku.

INTERFEJS

Przycisk setup-empty-labirynt przerysuje labirynt. Suwaki są zdefiniowane w następujący sposób:

- left-cols: szerokość poziomych ścian ciągnionych po lewej stronie wejścia / wyjścia;
- right-cols: szerokość poziomych ścian ciągnionych z prawej strony wejścia / wyjścia;
- above-rows: wysokość pionowych ścian narysowanych nad rzędem przy y = 0;
- below-rows: wysokość pionowych ścian narysowanych pod rzędem przy y = 0

JAK TO DZIAŁA

Używa polecenia ask paches, aby ustawić niebieskie łaty, które definiują ściany, i ustawić pozostałe łatki na białe.

JAK TEGO UŻYĆ

Naprawdę nie możesz go używać do niczego, z wyjątkiem zmiany wartości suwaków w celu utworzenia labiryntów o różnych rozmiarach. Aby model narysował labirynt, naciśnij przycisk setup-empty-maze.

CZYM JEST CEL?

Jego celem jest pokazanie, jak łatwo jest używać poleceń poprawek do definiowania środowiska.

RZECZY DO SPEŁNIENIA

Zobacz, co się dzieje, gdy zmienisz wartość suwaków. Spróbuj zmienić Settings środowiska, takie jak Patch size maksymalne i minimalne współrzędne x i y.

ROZSZERZENIE MODELU

Spróbuj zmienić labirynt tak, aby wejście i wyjście były gdzie indziej. Spróbuj dodać agenta żółwia, aby poruszać się po labiryncie.

POWIĄZANE MODELE

Zobacz modele z Hampton Court Maze i Chevening House Maze.

Ćwiczenie 3.6.8

Narysuj zestaw sześciu zagnieżdżonych kwadratów, jak pokazano na Rysunku po prawej stronie. Należy jednak narysować każdy kwadrat w inny sposób, jak następuje:

1. użycie jednego czynnika żółwia dla najbardziej wewnętrznego kwadratu o kształcie "square 2";
2. użycie pojedynczego agenta żółwia dla następnego kwadratu, ale rysowanie go za pomocą pióra i komendy setxy;
3. użycie jednego agenta żółwia dla następnego kwadratu narysowanego za pomocą komendy stamp;
4. użycie wielu środków żółwia do następnego kwadratu;
5. użycie czterech agentów łączących pomiędzy czterema środkami żółwia dla następnego kwadratu; i w końcu
6. używanie łatek do zewnętrznego kwadratu.

Podpowiedź: spójrz na przykład z rysunku skrzynki w bibliotece modeli NetLogo jako punkt wyjścia

Ćwiczenie 3.6.9:

Importuj własne środowiska za pomocą polecenia import-pcolors. Żółwie będą w stanie czuć w tym środowisku, gdy poruszają się w nim. Nakładaj to środowisko na oryginalny obraz za pomocą polecenia import-drawing. My, jako obserwatorzy, możemy teraz "zobaczyć", co powinno mieć środowisko i jak wyglądać ale żółwie nie "widzą" pełnego szczegółu - wyczuwają tylko zaimportowane łaty. Dodaj trochę agentów żółwia do twoich środowisk (i bez importowanych łatek za pośrednictwem import-pcolors), aby sprawdzić, które z poleceń pozwalają agentom żółwiowym je wyczuć.

Ćwiczenie 3.6.10:

Napisz model NetLogo, który tasuje i rozdaje paczkę kart. Powinieneś użyć Edytora kształtów żółwia w menu Narzędzia, aby utworzyć kształty żółwi dla swojej karty. Możesz także użyć polecenia shuffle NetLogo, aby przetasować karty.

Ćwiczenie 3.6.11:

Napisz model NetLogo, który pozwala użytkownikowi wypełnić kwadraty sudoku. Powinien sprawdzić, czy wprowadzony numer jest poprawny - to znaczy, że liczba nie pojawia się gdzie indziej w poziomie, w pionie lub w tej samej siatce 3 na 3.

Ćwiczenie 3.6.12:

Napisz model NetLogo, który odczytuje dane z następującego pliku:
http://files.bookboon.com/ai/Santa-Fe-Trail.dat

Ten plik danych zawiera dane określające szlak mrówki Santa Fe opracowany przez Johna Koza w celu przetestowania wydajności algorytmów ewolucyjnych. Twoja ścieżka mrówek powinna wyglądać podobnie do obrazu, jak pokazano na rysunku

Plik danych zawiera znak "." Wskazujący, że łatka nie znajduje się na szlaku, znak "1" wskazujący, gdzie znajduje się żywność na szlaku, oraz znak "0" wskazujący, gdzie znajduje się szlak, ale bez jedzenie. Na przedstawionym zdjęciu, łaty bez szlaków są jasnozielone, plamy żywności na szlaku są ciemnozielone, a plamy nieżywnościowe na szlaku są brązowe. Problem szlaku mrówek Santa Fe ma na celu ewolucję programu komputerowego, który dostarczy instrukcji mrówce, która podąży szlakiem. Jest to ćwiczenie, które zostanie zbadane w tomie 2 tej serii książek. Jednak w tym ćwiczeniu wystarczy, że model odczyta ścieżkę z pliku danych, a następnie wyświetli go w środowisku.

3.7 Rysowanie labiryntów za pomocą agentów poprawek w NetLogo

Ćwiczenie 3.7.1: Model Hampton Lab Maze NetLogo

Wypróbuj model Hampton Court Maze w NetLogo: http://files.bookboon.com/ai/Hampton-Court-Maze.html

CO TO JEST?

Ten model rysuje schemat ogrodu w Hampton Court Palace w Wielkiej Brytanii. Wejście znajduje się na środku dna labiryntu, a celem jest dotarcie do centrum.

INTERFEJS

Przycisk setup-hampton-court-maze przerysuje labirynt. Suwaki są zdefiniowane w następujący sposób:
- row-patches-width: szerokość między poziomymi ścianami w labiryncie;
- col-patches-width: szerokość między pionowymi ścianami w labiryncie.

JAK TO DZIAŁA

Używa polecenia ask patches, aby ustawić niebieskie łaty, które definiują ściany, i ustawić pozostałe łatki na białe. Kod używa dwóch procedur, które są podobne, setup-row i setup-col, aby narysować ściany odpowiednio w poziomym wierszu lub pionowej kolumnie. Te procedury przyjmują numer wiersza lub kolumny jako pierwszy parametr, kolor, z którego ściany mają być rysowane, oraz lista zawierająca listy o podwójnej szerokości, które definiują segmenty, w których ściany mają być rysowane w wierszu lub kolumnie.

JAK TEGO UŻYĆ

Naprawdę nie możesz go używać do niczego, z wyjątkiem zmiany wartości suwaków w celu utworzenia labiryntów o różnych rozmiarach. Aby model narysował labirynt, naciśnij przycisk setup-hampton-court-maze.

JAKI JEST CEL?

Celem jest stworzenie wirtualnego labiryntu, który w rzeczywistości ma odpowiadający mu labirynt, aby zademonstrować, w jaki sposób środowiska wirtualne mogą odzwierciedlać rzeczywiste środowiska, ale w procesie tym często występuje zniekształcenie.

RZECZY DO SPEŁNIENIA

Zobacz, co się dzieje, gdy zmienisz wartość suwaków. Spróbuj zmienić ustawienia środowiska, takie jak rozmiar poprawki i maksymalne i minimalne współrzędne x i y.

ROZSZERZENIE MODELU

Spróbuj dodać agenta żółwia, aby poruszać się po labiryncie.

POWIĄZANE MODELE

Zobacz modele Pustego Maze i Chevening House Maze. Ćwiczenie 3.7.2:M Model Chevening House Maze NetLogo

Wypróbuj model Chevening House Maze w NetLogo: http://files.bookboon.com/ai/Chevening-House-Maze.html

CO TO JEST?

Ten model rysuje schemat labiryntu Chevening House w Wielkiej Brytanii. Wejście znajduje się na środku dna labiryntu, a celem jest dotarcie do centrum. Labirynt został zaprojektowany tak, aby w prosty sposób zniszczyć zachowanie rąk w ścianie, aby dotrzeć do środka. W tym przypadku środek występuje na wyspie, która nie jest bezpośrednio połączona ze ścianami zewnętrznymi.

INTERFEJS

Przycisk "setup-chevening-maze" przerysuje labirynt. Suwaki są zdefiniowane w następujący sposób:

- row-patch-width: szerokość między poziomymi ścianami w labiryncie;
- col-patches-width: szerokość między pionowymi ścianami w labiryncie.

JAK TO DZIAŁA

Używa polecenia ask patches, aby ustawić niebieskie łaty, które definiują ściany, i ustawić pozostałe łatki na białe. Kod używa dwóch procedur, które są podobne, setup-row i setup-col, aby narysować ściany odpowiednio w poziomym wierszu lub pionowej kolumnie. Te procedury przyjmują numer wiersza lub kolumny jako pierwszy parametr, kolor, z którego ściany mają być rysowane, oraz lista zawierająca listy o podwójnej szerokości, które definiują segmenty, w których ściany mają być rysowane w wierszu lub kolumnie.

JAK TEGO UŻYĆ

Naprawdę nie możesz go używać do niczego, z wyjątkiem zmiany wartości suwaków w celu utworzenia labiryntów o różnych rozmiarach. Aby model narysował labirynt, naciśnij przycisk setup-chevening-maze.

JAKI JEST CEL?

Jego celem jest stworzenie wirtualnego labiryntu, który w rzeczywistości ma odpowiadający mu labirynt, aby zademonstrować, w jaki sposób środowiska wirtualne mogą odzwierciedlać rzeczywiste środowiska, ale w których często mogą wystąpić zniekształcenia.

RZECZY DO SPEŁNIENIA

Zobacz, co się dzieje, gdy zmienisz wartość suwaków. Spróbuj zmienić Settings środowiska, takie jak Patch size i maksymalne i minimalne współrzędne x i y. Spróbuj rysować środkową wyspę w innym kolorze, aby pokazać, że rzeczywiście jest to wyspa.

ROZSZERZENIE MODELU

Spróbuj dodać agenta żółwia, aby poruszać się po labiryncie.

POWIĄZANE MODELE

Zobacz modele Puste Maze i Hampton Court Maze.

Ćwiczenie 3.7.3:

Spróbuj stworzyć swój własny labirynt za pomocą ustawień setup-row i setup-col, które zostały użyte w modelach Hampton Court Maze i w Cheverning House Maze, aby stworzyć dwa labirynty. Staraj się, aby były inne niż dwa labirynty, z własnym niepowtarzalnym smakiem. Na przykład spróbuj użyć różnych kolorów ścian i ułóż je w kształcie zwierzęcia lub owada, na przykład motyla.

Ćwiczenie 3.7.4:

Spróbuj zmodyfikować model Cheening House Maze, aby pokazać, dlaczego centrum labiryntu nie jest połączone z zewnętrznymi ścianami. Możesz to zrobić, używając innego koloru dla każdej oddzielnej "wyspy" w labiryncie. Ile wysp jest w labiryncie?


Powrót

  Ruch 

Ćwiczenie 4.1.1:

Spróbuj dodać własne przykłady odległości, powstrzymania lub ruchu

Ćwiczenie 4.1.2:

"W standardowym amerykańskim angielskim słowo z największą gradacją znaczeń jest prawdopodobnie uruchamiane. Słownik Random House Unabridged oferuje sto osiem opcji, zaczynając od "iść szybko, poruszając nogami szybciej niż na spacerze", a kończąc na "stopionym lub upłynnionym". " Stephen King, Wolves of the Calla, 2003 (strona 523). Sprawdź tę ofertę, patrząc na wpis dla słowa "run" w kilku słownikach. Sprawdź również wpisy dotyczące innych słów związanych z ruchem, takich jak "chód", "przeszukiwanie", "ruch" i "idź". Wiele znaczeń dla gradacji słowa "biegnij" wywodzi się z powszechnego pojęcia pewnej formy szybszego ruchu, czy to metaforycznie, czy bardziej bezpośredniej korespondencji z aktywnością fizyczną biegania. Jak myślisz, dlaczego "run" ma o wiele więcej gradacji w słowach, niż w przypadku innych słów związanych z ruchem "chodzić" i "czołgać się"? Zwróć uwagę, że słowa "move" i "go" również mają wiele gradacji, ale nie tak wiele jak "run".

Ruch agentów żółwia w NetLogo

Ćwiczenie 4.2.1:

Zapisz zestaw instrukcji (używając poleceń forward, left i right), który dostarczy agentowi żółwia, aby nawigować z następującego punktu startowego pokazanego na lewym obrazku poniżej do punktu pokazanego na prawym obrazku poniżej:



Wymiary czarnego kwadratu to 60 łat na 60 łat. Żółw zaczyna się w środkowej części kwadratu, jak pokazano na lewym obrazku.

Ćwiczenie 4.2.2:

Zapisz zestaw instrukcji, aby zmusić agenta żółwia do poruszania się, wykonując minimalną liczbę kroków od punktu startowego na lewym obrazku w ćwiczeniu powyżej powyżej do punktu końcowego na prawym obrazku.

Ćwiczenie 4.2.3:

Napisz model NetLogo, który używa agenta żółwia, aby narysować zestaw zagnieżdżonych trójkątów równobocznych, jak pokazano na obrazku po prawej stronie. Trójkąty powinny zostać narysowane najpierw zewnętrznym trójkątem, a następnie następnym wewnątrz, i tak dalej. Dodaj suwaki do modelu Interface , aby można było zmienić następujące ustawienia: początkową orientację; początkowe współrzędne dolnej krawędzi trójkąta zewnętrznego; liczba narysowanych trójkątów; grubość boków; początkowa długość jednego z boków; kąt skoku i odległość; i stosunek do zmniejszania długości boków, kiedy żółw przeskakuje od rysowania jednego trójkąta do następnego zagnieżdżonego w nim. Baw się z modelem, zmieniając wartość suwaków, aby zobaczyć różnorodność wzorów, które możesz wygenerować. Zmień kod, aby kolor używany do narysowania każdego trójkąta zmieniał każdą iterację.

Ćwiczenie 4.2.4:

Zmodyfikuj swój kod tak, aby nagłówek żółwia mógł zostać zmieniony o kąt określony przez suwak w Interface po narysowaniu trójkąta, a żółw przeskoczył do punktu początkowego następnego trójkąta. Spowoduje to, że trójkąty będą kolejno obracane w każdej iteracji o kąt określony przez suwak. Teraz musisz odtworzyć obraz po prawej stronie.

Ćwiczenie 4.2.5:

Zmodyfikuj swój model, aby wielokrotnie powtarzać rysowanie zestawu zagnieżdżonych trójkątów. Dodaj suwak do Interface, który pozwala kontrolować liczbę razy, gdy zestaw trójkątów jest narysowany, oraz kąt lub obrót zastosowany przed przejściem do rysowania następnego zestawu trójkątów. Spróbuj stworzyć wzór pokazany na obrazku poniżej. Zostało to wyprodukowane przez model Nested Triangles NetLogo. Baw się przy pomocy suwaków i stwórz dwa lub więcej własnych charakterystycznych wzorów, które różnią się od tych powyżej. W co najmniej jednym ze swoich wzorów eksperymentuj ze zmianą koloru, aby stworzyć bardziej estetyczny wzór.

Ćwiczenie 4.2.6:

Dodaj żółwia do labiryntu Hampton Court i poruszaj nim po labiryncie, jak pokazano na poniższym obrazku:



Ćwiczenie 4.2.7:

Zmodyfikuj model Lisów i Królików z Ćwiczenia 3.6.2, aby po utworzeniu królików i lisów, króliki odsunęły się od najbliższych lisów, aż poczują, że znajdują się w bezpiecznej odległości. Dodaj suwaki do interfejsu, aby można było kontrolować liczbę lisów, liczbę lub króliki i promień, w którym królik czuje się bezpiecznie. Napisz dwie wersje zachowania królików, w którym w pierwszym wszystkie króliki odsuwają się w tym samym czasie, a w drugim króliki na zmianę przechodzą na bezpieczną odległość.

Zachowanie i podejmowanie decyzji w zakresie ruchu

Ćwiczenie 4.3.1:

Dodaj agenta żółwia do modelu, który opracowałeś dla śladu mrówki Santa Fe w ćwiczeniu 3.6.12. (Możesz użyć kształtu "błędu" w Edytorze żółwia, aby wyglądał jak mrówka). Postaraj się, aby agent żółwia podążał tropem, używając tylko trzech rodzajów prostych ruchów: poruszania się krok po kroku; skręcając w prawo o 90 stopni; lub skręcając w lewo o 90 stopni. Będziesz także musiał dodać reportera, który pozwoli agentowi żółwia wyczuć, czy jedzenie jest przed tobą. Postaraj się wymyślić ogólne rozwiązanie, bez uciekania się do zbyt specyficznego rozwiązania tylko do pracy na torze Santa-Fe-Trail, które reprezentuje optymalne rozwiązanie. Innymi słowy, spróbuj znaleźć rozwiązanie, które ma najlepszy kompromis pomiędzy liczbą kroków wykonanych przez program, gdy jest wykonywany razy większy od kodu programu.

Rysowanie FSM i drzew decyzyjnych za pomocą agentów linków w NetLogo

Ćwiczenie 4.4.1: Two States NetLogo Model

Wypróbuj model Two States Maze w NetLogo:

http://files.bookboon.com/ai/Two-States.html



CO TO JEST?

Ten model pokazuje, jak narysować proste dwustanowe Finas State State Automation (FSA), które reprezentuje proces wyłączania lub włączania światła.

INTERFEJS

Przyciski interfejsu są zdefiniowane w następujący sposób:

- setup: konfiguruje FSA. (Uwaga: czasami trzeba nacisnąć dwa razy z rzędu, aby połączenia pomiędzy węzłami stały się zakrzywione, a nie proste).

- go-once: przenosi agenta z jednego stanu do drugiego.

- go: Agent wielokrotnie przesuwa się między stanami.

JAK TO DZIAŁA

Pojedynczy agent wykonuje animację. Aby zasymulować ruch, agent przesuwa się do położenia sąsiedniego, a następnie zwiększa grubość łącza, przez które przechodzi.

JAK TEGO UŻYĆ

Model ten może być używany jako punkt wyjścia do rysowania bardziej skomplikowanych FSA, które mają o wiele więcej stanów i wielu agentów poruszających się wokół nich.

CZYM JEST CEL?

Jego celem jest pokazanie w jaki sposób można animować FSA w NetLogo.

ROZSZERZENIE MODELU

Spróbuj dodać więcej stanów i więcej agentów. Spróbuj dodać stan z własnym linkiem do siebie. Wskazówka: Jednym ze sposobów na to jest użycie ukrytego stanu.

Ćwiczenie 4.4.2: Etapy cyklu życia Model NetLogo

Wypróbuj model etapów cyklu życia w NetLogo:

http://files.bookboon.com/ai/Life-Cycle-Stages.html



CO TO JEST?

Ten model pokazuje przykład automatów stanu skończonego (FSA), które reprezentują etapy cyklu życia ludzi przez całe ich życie. Model oparty jest na modelu zaproponowanym przez D. Jobbera (1998) w "Principles and Practice of Marketing", McGraw-Hill. FSA jest narysowany obrócony o 90 stopni w sposób, w jaki Jobber go rysuje. Jest tak dlatego, że łatwiej jest dopasować środkową linię stanów w pionie niż w poziomie w środowisku NetLogo. Model pokazuje, że życie nie jest linearną progresją - są cykle, przez które przechodzą ludzie.

INTERFEJS

Przyciski interfejsu są zdefiniowane w następujący sposób:

- setup: konfiguruje FSA.

- go-once: Wykonuje jeden znacznik symulacji.

- go: To sprawia, że symulacja działa nieprzerwanie.

Suwaki Interface i przełączniki są zdefiniowane w następujący sposób:

- births-each-tick slider: Jest to liczba agentów żółwia urodzonych w każdym tikku (rozpoczynających się od stanu "Single, at home" w górnym środku FSA.

- turtles-are-visible : jeśli opcja ta jest wyłączona, żółwie staną się niewidoczne.

Na wykresie interfejsu oznaczonym "Agent population" kreślona jest liczba agentów, które istnieją obecnie, a czas tyka dla trzech zestawów stanów: dla wszystkich stanów; tylko dla państwa "Young , parents"; i dla tylko stan "Solitary, retired".

JAK TO DZIAŁA

Suwak birth-each-tick kontroluje liczbę agentów żółwia, które rodzą się na każdym kleszczu. Zaczną w górnym środkowym obszarze oznaczonym jako "Single, at home". Każdy kolejny tykot, agenci będą losowo wybierać przechodzenie do jednego ze stanów wychodzących. Ostatecznie każdy agent znajdzie się w ostatecznym stanie oznaczonym jako "Solitary, retired" w środkowym dole.

JAK TEGO UŻYĆ

Ten model jest kolejnym bardziej skomplikowanym przykładem FSA. Może być używany jako punkt wyjścia do rysowania innych FSA, a następnie animowania ich. Aby uruchomić symulację, najpierw naciśnij przycisk konfiguracji, a następnie przycisk "Jedź raz" (aby kontynuować symulację jednym kliknięciem) lub przycisk "Przejdź" (aby symulacja przebiega w sposób ciągły).

CZYM JEST CEL?

Jego celem jest pokazanie w jaki sposób można animować FSA w NetLogo.

POWIĄZANE MODELE

Zobacz modele Two States.

Ćwiczenie 4.4.3:

Użyj przykładowego kodu w dwóch powyższych modelach (dwa stany i etapy cyklu życia), aby stworzyć własny animowany FSM w NetLogo (musi on zawierać co najmniej trzy stany).

Ćwiczenie 4.4.4: Model ptaków NZ

Wypróbuj model NZ Birds w NetLogo:

http://files.bookboon.com/ai/NZ-Birds.html

CO TO JEST?

Ten model pokazuje, jak utworzyć drzewo decyzyjne w NetLogo, a następnie animować je. Drzewo decyzyjne składa się z szeregu pytań, które można wykorzystać do odgadnięcia, czy ptak, o którym myśli dana osoba, jest pewnym rodzajem nowozelandzkiego ptaka, czy też nie (w bardzo podobny sposób jak w grze towarzyskiej Twenty Questions).

INTERFEJS

Przyciski interfejsu są zdefiniowane w następujący sposób:

- setup: Ustawia i wyświetla całe drzewo decyzyjne.

- go-once: pytanie jest zadawane na podstawie bieżącego punktu w drzewie decyzyjnym.

- go: Proces zadawania pytań trwa do momentu znalezienia odpowiedzi.

JAK TO DZIAŁA

Stany drzewa decyzyjnego są reprezentowane przez agentów żółwia (zwanych "points" w modelu) i zawierają zmienną pytań, która jest pytaniem, które należy zadać agentowi spacerowemu w punkcie decyzyjnym. Agenci spacer są reprezentowani przez agentów żółwia (zwanych "agents" w modelu) i przechowują one zmienną lokacji, która jest ustawiona na punkt w drzewie decyzyjnym, który agent może obecnie znaleźć. Odpowiedzi są przechowywane jako zmienne powiązane z łączami między węzłami w drzewie decyzyjnym (to jest points). Agenci Walker przenoszą się do węzła potomnego w zależności od odpowiedzi udzielonej przez użytkownika z tym pytaniem.

JAK TEGO UŻYĆ

Poproś kogoś, aby pomyślał o ptaku nowozelandzkim, a następnie uruchom model, naciskając przycisk setup, a następnie przyciski go, aby sprawdzić, czy model może odgadnąć, którego ptaka myśli.

CZYM JEST CEL?

Jego celem jest zilustrowanie sposobu, w jaki można utworzyć drzewo decyzyjne NetLogo i animowanie go. Drugorzędnym celem jest pokazanie, że podejmowanie decyzji przez agenta jest analogiczne do ruchu w środowisku.

RZECZY DO SPEŁNIENIA

Zobacz, co dzieje się, gdy osoba, z którą grasz, wybiera ptaka innego niż Niderlandzki do zabawy. Sprawdź, co dzieje się, gdy osoba, z którą grasz, podaje nieprawidłową odpowiedź lub nie zna odpowiedzi na to pytanie.

ROZSZERZENIE MODELU

Spróbuj utworzyć inne drzewo decyzyjne. Spróbuj dodać opcję "nie wiem" do możliwych odpowiedzi na pytania.

Animacja komputerowa

Ćwiczenie 4.5.1:

Wypróbuj model Animacja kształtu w NetLogo

http://ccl.northwestern.edu/netlogo/models/ShapeAnimationExample

Wyjaśnij, co robią następujące procedury w tym modelu:

• animate;

• move-person;

• age-flower;

• make-flower.

Ćwiczenie 4.5.2: Model chodu w sztyfcie

Wypróbuj model chodzenia do figury w NetLogo:

http://files.bookboon.com/ai/Stick-Figure-Walking.html

CO TO JEST?

Ten model pokazuje, jak dostać postać stick, aby przejść przez ekran.

INTERFEJS

Przyciski Interface są zdefiniowane w następujący sposób:

- setup: Resetuje animację poprzez umieszczenie figury po lewej stronie otoczenia.

-go-once: Postacie przesuwają się po ekranie od lewej do prawej strony.

- go: postać kija kilkakrotnie przechodzi przez ekran od lewej do prawej strony.

Suwaki Interface i przełączniki są zdefiniowane w następujący sposób:

-forward-movement-increment: Tak dalece postać porusza się do przodu, następna klatka jest rysowana.

- clear-display-in-between: Jeśli opcja ta jest wyłączona, wszystkie ramki zostaną narysowane bez uprzedniego rozliczenia poprzedniej.

JAK TO DZIAŁA

Używa sześciu wersji postaci stick, aby wykonać podstawową animację klatki kluczowej. Istnieje sześć konfiguracji postaci kija, które odpowiadają sześciu ramkom używanym do definiowania ruchu chodzenia. Te sześć ramek jest wyświetlanych jedna po drugiej, a następnie animacja się powtarza. tj. sekwencja ramek to 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, ... Figurka jest rysowana za pomocą dwóch typów żółwi - jednej dla głowy, a drugiej dla ciała i kończyn. Odbywa się to za pomocą poleceń rysowania żółwia NetLogo, a nie za pomocą agentów linków.

JAK TEGO UŻYĆ

Naprawdę nie możesz go używać do niczego, z wyjątkiem zmiany wartości suwaków w celu utworzenia labiryntów o różnych rozmiarach. Najpierw naciśnij przycisk setup, a następnie jeśli chcesz uruchomić sekwencję animacji raz, a następnie naciśnij przycisk go-once. Jeśli chcesz, aby sekwencja animacji działała nieprzerwanie, naciśnij przycisk go. Zmiana suwaka forward-movement-increment zmienia prędkość ruchu, jeśli przełącznik z clear-display-in-between jest ustawiony na On. Jeśli ustawione na Off, rysuje wszystkie ramki.

CZYM JEST CEL?

Jego celem jest pokazanie, w jaki sposób wykonać podstawową animację klatki kluczowej, a także pokazać, jak zmiana pojedynczej zmiennej, która określa ruch do przodu figury kijem (np. Zmienna przyrostowa ruchu do przodu) może dawać zaskakujący zakres ruchów. Kolejnym celem jest zilustrowanie, w jaki sposób ruch ma podstawowe znaczenie dla agenta w środowisku i może być wykorzystany do odróżnienia jego rodzaju zachowania. Ruch ciała i głowy stick figurek (manifestacja jego wykonania) może również zostać rozłożony na ruch poszczególnych części jego ciała i głowy

RZECZY DO SPEŁNIENIA

Spróbuj zmienić suwak forward-movement-increment, aby zobaczyć, co dzieje się z animacją. Spróbuj zrobić to dynamicznie, na przykład, zmieniając suwak w trakcie animacji. Spowoduje to, że postać wydaje się zwolnić spacer lub przyspieszyć bieg. Jeśli ustawisz inkrement na ujemny, zacznie się cofać. Jeśli ustawisz inkrement na -1, możesz również dostać figurkę do moonwalk.

ROZSZERZENIE MODELU

Spróbuj użyć innego zestawu klatek, aby uzyskać postać stick do chodzenia / biegania / skakania / raczkowania na różne sposoby.

POWIĄZANE MODELE

Zobacz model Stick Animation Figure

Ćwiczenie 4.5.3:

Wypróbuj model animacji stick figure w NetLogo:

http://files.bookboon.com/ai/Stick-Figure-Animation.html

CO TO JEST?

Ten model pozwala tworzyć własne animacje figurek i eksportować je do plików do importowania na później lub eksportować je do plików filmowych QuickTime. Model został zainspirowany aplikacją Pivot Stick Figure Animator stworzoną przez Petera Bone.

INTERFEJS

Przyciski interfejsu są zdefiniowane w następujący sposób:

- start-recording: Resetuje sekwencję animacji.

- record-this-frame: Wykonuje migawkę tego, co aktualnie znajduje się na ekranie, oraz dodaje ją jako kolejną klatkę do sekwencji animacji.
- play=frames: Spowoduje to (raz) wszystkie klatki zapisane w sekwencji animacji. Opóźnienie pomiędzy odtwarzaniem każdej klatki w sekwencji jest określane przez opóźnienie klatki suwak. Która ramka jest odtwarzana jest pokazywana przez monitor numeru ramki.
- play-forever: To spowoduje wielokrotne odtwarzanie nagranych klatek.
- show-all-frames: Pokazuje wszystkie nagrane klatki nałożone jedna na drugą z pokazanymi numerami klatek.
- create-new-figure: Rysuje nową postać na ekranie w aktualnej pozycji myszy po kliknięciu myszką. Kolory kreski są określane przez suwaki koloru głowy, koloru punktowego i koloru linii.
- select-object: Pozwala użytkownikowi wybrać obiekt (głowę stick figure lub jeden z jego punktów obrotu), aby można go było przesunąć.
- erase-object: Pozwala użytkownikowi na wymazanie obiektu.
- select-region: Umożliwia użytkownikowi wybranie wielu obiektów wewnątrz prostokątnego regionu w celu ich przesunięcia.
- erase-region: Umożliwia użytkownikowi kasowanie obiektów wewnątrz regionu.
- export-animation: eksportuje animację do pliku na dysku, aby mogła zostać zaimportowana w późniejszym terminie. (Uwaga: to nie działa z apletu. Pobierz plik modelu, i uruchom go bezpośrednio).
- import-animation: importuje animację z pliku już zapisanego na dysku. (Uwaga: to nie działa z apletu: pobierz plik modelu i uruchom go bezpośrednio).
- export-movie: eksportuje animację do pliku filmowego QuickTime. Rama filmu ,szybkość jest określona przez suwak movie-frame-rate (Uwaga: to nie zadziała z aplet. Pobierz plik modelu i uruchom go bezpośrednio).
- draw-text: Pozwala użytkownikowi na narysowanie tekstu na aktualnej pozycji myszy, kiedy klikasz myszką. Wyrysowany tekst jest określony przez pole tekstowe i rozmiar i kolor czcionki określają suwaki wielkości tekstu i tekstu.



JAK TO DZIAŁA

Każda figura jest rysowana przy użyciu trzech typów agentów - head żółwia głowy do reprezentowania głowy; point żółwia do reprezentowania punktów obrotu figurki; oraz agent łącza line do reprezentowania ciała i kończyn. Dodatkowo, do rysowania tekstu wykorzystywana jest typ agenta tekstowego. Nagrywanie odbywa się za pomocą poleceń show-turtle i hide-turtle NetLogo. Wyświetlane są tylko bieżące ramki - pozostali zarejestrowani agenci są ukryci. Kopie agentów żółwia agenci łączące ze wszystkich starych nagranych ramek pozostają w środowisku. Te kopie są przechowywane w określonych nagrywarkach - recorded-head, recorded-points, recorded-lines i recorded-texts - tak, że agenci obecnej ramki mogą być łatwo odróżnieni od agentów nagranej ramki. Te zarejestrowane agenty mają również dodatkową zmienną - frame, hframe, lframe lub tframe - która jest używana do przechowywania numeru klatki podczas ich rejestrowania. Podczas odtwarzania animacji procedura wykonuje pętlę while dla każdego numeru ramki. Ta procedura wielokrotnie najpierw ukrywa wszystkich agentów, a następnie tylko zarejestrowani agenci z bieżącym numerem ramki są pokazane.

JAK TEGO UŻYĆ

Użyj przycisku start-recording, aby rozpocząć nagrywanie sekwencji animacji. Dodaj tyle nowych figurek, ile chcesz, za pomocą przycisku create=new-figure. Przesuń te figury wokół lub usuń je za pomocą przycisków edycji - select-object, erase-object, select-region i erase-region. Za każdym razem, gdy chcesz, aby dany animowany ekran został nagrany, naciśnij przycisk record-this-frame. Nic nie jest nagrywane, dopóki ten przycisk nie zostanie naciśnięty - ruch obiektów wokół podczas ich edycji nie zostanie zapisany w sekwencji animacji. Możesz odtwarzać sekwencję animacji jeden raz, naciskając przycisk play-frames lub utrzymywać ją w ciągłym ruchu naciśnięcie przyciskuplay-forever. Gdy jesteś zadowolony z animacji, zapisz ją na dysku za pomocą przycisku export-animation, aby można było załadować ją za pomocą przycisku import-animation lub wyeksportować ją do filmu QuickTime za pomocą przycisku export-movie.

CZYM JEST CEL?

Ten model został zainspirowany nieskończoną różnorodnością i czystą kreatywnością niezliczonych animacji stick figurek, które można znaleźć na YouTube. Styl modelu przypomina program Pivot Stick Figure Animator w domenie publicznej stworzony przez Petera Bone. Jego celem jest pokazanie, jak wykonać podstawową animację klatki kluczowej. Kolejnym celem jest zilustrowanie, w jaki sposób ruch ma podstawowe znaczenie dla agenta w środowisku i może być wykorzystany do odróżnienia jego rodzaju zachowania. Ruch ciała i głowy stick figurek (manifestacja jego ucieleśnienia) może również zostać rozłożony na ruch poszczególnych części jego ciała i głowy.

RZECZY DO SPEŁNIENIA

Spróbuj tworzyć skomplikowane animacje figurkowe. Jesteś ograniczony jedynie swoją wyobraźnią. Jeśli utkniesz, spójrz na animacje stick figurek na YouTube.

ROZSZERZENIE MODELU

Spróbuj pozwolić użytkownikowi dodawać inne obiekty, takie jak drzewa, samochody i budynki. Szybkie spojrzenie w YouTube pokazuje, że jedna konkretna odmiana animacji występuje często -stop-frame - animation za pomocą postaci Lego, zwłaszcza Lego Star Wars. Zmień ten model, aby pokazywać figurki Lego, a także postaci stick (takie jak Lego Clone Troopers i Lego Yoda). Gdy to zrobisz, możesz spróbować stworzyć alternatywny świat Gwiezdnych wojen, w którym znane postacie z Gwiezdnych Wojen walczą z atakującymi postaciami Stick.

POWIĄZANE MODELE

Zobacz model chodzenia do figury.

Ćwiczenie 4.5.4:

Dowiedz się, co robi model animacji figury po naciśnięciu następujących przycisków:

• record-this-frame;

• play-frames;

• show-all-frames;

• export-animation;

• import-animation;

• export-movie.

Ćwiczenie 4.5.5:

Napisz model NetLogo, który będzie animował prosty ruch agenta w środowisku od lewej do prawej, tak jak model Stick Figure Walking. Dodaj selektor do interfejsu, aby użytkownik mógł wybrać kształt animowanego agenta - na przykład samochody, ciężarówki, pociągi i autobusy.

Animowane mapowanie i symulacja

Ćwiczenie 4.6.1: Model Continental Divide NetLogo

Wypróbuj model Continental Divide w NetLogo:

http://ccl.northwestern.edu/netlogo/models/ContinentalDivide

Dowiedz się, w jaki sposób model ustawia środowisko z danych wysokości (zwróć uwagę na użycie polecenia foreach na wielu listach). Dowiedz się również, w jaki sposób przeprowadzana jest powódź.

Ćwiczenie 4.6.2: Model Grand Canyon NetLogo

Wypróbuj model Wielkiego Kanionu w NetLogo:

http://ccl.northwestern.edu/netlogo/models/GrandCanyon

W jaki sposób dane wysokości są importowane do tego modelu? Jak działa procedura przepływu? Innymi słowy, w jaki sposób zachowują się agenci kropel deszczu, aby symulować przepływ wody? Zauważ w pewnym momencie procedury, że agenci typu kropli deszczu przełączają się na typ wodny. Dlaczego to się robi? Zwróć uwagę na użycie globalnego zestawu agentów na granicy poprawek, aby uprościć rozpoznawanie, kiedy brzeg środowiska zostanie osiągnięty.


Powrót

 Ucieleśnienie 



Ćwiczenie 5.1.1:

Spróbuj dodać własne przykłady Ciała lub Umysłu, Wzroku, Słuchu, Zapachu, Smaku i jedzenia, lub Dotyk.

5.2 Kilka cech autonomicznych agentów

Ćwiczenie 5.2.1:

Wypełnij poniższą tabelę, używając kilku przykładów różnych typów agentów ze świata rzeczywistego i wirtualnego wymienionych w pierwszej kolumnie:

Rodzaj agenta :

Prawdziwy agent
Prawdziwy autonomiczny robot
Prawdziwy półautonomiczny robot
Wirtualny agent
Wirtualny agent pół-autonomiczny
Symulowany agent

Wykonanie (możliwości wykrywania) :

Środowisko :

Zachowanie środowiska (reaktywne lub kognitywne) :

W drugiej kolumnie opisz przykłady wykonania i możliwości wykrywania, z których korzysta agent do interakcji i odczuwania świata. W trzeciej kolumnie opisz środowisko, w którym znajduje się agent, zarówno rzeczywiste, wirtualne, jak i abstrakcyjne. Wypełnij czwartą kolumnę ze szczegółami dotyczącymi jej zachowania i tego, czy zachowanie jest głównie reaktywne lub bardziej poznawcze.

5.3 Dodanie możliwości wykrywania do Turtle Agents w NetLogo

Ćwiczenie 5.3.1:

Wypróbuj następujące modele w NetLogo, korzystając z poniższych linków. Modele te wprowadzają podstawowe funkcje wykrywania w agentach żółwi. Modele te (z wyjątkiem modelu Wall Po Example) zostały zaktualizowane z przykładów podanych w przykładach kodu biblioteki modeli NetLogo, dodając kolejne suwaki w Interface , aby rozszerzyć opcje symulacji, jak opisano poniżej. Model Look Ahead Example 2 symuluje podstawowy wzrok dla każdego agenta żółwia za pomocą polecenia patch-ahead. Model został zmodyfikowany w celu dodania suwaka number-of-turtles w INterface, aby umożliwić użytkownikowi kontrolowanie liczby żółwi tworzonych na początku symulacji

http://files.bookboon.com/ai/Look-Ahead-Example-2.html

Model Wall Following Example jest taki sam jak w bibliotece modeli NetLogo. Pokazuje zachowanie na ścianie za pomocą polecenia patch-right-and-ahead, aby symulować zmysł dotyku poprzez detekcję zbliżeniową.

http://ccl.northwestern.edu/netlogo/models/WallFollowingExample

Model Line of Sight Example 2 to niewielka modyfikacja modelu udostępnionego w bibliotece modeli NetLogo - zamiast tworzonych 6 agentów żółwia-spacerowiczów, istnieje 20. Model realizuje poczucie widzenia poprzez określenie, co każdy agent walker "zobaczyłby". W jego linii wzroku. Czasami z powodu bezpośredniego terenu, ta linia wzroku może być ograniczona ze względu na pobliskie wzgórze zasłaniające jej widzenie. Innym razem linia wzroku będzie dłuższa.

http://files.bookboon.com/ai/Line-of-Sight-Example-2.html

Model Vision Cone Przykład 2 to niewielka modyfikacja modelu udostępnionego w bibliotece modeli NetLogo. Do Interface dodano dwa suwaki - number-of-standers i number-of-wanderers - aby kontrolować liczbę szarych agentów stander, które się nie poruszają, oraz liczbę czerwonych agentów wanderer, którzy poruszają się wokół wykrywania tego, co jest w środowisku. Model implementuje zmysł widzenia wędrowca za pomocą polecenia in-cone NetLogo.

http://files.bookboon.com/ai/Vision-Cone-Example-2.html

Model Hill Climbing Example 2 symuluje agentów żółwia z możliwością rozpoznania, co jest pod górę w terenie przy użyciu polecenia uphill NetLogo. Model jest taki sam, jak w Bibliotece modeli NetLogo, z wyjątkiem następujących dodanych do Interface : przycisk "go once", aby użytkownik mógł kontrolować ruchy agentów żółwia jeden krok po kroku na zaznaczenie; i suwak number-of-turtles, który kontroluje liczbę żółwi stworzonych w środowisku. Od kiedy żółwie są tworzone losowo łatką używające komend n-of i sprout, zwiększenie wartości tego suwaka do większej lub równej liczbie poprawek, a następnie naciśnięcie przycisku go spowoduje wszystkie możliwe ścieżki, które mogą podjąć agenci żółwi (zgodnie z zachowanie wspinaczki), będąc narysowanym w środowisku, jak pokazano na poniższym obrazku. Powoduje to efekt prawie 3D, w którym wyraźnie zaznaczono ścieżki wzdłuż najwyższych punktów linii grzbietu.

http://files.bookboon.com/ai/Hill-Climbing-Example-2.html

Przeanalizuj każdy z modeli, aby zobaczyć, jak skuteczne są dla żółwiowych agentów w dostarczaniu środków do wykrywania tego, co dzieje się w środowisku. Spróbuj jeszcze bardziej rozszerzyć modele, dodając kolejne możliwości, aby wzmocnić zmysły agenta żółwia. Jak trudno jest zmusić agenta żółwia do wyczucia? To jest, jakie są problemy z koordynowaniem działań agentów w odpowiedzi na zdarzenia sensoryczne występujące w wielu strumieniach wejściowych?

Ćwiczenie 5.3.2:

Po naciśnięciu przycisku pen-down w modelu Look Ahead Example 2, ścieżki szybko wypełniają resztę środowiska oprócz niebieskich łat. Wykorzystaj to zachowanie, aby zaprojektować model symulujący autonomicznego robota odkurzającego, który czyści podłogę w pomieszczeniu. Spróbuj dodać jedno lub więcej dalszych zachowań, aby symulowany robot pokrywał środowisko w inny sposób niż metoda zastosowana w modelu 2 z wyprzedzeniem. Rozszerz model, aby użytkownik mógł dodać kolejne przeszkody do środowiska.

Wykonywanie zadań w sposób reaktywny bez poznania

Ćwiczenie 5.4.1: Model Mrówki NetLogo

Wypróbuj model Ants w NetLogo:

http://ccl.northwestern.edu/netlogo/models/Ants

Określ, w jaki sposób następujące zmienne patche są używane w tym modelu: • chemical;

• food;

• nest?;

• nest-scent;

• food-source-number.

Dowiedz się również, jak działają następujące procedury:

• look-for-food;

• return-to-nest;

• uphill-chemical;

• uphill-nest-scent.

Ćwiczenie 5.4.2: Model Mazes NetLogo

Wypróbuj model Mazes w NetLogo:

http://files.bookboon.com/ai/Mazes.html

CO TO JEST?

Ten model pokazuje, jak uzyskać prostego reaktywnego agenta żółwia do poruszania się po labiryncie. Model pochodzi z trzech labiryntów - pustego labiryntu (tuż poza murami) i dwóch labiryntów, które są schematycznymi przedstawieniami prawdziwych labiryntów w Wielkiej Brytanii - labiryntu Pałacu Hampton Court i Cheening House Maze.

INTERFEJS

Przyciski w Interface są zdefiniowane w następujący sposób:

- setup: Spowoduje to oczyszczenie środowiska i przerysowanie labiryntu wybranego przez poszukiwanego przez labirynt gracza.

- go-once: To sprawi, że pojedynczy agent żółwia przejdzie przez labirynt zgodnie z zachowaniem wybranym w selektorze turtle-behaviour. Ten przycisk wykona procedurę "walky" raz, a nie ciągle.

- go-forever: To sprawi, że pojedynczy agent żółwia będzie ciągle chodził po labiryncie zgodnie z zachowaniem wybranym w selektorze turtle-behaviour.

Wybory, suwaki i przełącznik są zdefiniowane następująco:

- maze-being-searched: Określa szukany labirynt. To jest albo pusty labirynt, labirynt Hampton Court Palace, albo labirynt Chevening House.

- turtle-behaviour: Określa typ zachowania reaktywnego, jakie wykazuje żółw spacerowy. Rodzaje zachowań są następujące:

"hand-on-the-wall": To jest klasyczny mur labiryntu, który zachowuje się, trzymając określoną dłoń, w lewo lub w prawo, na ścianie przez cały czas. Model losowo decyduje o tym, czy wybrana jest lewa czy prawa ręka.

"Random Forward 0": W takim zachowaniu agent żółwia chodzącego porusza się do przodu, o ile nie ma ściany przed sobą, a następnie próbuje skręcić w lewo, chyba że jest ściana po lewej, a następnie próbuje skręcić w prawo, chyba że jest ściana po prawej stronie , a następnie losowo skręca w lewo lub w prawo, w ostateczności.

" Random Forward 1": W tym zachowaniu agresor porusza się głównie w linii prostej w przypadkowych kierunkach na losowy dystans, ale jeśli napotka ścianę, uderzy w nią przez krótki czas (podobnie jak walenie dzięcioła przeciwko drzewu lub muchy przy oknie), zanim wycofa się z losowej odległości i kontynuuje swoją losową wędrówkę.

"Random Forward 2": W tym zachowaniu, agent Turtle Walkera wędruje w przypadkowych kierunkach za pomocą małych kroków.

- set-pen-down ?: Jeśli ustawione na On, to narysuje ścieżkę agenta żółwia Walkera.

- left-cols,right-cols, above-rows, below-rows, entrance-cols: Ustawia długość i szerokości pustych ścian bocznych i wejścia do pustego labiryntu.

- col-patches-width, row-patches-width: Ustawia szerokość w łatach dla kolumn i rzędów labiryntu Hampton Court i labiryntu Chevening House (tj. szerokość między poziomymi i pionowymi ścianami w tych labiryntach).

JAK TO DZIAŁA

Używa polecenia ask patches, aby ustawić niebieskie łaty, które definiują ściany, i ustawić pozostałe łatki na białe. Kod używa dwóch procedur, które są podobne, setup-row i setup-col, aby narysować ściany odpowiednio w poziomym wierszu lub pionowej kolumnie. Te procedury przyjmują wiersz lub kolumnę numer jako pierwszy parametr, kolor, z którego ściany mają być rysowane, oraz lista zawierająca listy o podwójnej szerokości, które definiują segmenty, w których ściany mają być rysowane w wierszu lub kolumnie. Jeden agent żółwia jest tworzony jako agent walker. Używa prostej metody detektora zbliżeniowego (patrz reporter ścienny), aby wykryć, czy ściana znajduje się przed nami pod określonym kątem i odległością.

JAK TEGO UŻYĆ

Najpierw wybierz labirynt za pomocą maze-being-searched, a następnie wybierz zachowanie żółwia za pomocą selektora turtle-behaviour. Następnie naciśnij przycisk setup, a następnie przyciski go-once lub go-forever. Aby zmusić żółwia, by narysował jego ścieżkę, ustaw set-pen-down? przełączając na On. JAKI JEST CEL?

Jego celem jest pokazanie, jak prosty reaktywny czynnik może być skuteczny (lub nie) w badaniu labiryntu. Żółw nie ma zdolności poznawczych, aby rozpoznać sytuację, w jakiej się znajduje; na przykład że w labiryncie jest cel, do którego powinien dążyć, że czasami utknie, że istnieją alternatywne ścieżki, które może pokonać w różnych punktach lub że podróżował wielokrotnie w tym samym punkcie. Agent żółwia po prostu reaguje na bezpośrednią sytuację, w której znajduje się za pomocą prostego detektora zbliżeniowego do wykrywania ściany w pobliżu. Model wykorzystuje również dwa wirtualne labirynty, które w rzeczywistości mają odpowiedni labirynt, aby pokazać, w jaki sposób środowiska wirtualne mogą odzwierciedlać rzeczywiste środowiska, ale w których proces ten często może być zniekształcony.

RZECZY DO SPEŁNIENIA

Wypróbuj różne zachowania różnych labiryntów, zmieniając wartości wybieranych przez labirynt i wybieranych przez żółwia. Spróbuj to zrobić, gdy żółw się porusza. Zobacz, co się dzieje, gdy zmienisz wartość suwaków. Spróbuj zmienić ustawienia środowiska, takie jak rozmiar poprawki i maksymalne i minimalne współrzędne x i y.

ROZSZERZENIE MODELU

Spróbuj dodać własne zachowania, aby zmusić agenta żółwia do poruszania się po labiryncie.

CECHY NETLOGO

Model wykorzystuje reporter path-right-and-ahead, aby umożliwić agentowi żółwia wyczuć, czy w pobliżu znajduje się ściana.

POWIĄZANE MODELE

Zobacz modele Puste Maze, Hampton Court Maze i Chevening House Maze.

Ćwiczenie 5.4.3:

Zmień kształt żółwia, który przeszukuje labirynt w kształt myszy. Zrób to, wybierając opcję Import from Library w Turtle Shapes Editor. Spróbuj zmienić rozmiar żółwia, aby zobaczyć, co dzieje się w różnych środowiskach, gdy żółw jest większy lub mniejszy.

Ćwiczenie 5.4.4:

Dodaj stworzony przez siebie labirynt w ćwiczeniu 3.7.3 do modelu Maze. Jak żółwie z różnymi zachowaniami żółwia radzą sobie z nowym środowiskiem? Czy w twoim labiryncie jest coś innego niż pozostałe labirynty (pusty labirynt, labirynt Pałacu Hampton Court i Labirynt Chevening House), który powoduje nowe zachowanie? Spróbuj także dodać własne zachowania żółwi.

Ćwiczenie 5.4.5:

Jak działają następujące procedury, które określają różne zachowania żółwia w modelu Mazes ?:

• behaviour-wall-following;

• behaviour-random-forward-0;

• behaviour-random-forward-1;

• behaviour-random-forward-2.

Ćwiczenie 5.4.6:

Spróbuj odtworzyć to, co widać na zrzutach ekranu dla modelu Maze,.W przypadku większości z nich praktycznie niemożliwe jest odtworzenie dokładnie tego, co widać na zrzutach ekranu. Czemu? Które z nich można odtworzyć dokładnie?

Ćwiczenie 5.4.7:

Postaraj się, aby żółw dotarł do centrum Cheening House Maze. Będziesz musiał to zrobić, wykorzystując zachowanie obserwujące ścianę przez większość czasu, ale tymczasowo przełączając się na inne zachowanie, aby przeskoczyć z jednej wyspy na drugą. Która kombinacja zachowań wydaje się najskuteczniejsza i w jakich punktach w labiryncie?

Ucieleśnione, położone poznanie

Ćwiczenie 5.5.1:

Zmodyfikuj zachowanie agenta żółwia, który opracowałeś dla ćwiczenia 4.3.1, aby śledzić szlak mrówek Santa Fe, tak aby używał bardziej wyrafinowanej metody do wykrywania obecności pokarmu. W Ćwiczeniu 4.3.1, żółw mógł jedynie wyczuć obecność pokarmu bezpośrednio przed sobą. Spróbuj różnych odmian zachowania agenta żółwia, który bierze pod uwagę jego ucieleśnienie i usytuowanie. Chodzi o to, aby połączyć zarówno operacje wykrywania, jak i ruchy silnika, aby wykonać podstawową formę koordynacji czuciowo-ruchowej. Porównaj wydajność różnych zachowań mrówek, które wymyśliłeś podążając szlakiem mrówek. (Wskazówka: Weź pod uwagę rolę, jaką może mieć widzenie peryferyjne w poprawianiu zdolności mrówki do podążania szlakiem).

Ćwiczenie 5.5.2:

Zmodyfikuj model, który opracowałeś dla ćwiczenia 5.5.1, aby mrówka mogła podążać każdą ścieżką, nie tylko szlakiem mrówek Santa Fe. Zamiast jedzenia zdeponowanego na szlaku, należy założyć, że szlak został ustanowiony przez zapach, a celem mrówki jest raczej śledzenie chemicznego szlaku zapachowego niż znalezienie jedzenia. Skonfiguruj warunki początkowe, aby mrówka zaczynała się w losowym miejscu, prawdopodobnie poza szlakiem, a nie na początku szlaku, jak w przypadku problemu Santa Fe Ant Trail. Stąd mrówka będzie musiała dodać jakiś mechanizm do znalezienia śladu do jego zachowania. Następnie dodaj wiele mrówek do swojego modelu, aby zobaczyć, co się stanie.

Ćwiczenie 5.5.3:

Opracuj metodę pomiaru, które z zachowań opracowanych dla Ćwiczeń 5.5.1 i 5.5.2 są bardziej skuteczne dla mrówek śledzących szlaki.

Ćwiczenie 5.5.4:

Opracuj zachowanie, które będzie podążać szlakiem Santa Fe dokładnie bez żadnych dalszych kroków (tj. Opracuj optymalne rozwiązanie). Zapisz liczbę kroków, jakie ma optymalne rozwiązanie w porównaniu do innych rozwiązań opracowanych w ćwiczeniach 4.3.1 i 5.5.1. Zapisz również liczbę kroków w samych programach (tj. Rozmiar programów). Które zachowanie było najlepsze?

Ćwiczenie 5.5.5:

Opisz zalety i wady ucieleśnionego podejścia. Twoja odpowiedź powinna zawierać omówienie następującego roszczenia:

"Wcielone podejście jest interesującą rozrywką z głównego nurtu A.I. Jednak do chwili obecnej zbudowano jedynie podstawowe systemy i potrzebne są znacznie bardziej zaawansowane algorytmy, aby rozwinąć je jeszcze bardziej, tak aby mógł poradzić sobie z głębokimi problemami A.I. takie jak rozsądne rozumowanie, tworzenie koncepcji i nabywanie języka "


Powrót

  Zachowanie 

6.1 Co to jest zachowanie?

Ćwiczenie 6.1.1:

Wypróbuj różne zachowania agenta żółwia w modelu Mazes-2 NetLogo:

http://files.bookboon.com/ai/Mazes-2.html

Zrób to, zmieniając wartość selektora turtle-behaviour w Interface. Scharakteryzuj każde zachowanie za pomocą zestawu czynności wykonywanych przez żółwia podczas wykonywania tego zachowania. Opisuj te działania, które obejmują każde zachowanie przez zestaw ruchów, które żółw wykonuje podczas wykonywania akcji. Które zachowanie wydaje się najbardziej skuteczne w danym labiryncie i które wydaje się najbardziej skuteczne we wszystkich labiryntach? Jakie zachowania kończą się tym, że agent żółwia utknął w nieskończonej pętli w niektórych labiryntach?

Ćwiczenie 6.1.2:

Wypróbuj model Fire w NetLogo:

http://ccl.northwestern.edu/netlogo/models/Fire

Jak zachowuje się ogień, gdy wartość suwaka density jest zwiększana lub zmniejszana? Scharakteryzuj zachowanie się ognia za pomocą wzorców zachowań, które wynikają z różnych wartości suwaka - na przykład ilości spalonego lasu, wzoru spalania i wzoru pozostałych niespalonych drzew. Rozszerz model Pożaru, dodając przycisk draw firebreak, aby umożliwić użytkownikowi stworzenie w lesie pożaru, aby zatrzymać rozprzestrzenianie się ognia. Dodaj dwa kolejne przyciski - draw forest i ignite forest - aby umożliwić użytkownikowi narysowanie dodatkowych drzew w lesie i określić konkretne miejsca, w których rozpoczyna się pożar, zamiast uruchamiania go w linii po lewej stronie otoczenia, tak jak w przypadku Model ognia. Na przykład, na poniższym obrazku, firebreak został narysowany jako ciemnobrązowa krzywa od góry po lewej do prawej dolnej. Ogień został zapalony pośrodku wypalonego szkarłatnego koła i pokazano, że rozszerza się na zewnątrz na zewnętrznym brzegu koła, z wyjątkiem tego, że jest zablokowany przez pożar

Dodaj czwarty przycisk - import forest - aby zaimportować las i otaczającą go geografię bezpośrednio z obrazu satelitarnego lub zdjęcia z lotu ptaka, aby można było użyć modelu do symulacji rozprzestrzeniania się pożaru w rzeczywistym środowisku. Użyj rozszerzonego modelu, aby zbadać, w jaki sposób geografia i różne rodzaje pożarów wpływają na zachowanie ognia.

6.2 Środki reaktywne kontra czynniki poznawcze

Ćwiczenie 6.2.1:

Agent chce przejść przez drzwi, ale drzwi są zamknięte. Agent przyjmujący podejście kognitywne skonstruował następujący plan w swojej "głowie":

Plan otwarcia drzwi:
Idź do miejsca, w którym znajduje się klucz.
Weź klucz.
Idź do drzwi.
Otwórz drzwi za pomocą klucza.

Zaproponuj niektóre zasady, których reaktywny agent mógłby użyć do rozwiązania tego samego zadania. Jakie są ograniczenia podejścia stosowanego przez reaktywnego agenta w porównaniu z czynnikiem poznawczym?

6.3 Powstanie, samoorganizacja, adaptacja i ewolucja

Ćwiczenie 6.3.1:

Wypróbuj następujące modele w NetLogo:

http://ccl.northwestern.edu/netlogo/models/Flocking

http://ccl.northwestern.edu/netlogo/models/Fireflies

http://ccl.northwestern.edu/netlogo/models/Termites

http://ccl.northwestern.edu/netlogo/models/StateMachineExample

Wyjaśnij dla każdego z tych modeli, czy jesteś świadkiem jednego z poniższych:

• Zachowania reaktywne (w żółwiach);
• Zachowania poznawcze (w żółwiach);
• Powstanie;
• Samoorganizacja.

Ćwiczenie 6.3.2:

Spróbuj stworzyć model w NetLogo, aby zobrazować dryf kontynentalny pomiędzy Australią i Nową Zelandią. Wskazówka: użyj polecenia import-pcolors, aby zaimportować obraz zawierający obecne kształty Australii i Nowej Zelandii. Dodaj monitor do modelu, aby pokazać szacunkową liczbę lat, które minęły, gdy dwa kraje powoli powracają do siebie.

Ćwiczenie 6.3.3:

Czy istnieje sposób mierzenia samoorganizacji, gdy pojawia się ona w modelu? Na przykład, w przypadku modeli termitów i przykładów maszynowych stanu, czy istnieje jakiś sposób mierzenia skuteczności środków żółwiowych przy przesuwaniu zrębków w stosy?

Ćwiczenie 6.3.4:

Czy istnieje jakiś sposób określenia, kiedy pojawiająca się właściwość pojawia się w modelu?

6.4 Problem z odniesieniem

Ćwiczenie 6.4.1:

Tryb domyślny w modelach NetLogo polega na tym, że agent obserwujący patrzy w dół na świat z góry wyśrodkowany na początku; zazwyczaj jest to współrzędne (0, 0). W tym przypadku punktem odniesienia jest trzecioosobowa perspektywa świata. Oznacza to, że agent obserwujący jest zewnętrzny wobec obserwowanego świata. W NetLogo możliwe jest przejście do perspektywy pierwszoosobowej za pomocą poleceń follow, ride and watch obserwatora oraz poleceń follow-me, ride-me i watch-me turtle. Dowiedz się, co robi każde z tych poleceń. Opracuj model lub modele, aby zademonstrować ich zastosowanie.

Ćwiczenie 6.4.2:

Modele w katalogu Perspective Demos biblioteki modeli NetLogo ilustrują, w jaki sposób można wykorzystać te komendy do zmiany perspektywy z trzeciej osoby na pierwszą osobę w przypadku niektórych modeli w bibliotece modeli. Zagraj z modelami Ants (Perspective Demo), Flocking (Perspective Demo) i Termites (Perspective Demo). Sprawdź kod, aby zobaczyć, w jaki sposób polecenia są używane w modelach.

http://ccl.northwestern.edu/netlogo/models/AntsPerspectiveDemo

http://ccl.northwestern.edu/netlogo/models/FlockingPerspectiveDemo

http://ccl.northwestern.edu/netlogo/models/TermitesPerspectiveDemo

Wypróbuj te modele zarówno w 2D, jak i 3D. Naciśnij watch one-of-turtles i follow one-of-turtles, aby zobaczyć, co się dzieje. Czy łatwo jest rozróżnić globalne zachowanie kolonii lub stada, gdy obserwujesz jednego żółwia, który jest powiększany w większości przypadków lub kiedy jest on przybliżony (tzn. Gdy jesteś w trybie "jazdy")? Zmniejsz prędkość symulacji, aby sprawdzić lokalne zachowanie obserwowanego żółwia z perspektywy pierwszej osoby. Odwrotnie, jak łatwo jest rozpoznać lokalne zachowanie każdego żółwia, gdy już go nie obserwujesz, ale jesteś obserwatorem patrzącym na świat z góry?

6.5. Stygmatyzacja i inteligencja rój

Ćwiczenie 6.5.1:

Który z poniższych modeli w Bibliotece modeli NetLogo to przykłady inteligencji roju, w której agenci wykorzystują lokalną wiedzę stygmergiczną?

http://ccl.northwestern.edu/netlogo/models/Ants

http://ccl.northwestern.edu/netlogo/models/Heatbugs

http://ccl.northwestern.edu/netlogo/models/Fireflies

http://ccl.northwestern.edu/netlogo/models/Flocking

http://ccl.northwestern.edu/netlogo/models/Moths

http://ccl.northwestern.edu/netlogo/models/Termites

http://ccl.northwestern.edu/netlogo/models/Virus

6.6 Implementacja zachowania agentów Turtle w NetLogo

Ćwiczenie 6.6.1: Heatbugs Model NetLogo

Wypróbuj model Heatbugs w NetLogo.

http://ccl.northwestern.edu/netlogo/models/Heatbugs

Model Information informuje, że został on użyty jako model demonstracyjny dla wielu zestawów narzędzi do modelowania opartych na agentach, z kilkoma rodzajami zachowań wynikających z prostych reguł. Uruchom model kilka razy, aby zaobserwować, co dzieje się z różnymi wartościami suwaka. Zrób listę pojawiającego się zachowania, które obserwujesz. W jaki sposób temperatura jest rozproszona w całym środowisku w tym modelu? Każdy tyk, wszystkie żółwie są skierowane do wykonania procedury krok. Gdzie to odbywa się w modelu? Wyjaśnij, co dzieje się po wywołaniu procedury step.

Ćwiczenie 6.6.2: Ściany po zdarzeniach Model NetLogo

Wypróbuj model Wall Following Events w NetLogo.

http://files.bookboon.com/ai/Wall-Following-Events.html

CO TO JEST?

Model ten wizualizuje mały zestaw zdarzeń, które może wykonać agent, w celu wykonania zmodyfikowanego typu zachowania związanego z ścianą, w którym wykrywanie, myślenie i działanie są wykonywane jednocześnie w żadnej określonej kolejności (patrz model Ściana po Przykładzie 2 w celu uzyskania dalszych wyjaśnień) . Zdarzenia są wyświetlane przy użyciu reprezentacji mapy zdarzeń, w której zdarzenia są połączone z innymi zdarzeniami w osobnych strumieniach w uporządkowanej sekwencji. Chodzi o to, że agent przetwarza zdarzenia jednocześnie w oddzielnych strumieniach. Podejście jest podobne do podejścia przyjętego dla przetwarzania strumienia zdarzeń (ESP).

JAKI JEST CEL?

Celem tego modelu jest pokazanie, jak wizualizować serię zdarzeń za pomocą mapy zdarzeń.

JAK TO DZIAŁA

Model używa agentów żółwia do reprezentowania stanów na mapie zdarzeń i używa agentów linków do reprezentowania ścieżek między stanami. Stany posiadają trzy zmienne:

- depth: głębokość w drzewie mapy zdarzeń.

- stream: nazwa strumienia (gdzie strumień składa się z sekwencji zdarzeń sensorycznych lub motorycznych).

- event: wydarzenie - albo czuciowe albo motoryczne.

Układ sprężynowy służy do wizualizacji mapy zdarzeń.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk setup. Będzie to często powodować zagracony układ. Aby rozwinąć bałagan, naciśnij przycisk change-layout, a następnie dynamicznie zmieniaj wartości w suwakach sterujących układem. Jedną z efektywnych technik jest zmniejszenie wartości suwaka spring-length do 0, a następnie powolne zwiększanie go ponownie do tyłu, aż do uzyskania pożądanej długości.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób: - setup: Spowoduje to wyczyszczenie środowiska i zmiennych oraz (ponowne) załadowanie mapy zdarzeń. Normalnie pojawi się ona w zagraconej formie, a przycisk zmiany układu musi zostać naciśnięty później.

- change-layout: To może być użyte do usunięcia bałaganu poprzez zmianę wartości w trzech suwakach.

Suwaki modelu Interface są zdefiniowane w następujący sposób:

- spring-constant: jest to wartość używana przez polecenie układu-sprężyny. Zmiana nie będzie miała większego wpływu na wizualizację mapy wydarzeń.

- sprint-length: Zmienia długość ścieżek między stanami sieci map zdarzeń.

- repulsion-constant: kontroluje to, ile każde państwo się odpycha.

RZECZY DO ODNOTOWANIA

Zauważ, że suwak repulsion-constant może być użyty do "odpychania" stanów od siebie (dla większych wartości) i "przyciągania" stanów do siebie nawzajem (dla mniejszych wartości). Zauważ, że bałagan w układzie sieci można często usunąć, ustawiając wartość suwaka długości fali na zero, a następnie zwiększając ją. repulsion-constant

RZECZY DO SPEŁNIENIA

Spróbuj zmienić wartości suwaków, aby zobaczyć, jaki wpływ ma to na układ.

ROZSZERZENIE MODELU

Połącz ten model z modelem Wall Po Przykładzie 2. Następnie animuj środowisko i mapę zdarzeń w tym samym czasie dla jednego z agentów w środowisku, który porusza się po ścianach.

CECHY NETLOGO

Model wykorzystuje polecenie layout-spring do modyfikacji układu sieci stanów (agentów żółwia) i ścieżek (agentów linków).

POWIĄZANE MODELE

Zobacz model Wall Po przykładzie 2, model zdarzeń Central Park i model reprezentacji wiedzy. Dla modelu Wall Po Przykładzie 2, patrz Ćwiczenie 6.7.6 poniżej.

6.7 Stado

Ćwiczenia 6.7.1 do 6.7.6:

Wypróbuj następujące modele, które implementują różne zachowania sterujące dla stad:

6.7.1 Ścieżka tłumu;

6.7.2 Flock z przeszkodami;

6.7.3 Podążaj za i unikaj;

6.7.4 Unikanie przeszkód 1;

6.7.5 Unikanie przeszkód 2;

6.7.6 Ściana za przykładem 2.

Zauważ, że w celu udoskonalenia symulacji boidów i uzyskania pełnej kompatybilności z implementacjami bojlerów Craiga Reynoldsa dla tych modeli, wymaga to stopniowego przyspieszania i zwalniania. Wierne wdrożenie powinno również obejmować pewną formę siły sterującej zaimplementowanej za pomocą masy punktowej przybliżenie, w którym każdy boid ma masę i działa w stosunku do sił. Jednak te implementacje NetLogo pokazują, że przybliżenie podejścia Reynoldsa można osiągnąć stosunkowo łatwo, aw wielu przypadkach wynikowe zachowanie boidów jest zgodne z oczekiwaniami.

Ćwiczenie 6.7.1: Ścieżka tłumu po modelu NetLogo

http://files.bookboon.com/ai/Crowd-Path-Following.html

CO TO JEST?

Ten model jest próbą odtworzenia boidów (patrz praca Craiga Reynolda), które wykorzystują ścieżkę tłumu po zachowaniu sterującym.

JAK TO DZIAŁA

Każdy żółw (boid) ma dwa poziomy widzenia - skierowany do przodu stożek i promień obwiedni. Stożek szuka kolorowych plamek (to znaczy nie czarnych) z przodu i jeśli zostanie wykryta łatka, uruchamia prostą procedurę nawigowania po ścieżce. Wykrywanie promienia po prostu spogląda na inne żółwie w danym progu odległości. Kiedy żółw wpada na innego żółwia, nie porusza się do przodu, ale zamiast tego skręca w prawo; powoduje to niewielką przerwę w ruchu do przodu, co uniemożliwia jej przedostanie się przez zderzający się żółw. Jako dodatek, aby podkreślić efekt kolizji, każdy żółw otrzymuje zmienną prędkość w zależności od jego liczby. To sprawia, że pierwszy żółw jest najwolniejszy, a ostatni najszybszy, co sprawia, że żółwie częściej wpadają na siebie. Szybsze żółwie próbują ominąć te wolniejsze.

JAK TEGO UŻYĆ

Wybierz rozmiar populacji, a następnie naciśnij przycisk konfiguracji, a następnie naciśnij przycisk Start. Paski suwaków umożliwiają zmianę różnych parametrów. Aby narysować ścieżki boid, naciśnij przycisk trail; aby je wyczyścić, naciśnij przycisk clear. Aby śledzić jeden konkretny boid, naciśnij przycisk follow.

INTERFEJS

Przyciski modelu Intreface są zdefiniowane w następujący sposób:

- Setup: Ustawia środowisko z czarną ścieżką po środku, a reszta jest pokazana jako zielona tekstura przedstawiająca otaczającą trawę. Liczba boids (określona przez zmienną population) jest tworzona i umieszczana w losowym miejscu w obrębie czarnej ścieżki.

- Go: Boidy zaczynają poruszać się po ścieżce i po chwili większość z nich kończy się w tym samym kierunku.

- Followe: Symulacja podąża ścieżką jednego konkretnego boidu.

- Trail: To rysuje ścieżki wykonane przez wszystkie boids.

- Clear: Usuwa ślady.

Suwaki, przełączniki i selektor modelu Interfce są zdefiniowane w następujący sposób:

1. W celu zainicjowania symulacji:

- population: Określa liczbę boidów.

- turtle-size: Określa wielkość boids.
- labelID: jeśli ta opcja jest ustawiona na On, to te boidy są oznaczone numerami.
2. Do kontrolowania ruchu boidów:

- rate-of-losowo-turn: To kontroluje, jak bardzo zmienia się wędrowanie boid za każdym razem, gdy tick. Boid ma tendencję do poruszania się w kierunku skrętu w prawo, ponieważ szybkość losowego skrętu w prawo (zgodnie z suwakiem) jest dwa razy większa niż prędkość losowego skrętu w lewo.
- boid-speed: kontroluje prędkość boidu, tj. ile przesuwa się do przodu każdego tiknięcia.
3. Aby określić parametry sterujące unikaniem kolizji boid:

- collision: Włącza wykrywanie kolizji i unikanie, jeśli jest ustawiona na On.
- turtle-radius-angle : określa kąt promienia stożka widzenia boida w stosunku do innych boidów.
- turtle-radius-length: określa długość promienia stożka widzenia boida w stosunku do innych boidów.

4. Aby określić parametry, które kontrolują działanie polegające na unikaniu kolizji łat (gdzie poprawki są granicami ścieżki):
- radius-angle: Określa kąt promienia stożka widzenia boida w stosunku do krawędzi ścieżki.
- radius-length: Określa długość promienia stożka widzenia boida w stosunku do krawędzi ścieżki.
- behaviour: określa zachowanie boidów. Można ustawić następujące wartości:

"Podstawowy podążanie za tłumem": To jest bardzo podstawowe zachowanie po ścieżce tłumu bez unikania kolizji.

"With collision avoidance": Łączy zachowanie następujących po ścieżce tłumu z unikaniem kolizji, jeśli suwak kolizji jest ustawiony na On.

RZECZY DO ODNOTOWANIA

Zwróć uwagę, jak żółwie zbliżają się do boków, ale udaje im się ich uniknąć. Jak to osiągnąć i jaki jest mechanizm ich utrzymania? Zauważ, jak powstają wariancje prędkości. Każdy żółw ma unikalne ustawienie prędkości. Zwróć uwagę, że kolory są wybierane losowo w oparciu o punkt chromatyczny, w którym został utworzony. Pozwala to na uzyskanie losowo wyglądającego zakresu kolorów, unikając jednocześnie bardzo ciemnych i czarnych kolorów, które kolidowałyby ze ścieżką. Zwróć uwagę na przycisk "Follow" i jak można bliżej analizować jednego żółwia; Przyciski 3D również są tutaj interesujące. Zauważ, że żółwie pojawiają się tylko na czarnych łatach. Jak to się robi? Zauważ, że gdy zmienna boid-speed jest ustawiona na dużą liczbę (5,0, powiedzmy), niektóre z boidów zaczynają się przemieszczać poza ścieżkę i kończą przechodzić przez otaczającą zieloną trawę. Dlaczego to? Czy istnieje sposób, w jaki możemy zakodować ruch agenta żółwia, aby temu zapobiec?

RZECZY DO SPEŁNIENIA

Spróbuj zmienić losową szybkość skrętu. Jak wpływa to na zdolność żółwi do podążania ścieżką? Dlaczego się zmienia? Zmień radius-angle i radius-length. Co to oznacza dla modelu? Dlaczego to się zmienia? Zmień parametry kolizji żółwia. Jak to zmienia model? Jakie są optymalne ustawienia dla dokładnego wykrywania kolizji? Spróbuj zmienić prędkość żółwia, dlaczego to zmienia zdolność do pozostania na ścieżce? Kliknij przycisk trail (tutaj jest prawdziwy powód zmiennych kolorów).

ROZSZERZENIE MODELU

Dodając zienną turtles-own dla prędkości, możemy sprawić, że żółwie przyspieszą i spowolnią. Umożliwi to zderzającemu się żółwiowi po prostu zwolnić i zmienić kierunek, aby uniknąć kolizji.

CECHY NETLOGO

W tym modelu używane są funkcje: who, myself, in-cone,in-radius, heading, sprout i edytor żółwia.

POWIĄZANE MODELE

Zobacz następujące modele: Crowd Path Following, Flocking With Obstacles, Follow i Avoid, Obstacle Avoidance 1, Obstacle Avoidance 2, Vision Cone Example 2, Wall Following Example 2. Są to podstawowe implementacje różnych zachowań sterujących Craiga Reynoldsa dla boidów. Inny model związany z boidem to model Biology / Flocking w bibliotece modeli.

http://files.bookboon.com/ai/Flocking-With-Obstacles.html

CO TO JEST?

Ten model jest próbą odtworzenia flokowego zachowania się boids Craiga Reynoldsa. Został stworzony przez Uri Wilensky i zmodyfikowany przez Thomasa Christy i William John Teahan. Większość Information w modelu jest podobna do tej podanej przez Uri Wilensky′ego, z pewnymi modyfikacjami, jak przedstawiono poniżej.

INTERFEJS

Przyciski w Interface są zdefiniowane w następujący sposób:

- Setup: Czyści wszystkie zmienne i tworzy populację ptaków w losowych lokalizacjach w środowisku.
- Step: uruchamia pojedynczy znacznik symulacji.
- Go: nieprzerwanie przeprowadza symulację.
- Draw: To pozwala użytkownikowi rysować łaty kolizyjne, aby zapewnić pewne przeszkody dla ptaków, aby uniknąć uderzenia.
- Erase: Pozwala użytkownikowi na usunięcie narysowanych przeszkód.
- Load Image: ładuje obraz z pliku nazwanego przez suwak Nazwa pliku w tle. Chociaż sprawia to, że symulacja wygląda bardziej imponująco, agenci nie mogą "zobaczyć" tego obrazu. Jeśli chcesz, aby ptaki reagowały na to, co pojawia się na obrazku, musisz również załadować łatki do tego samego obrazu za pomocą przycisku Załaduj łatki. Uwaga: Ponieważ przycisk Wczytaj obraz spowoduje nadpisanie poprawek, upewnij się, że synchronizujesz zarówno nazwę pliku, jak i nazwę łatki (patrz poniżej), tak aby pasowały do siebie, w przeciwnym razie ptaki zareagują na poprawki, których nie zobaczymy jako obserwatorów, ale są w rzeczywistości w środowisku.
- Load Patches: spowoduje załadowanie poprawek dla danego obrazu określonego przez suwak nazw plików, aby agenci ptaków mogli "widzieć" i reagować na nie.

Suwaki w Interface są zdefiniowane następująco:
- population: Jest to liczba agentów ptaków utworzonych na początku.
- obstacle-colour: Jest to kolor używany do rysowania przeszkód za pomocą przycisku Rysuj.
- speed: kontroluje prędkość agentów ptaków.
- vision: Określa promień stożka widzenia agenta ptaka. (Kąt jest 360 stopni, więc ptak może "widzieć" we wszystkich kierunkach).
- minimum-separation: Określa minimalną odległość dla świetlików, zanim świetliki zaczną się .
- max-align-turn, max-cohere-turn, max-separate-turn: Te suwaki kontrolują maksymalny kąt, jaki ptak może obrócić w wyniku każdej reguły - odpowiednio wyrównania, spójności i separacji.
Wybory w Interface są zdefiniowane następująco:
- Filename: Jest to nazwa pliku obrazu, który jest ładowany do tła po naciśnięciu przycisku Załaduj obraz.
- patch-name: Jest to nazwa pliku obrazu, który po naciśnięciu przycisku Wczytaj łatki jest konwertowany na łatki w środowisku.
RZECZY DO NOTYFIKACJI

Wokół przeszkód, czasami stado dzieli się na dwie części, aby ominąć różne boki przeszkody, a następnie powraca do pojedynczego stada. To samo zachowanie można zaobserwować w symulacjach Craiga Reynoldsa. Jakie są warunki, w których wydaje się występowanie floków? Czy czasami zdarza się, że stado pozostaje podzielone na dwie części?
RZECZY DO SPEŁNIENIA

Co się stanie, jeśli zamiast polecenia "in-cone" zostanie użyte polecenie in-radius? Czy znaczne zmniejszenie kąta padania widzenia wpływa na zachowanie ptaków?

ROZSZERZENIE MODELU

Spróbuj dodać własne obrazy do modelu. W jaki sposób zachowanie żółwia wpływa na różne środowiska? Wiele ptaków utknąć wewnątrz lub w pobliżu przeszkody. Zmniejsza to nieco wiarygodność symulacji. Czy jest jakiś sposób, aby ten "błąd" mógł zostać usunięty z modelu?

CECHY NETLOGO

Model wykorzystuje polecenie in radius do wykonania stożka widzenia boidów.
http://files.bookboon.com/ai/Follow-And-Avoid.html

CO TO JEST?

Model ten próbuje zasymulować poszukiwania i ucieczkę zachowań sterujących dla boidów (jak wymyślił Craig Reynolds).

JAK TO DZIAŁA

Czyni to poprzez generowanie losowych wędrownych żółwi (boid), które po prostu wędrują. Obserwatorzy (poszukujący), po wykryciu Wędrowców w ich promieniu, zwracają się do najbliższego Wędrowca i ruszają do przodu. Osoby unikające (uciekające) wykonują tę samą akcję, ale odwracają kierunek o 180 stopni, oddalając się od najbliższego Wędrowca.

JAK TEGO UŻYĆ

Ustaw początkowy świat. Następnie użyj prętów prędkości podczas pracy, aby dostosować prędkość wszystkich żółwi.

INTERFEJS

Przyciski w Interface są zdefiniowane w następujący sposób:

- Setup: Usuwa środowisko i tworzy nowych agentów Wędrowiec, Follower i Avoider.
- Go: To rozpoczyna symulację.
- Follow Wanderer: To nastąpi po jednym z agentów Wędrowca.
- Follow Follower: To nastąpi po jednym z agentów Follower.
- Follow Avoider: To nastąpi po jednym z agentów Avoider.

Suwaki i monitor w Interface są zdefiniowane następująco:

- radius-detection: To dostosowuje wizję boidów.
- boid-speed: To dostosowuje wartość kroku w przód każdego boidu na iterację.
- speed-factor : Zmniejsza to szybkość zarówno dla obserwatorów, jak i dla agentów Avoider.
- boid-random-head: To dodaje trochę losowości ruchom boidów.
- number-of-agents, number-of-wanderers, number-of-followers, number-of-avoidersć: jest to liczba agentów w każdej kategorii.

RZECZY DO ODNOTOWANIA

Dopasowanie paska promienia zmienia odległość, z jaką widzą zarówno Obserwatorzy, jak i Osoby Ocieplone. To zmienia sposób, w jaki się zachowują, na przykład dystans, który Avoider przebywa z dala od Wędrowców. Wydawca czasami wydaje się poruszać w kierunku Wędrowca; to jest efekt wynikający ze środowiska, które się otacza.
RZECZY DO SPEŁNIENIA

Spróbuj zmienić liczbę Wędrowców, Obserwujących i Uników. Spróbuj dopasować pasek skali, aby zobaczyć, co dzieje się z obserwatorem. Spróbuj zmienić kształt Unikacza, aby był obrotowy (jeśli jeszcze nie są); to podkreśla wpływ problemu zwijania.

ROZSZERZENIE MODELUM

Model można rozszerzyć, aby dodać stopniowe przyspieszenie i spowolnienie. Poprawiłoby to symulację boidów.

CECHY NETLOGO

Model wykorzystuje polecenie w promieniu do wykonania stożka widzenia boidów.

POWIĄZANE MODELE

Inny model związany z boidem to model Biology / Flocking.

Ćwiczenie 6.7.4: Unikanie przeszkód 1 Model NetLogo

http://files.bookboon.com/ai/Obstacle-Avoidance-1.html

CO TO JEST?

Ten model implementuje boid (patrz praca Craiga Reynolda), który wykorzystuje podstawowe zasady sterowania unikaniem przeszkód.

JAK TO DZIAŁA

Czyni to poprzez generowanie żółwia wędrowiec (boid), który po prostu błąka się losowo w środowisku unikając przeszkód, które są rysowane białymi plamami. Węzeł jest realizowany za pomocą polecenia in-cone NetLogo, które implementuje żółwia ze stożkiem widzenia.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- Setup: Ustawia środowisko z drzewiastym układem przeszkód narysowanych białymi plamami. Jeden agent żółwia (bojownik wędrowca) jest tworzony i umieszczany w losowej lokalizacji.
- Go: Boid zaczyna błąkać się po otoczeniu, unikając przeszkód.
- Draw Obstacle: Użytkownik może wyciągnąć kolejne przeszkody w środowisku. Są również w kolorze białym.
- Follow Wanderer: Pozwala to na zmianę perspektywy wizualizacji, tak aby była wyśrodkowana na wędrownicy.

Suwaki modelu interfejsu są zdefiniowane w następujący sposób:

- boid-speed: kontroluje prędkość boidu, tj. ile przesuwa się do przodu każdego tiknięcia.
- rate-of-losowo-turn: To kontroluje, jak bardzo zmienia się wędrowanie boid za każdym razem, gdy tick. Boid ma tendencję do poruszania się w kierunku skrętu w prawo, ponieważ szybkość losowego skrętu w prawo (zgodnie z suwakiem) jest dwa razy większa niż prędkość losowego skrętu w lewo.
- radius-angle: Określa kąt promienia stożka widzenia boida.
- radius-length: Określa długość promienia stożka widzenia boida.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk Setup, a następnie naciśnij Go. Możesz narysować dodatkowe przeszkody, naciskając przycisk Draw Obstacle, a następnie trzymając mysz w punkcie, w którym chcesz narysować przeszkody. Możesz zmienić ramkę odniesienia tak, aby wizualizacja była skupiona wokół miejsca, w którym aktualnie znajduje się boid, naciskając przycisk Follow Wanderer.

RZECZY DO ODNOTOWANIA

Ustawienie radius=length boida w polu widzenia lub radius-angle spowoduje, że boid nie będzie widział przeszkód i w rezultacie będzie przebiegał dokładnie nad nimi. Czemu? Co trzeba naprawić, aby nawet bez żadnej zdolności wykrywania nadal odbijał się od przeszkód? Zwiększenie radius-lenght (przy zachowaniu tych samych zmiennych) wyraźnie zmienia zachowanie boidu. (Spróbuj zrobić to dynamicznie podczas przesuwania suwaka długości promienia w tę i z powrotem). Zamiast pokrycia większości środowiska, gdy długość promienia jest duża, to boid obejmuje znacznie mniejszy, bardziej ograniczony obszar, zazwyczaj w górnej części środowiska. Czasami może utknąć, pozornie uwięziony w tym samym miejscu.

RZECZY DO SPEŁNIENIA

Spróbuj dostosować prędkość boida, jej promień i długość promienia, aby zobaczyć, jak wpływa to na zachowanie boida. Spróbuj również zmienić Interface Settings, aby sprawdzić, czy ma to jakiś wpływ. Spróbuj dodać przeszkody, aby zobaczyć, jak wpływa to na zdolność boidu do pokrycia całego środowiska. Na przykład dodaj przeszkody w postaci labiryntu. Spróbuj stworzyć "czarne plamy", gdzie boid nigdy nie odwiedza. Alternatywnie, spróbuj złapać boid na niewielki obszar.

ROZSZERZENIE MODELU

Model można rozszerzyć, aby dodać stopniowe przyspieszenie i spowolnienie. Poprawiłoby to symulację boidów.

CECHY NETLOGO

Kod wykorzystuje polecenie in-cone do symulacji stożka widzenia boid

POWIĄZANE MODELE

Zobacz następujące modele: Ścieżka tłumu Podążaj, Uciekaj z przeszkodami, Podążaj i uniknij, Unikanie przeszkód 1, Unikanie przeszkód 2, Wizja stożek Przykład 2, Ściana za przykładem 2. Są to podstawowe implementacje różnych zachowań sterujących Craiga Reynoldsa dla boidów. Inny model związany z boidem to model Biology / Flocking w bibliotece modeli.

Ćwiczenie 6.7.5: Unikanie przeszkód 2 Model NetLogo

http://files.bookboon.com/ai/Obstacle-Avoidance-2.html

CO TO JEST?

Ten model implementuje boid (patrz praca Craiga Reynolda), który wykorzystuje podstawowe zasady sterowania unikaniem przeszkód.

JAK TO DZIAŁA

Czyni to poprzez generowanie żółwia wędrowiec (boid), że proste błąka się losowo w środowisku unikając przeszkód. Węzeł jest realizowany za pomocą polecenia in-cone NetLogo, które implementuje żółwia ze stożkiem widzenia.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- Setup: Ustawia środowisko z siatką przeszkód i granicą zewnętrzną (narysowaną za pomocą niebieskich łatek). Jeden agent żółwia (bojownik wędrowca) jest tworzony i umieszczany w losowych lokalizacjach
- Go: Boid zaczyna błąkać się po otoczeniu, unikając przeszkód.
- Draw Obstacle: Użytkownik może wyciągnąć kolejne przeszkody w środowisku. Są one w kolorze brązowym.
- Follow Wonderer: Pozwala to na zmianę perspektywy wizualizacji, tak aby była skierowana na wędrowca.
- Plot: To instruuje agenta żółwia wędrowiec, aby umieścić jego pióro w trakcie błądzenia. Stąd będzie to narysować ścieżkę, którą podążyła podczas błądzenia.

Suwaki modelu Interface są zdefiniowane w następujący sposób:

- boid-speed: kontroluje prędkość boidu, tj. ile przesuwa się do przodu każdego tiknięcia.
- rate-of-random-turn: To kontroluje, jak bardzo zmienia się wędrowanie boid za każdym razem, gdy tick. Boid ma tendencję do poruszania się w kierunku skrętu w prawo, ponieważ szybkość losowego skrętu w prawo (zgodnie z suwakiem) jest dwa razy większa niż prędkość losowego skrętu w lewo.
- radius-angle: Określa kąt promienia stożka widzenia boida.
- radius-length: Określa długość promienia stożka widzenia boida.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk Ustawienia, a następnie naciśnij Przejdź. Aby zobaczyć, gdzie przesuwa się boid, naciśnij przycisk Działka. Możesz narysować dodatkowe przeszkody, naciskając przycisk Rysuj przeszkodę, a następnie trzymając mysz w miejscu, w którym chcesz narysować przeszkody. Możesz zmienić układ odniesienia tak, aby wizualizacja znalazła się w pobliżu miejsca, w którym obecnie znajduje się boid, naciskając przycisk "Follow Wanderer".

RZECZY DO NOTYFIKACJI

Ustawienie boid-speed na 0,1, rate-of-random do 40, radius-angle do 300, radius-length do 1, i jednokrotne naciśnięcie przycisku Plot, a następnie przesunięcie suwaka prędkości (tuż poniżej zakładki Informacje w Interface) od "normal speed" do "faster" spowoduje, że boid szybko pokryje całe środowisko, a jednocześnie niezawodnie uniknie niebieskich przeszkód. Zwiększenie radius-length do 5 (przy zachowaniu tych samych zmiennych) wyraźnie zmienia zachowanie boidu. Zamiast pokrycia większości środowiska, boid obejmuje prostokątną ścieżkę o szerokości 4 do 5 wokół zewnętrznej strony środowiska, ale wciętej przez około 3 do 4 łatek z zewnętrznej granicy. Wydaje się, że boid powstrzymuje się od wejścia w prostokątną ścieżkę. Czasami boid może utknąć obracając się wokół jednej z przeszkód.

RZECZY DO SPEŁNIENIA

Spróbuj dostosować prędkość boida, kąt promienia i długość promienia, aby zobaczyć, jak wpływa to na zachowanie boidów. Spróbuj także zmienić Interface Settings, aby sprawdzić, czy ma to jakiś wpływ. Spróbuj dodać przeszkody, aby zobaczyć, jak wpływa to na zdolność boidu do pokrycia całego środowiska. Na przykład dodaj przeszkody w postaci labiryntu. Spróbuj stworzyć "czarne plamy", gdzie boid nigdy nie odwiedza. Alternatywnie, spróbuj złapać boid na niewielki obszar.

ROZSZERZENIE MODELU

Model można rozszerzyć, aby dodać stopniowe przyspieszenie i spowolnienie. Poprawiłoby to symulację modelu boidów.

CECHY NETLOGO

Kod wykorzystuje polecenie in-cone do symulacji stożka widzenia boid.

POWIĄZANE MODELE

Zobacz następujące modele: Crowd Path Following, Flocking With Obstacles, Follow and Avoid, Obstacle Avoidance 1, Obstacle Avoidance 2, Vision Cone Example 2, Wall Following Example 2. Są to podstawowe implementacje różnych zachowań sterujących Craiga Reynolda dla boidów. Inny model związany z boidem to model Biology / Flocking w bibliotece modeli.

Ćwiczenie 6.7.6: Ściana po przykładzie 2 Model NetLogo



http://files.bookboon.com/ai/Wall-Following-Example-2.html

CO TO JEST?

Żółwie w tym przykładzie podążają za ścianami wykonanymi z kolorowych łat. Niebieskie żółwie próbują utrzymać ścianę po prawej; zielone żółwie trzymają mur po lewej stronie. W związku z tym niebieskie żółwie lądują w kierunku zgodnym z ruchem wskazówek zegara, a niebieskie żółwie lądują w kierunku przeciwnym do ruchu wskazówek zegara. (Tylko informacje w modelu, które różnią się od modelu Wall Po Example dostarczonego przez Uri Wilensky′ego są zawarte poniżej).

JAK TO DZIAŁA

Model implementuje standardowe niezmodyfikowane zachowanie zapewniane przez oryginalny model Uri Wilensky′ego, ale zapewnia również alternatywne zmodyfikowane zachowanie, w którym działania zostały podzielone na trzy niezależne części w następujący sposób:

1. walk-modified-1: Żółw skręca w prawo, jeśli to konieczne.
2. Walk-modified-2: Żółw skręca w lewo, jeśli to konieczne.
3. walk-modified-3: Żółw porusza się do przodu.

Te zmodyfikowane zachowania podrzędne są wykonywane jednocześnie w określonej kolejności. Celem jest pokazanie zachowania typu "Rozważaj i myśl i działaj", w którym odczuwanie, myślenie i działanie są wykonywane jednocześnie, a nie zachowania typu "Rozważaj - myśl - działaj", w którym odczuwanie, myślenie i działanie są wykonywane jeden po drugim.

INTERFEJS

Przyciski Interface są zdefiniowane w następujący sposób:

- setup: inicjalizuje środowisko za pomocą losowo ukształtowanych bloków i umieszcza środki z żółwiami w przypadkowych miejscach w interweniujących czarnych obszarach.
- go: To uruchamia model.
- pen-down: To powoduje, że agenci żółwi kładą swoje pióra, tym samym kreśląc ścieżki, którymi się poruszają.

Selektory Interface i suwaki są zdefiniowane w następujący sposób:

- behaviour: Ustawienie tego na Standard powoduje ustawienie zachowania zgodnego z oryginalnym modelem Uri Wilensky′ego. Ustawienie tej opcji na Zmodyfikuje zachowanie opisane powyżej w sekcji "Jak to działa".
- choose-sub-behaviours: Gdy zmienna jest ustawiona na zachowanie Modified ustawienie tego na choose-all-in-random-order, a następnie trzy zmodyfikowane zachowania (patrz wyżej) będą realizowane wspólnie, ale w przypadkowej kolejności. W przeciwnym razie tylko jeden z nich zostanie losowo wybrany do wykonania.
- number-of-turtles: Jest to liczba agentów żółwia, które są tworzone podczas instalacji.

RZECZY DO ODNTOWANIA

Zmiana zmiennej zachowania ze Standard na Modified w Interface nie wydaje się zmieniać tego, co wydaje się robić żółwie. Jednak, gdy zachowanie jest ustawione na Modified, czy można zauważyć niewielkie różnice w zachowaniu do zachowania Standard, zwłaszcza gdy środkiem żółw kończy się w ślepej uliczce czy tam jest wąska uliczka drogi między dwoma budynkami. W tym ostatnim przypadku zachowanie zmodyfikowane powoduje, że żółwie mogą eksplorować dalej niż ich standardowe odpowiedniki. Gdy zmienna jest ustawiona na zachowanie Modified, trzeba pamiętać, że prędkość żółwi jest znacznie szybsze, gdy zmienna choose-sub-behaviours jest ustawiony na choose-all-in-random-order zamiast choose-one-at-random Czemu?

Ćwiczenie 6.7.7:

Spójrz na kod w modelach NetLogo opisanych w ćwiczeniach 6.7.1 do 6.7.6. W jaki sposób każdy z modeli radzi sobie z unikaniem przeszkód? (Znaleźć i wyjaśnić fragment kodu w modelach, które wykonują unikanie przeszkód). Czy są jakieś modele, które w ogóle nie unikają przeszkód?

Ćwiczenie 6.7.7:

W przypadku modelu Follow and Avoid opisanego w Ćwiczeniu 6.7.3 zachowanie trzech ras agentów określają procedury dla wanderers, followers i avoiders. Wyjaśnij, jak działają te trzy procedury. Które implementuje zachowanie podobne do boidów, a które nie?

Ćwiczenie 6.7.8:

W przypadku modelu Flocking with Obstacles opisanego w części 6.7.2, objaśnij, w jaki sposób działa kod, aby utworzyć flokowanie. W szczególności wyjaśnij zachowanie, które jest modelowane przez następujące procedury w modelu:

• separate;
• wyrównaj;
• cohere.
• Wyszczególnij także wszelkie pojawiające się zjawiska, które jesteś świadkiem (oczywistym przykładem jest flokowanie, ale są też inne, gdy różne zmienne są zmieniane za pomocą suwaków Interface).


Powrót

  Komunikacja 

7.1 Komunikacja, informacje i język

Ćwiczenie 7.1.1:

Porównaj różne znaczenia poniższych terminów, sprawdzając, jak są one zdefiniowane w literaturze:

• porozumiewanie się;
• Informacja;
• język.

7.2 Różnorodność ludzkiego języka

Ćwiczenie 7.2.1:

Ile języków ludzkich jest używanych w dzisiejszym świecie? Który kontynent ma największą liczbę używanych języków?

7.3 Komunikacja za pośrednictwem społeczności agentów

Ćwiczenie 7.3.1: Zmiana języka modelu NetLogo

Wypróbuj model zmiany języka w NetLogo:

http://ccl.northwestern.edu/netlogo/models/LanguageChange

Przeczytaj What is it? i Things to Notice w sekcji Information dla modelu. Następnie wypróbuj ćwiczenia sugerowane w Things to try i Extending the Model, aby wypróbować i rozszerzyć sekcje modelu. W szczególności informacja w modelu mówi, że użytkownicy języka zazwyczaj używają tylko jednej gramatyki, ale w niektórych przypadkach mogą nie wszystkie zbiegają się do tej samej gramatyki. Spróbuj dowiedzieć się, jakie warunki powodują, że użytkownicy języka łączą się w jedną gramatykę i jakie warunki powodują używanie wielu gramatyk.

Ćwiczenie 7.3.2:

Co dzieje się w modelu zmiany języka, gdy agenci komunikują się ze sobą? W szczególności wyjaśnij, jak działają następujące procedury w modelu:

• communiate-via;
• speak;
• listen.

7.4 Zachowanie komunikacyjne

Ćwiczenie 7.4.1: Komunikacja-T-T Przykład 2 Model NetLogo

Wypróbuj model komunikacji-T-T Przykład 2 w NetLogo:

http://files.bookboon.com/ai/Communication-T-T-Example-2.nlogo

Przeczytaj What is it? w Information dla oryginalnego modelu. Następnie wypróbuj zmodyfikowany model, którego zmodyfikowane Information opisano poniżej.

JAK TEGO UŻYĆ

Wybierz liczbę osób w symulacji, korzystając z suwaka liczby osób, naciskając przycisk konfiguracji, a następnie naciśnij przycisk START.

INTERFEJS

Przyciski w interfejsie są zdefiniowane w następujący sposób:

- setup: Usuwa zmienne i resetuje symulację tworząc osoby w losowych lokalizacjach, których liczba jest określona przez suwak liczby osób.

- go: To rozpoczyna symulację.

Monitor, suwak i wykres w interfejsie są zdefiniowane następująco:

- count turtles with [color = red]: To policzy liczbę żółwi, które znają wiadomość.
- number-of-people: Jest to liczba osób, które zostaną utworzone przy następnym naciśnięciu przycisku instalacji.

- Percentage of people knowing message : Spisuje procent osób, które znają wiadomość, pod względem liczby kleszczy.

RZECZY DO ODNOTOWANIA

Zauważ, że kiedy liczba osób jest ustawiona na maksimum, wiadomość dosłownie rozprzestrzenia się jak ogień.

RZECZY DO SPEŁNIENIA

Spróbuj uruchomić symulację z różną liczbą osób. Zwróć uwagę, co dzieje się na działce, gdy liczba osób jest mała, a nie duża. Przesyłanie wiadomości trwa znacznie dłużej, gdy rozmiar populacji jest niewielki. Dlaczego (skoro liczba osób nie wie, że wiadomość na początku jest o wiele mniejsza)?

ROZSZERZENIE MODELU

Spróbuj zmienić model, aby rozpowszechniać wiele wiadomości. Alternatywnie, spróbuj mieć dwie różne rasy ludzi - te, które rozprzestrzeniają wiadomości, i te, które tego nie robią. Wypróbuj kolejną odmianę, w której istnieje losowe prawdopodobieństwo (zdefiniowane przez wartość suwaka), które może mutować wiadomość po jej przekazaniu. Ustaw różne warunki, takie jak to, ile razy wiadomość musi być usłyszana od różnych osób, które określają, kiedy wiadomość jest ostatecznie "uwierzyła". Ile czasu zajmuje teraz rozprowadzenie wiadomości?

7.5 Zjawisko małego świata i algorytm Dijkstry

Ćwiczenie 7.5.1: Bycie modelem Kevina Bacona NetLogo

Wypróbuj model Being Kevin Bacon w NetLogo:

http://files.bookboon.com/ai/Being-Kevin-Bacon.nlogo

CO TO JEST?

Model ten stosuje różne algorytmy do poszukiwania określonego węzła celu w sieci. Problem polega na tym, że nie wiesz, gdzie znajduje się węzeł ani jak konfiguruje się sieć. Aby rozwiązać ten problem, należy zastosować wyszukiwanie, aby wypróbować różne ścieżki, które mogą prowadzić do węzła celu. Ten model implementuje rozwiązania oparte na wielu agentach, w których wiedza jest dzielona między agentami w dynamiczny sposób. Można je zastosować do tego problemu osobno, aby zobaczyć, jak działają przeciwko sobie. Model używa "Kevin Bacon" w swoim tytule, ponieważ Kevin Bacon został wybrany jako "centrum" Wszechświata Hollywood w oparciu o hasło "stopnie rozłąki z Kevinem Baconem". Ta fraza jest oparta na związanym z tym matematycznym hobby mierzenia stopnia rozdziału matematyków od Paula Erdösa, znanego węgierskiego matematyka, który był płodny w publikowaniu artykułów. Paul Erdös został wybrany jako centralny punkt pomiaru tego, jak dobrze łączy się dana osoba z matematyką. Stopnie miary separacji opierają się na tym, czy dana osoba opublikowała artykuł z Paulem Erdösem (co jest równoznaczne z numerem Erdösa 1), a jeśli nie, to opublikował artykuł z kimś kto opublikował artykuł z Paulem Erdösem (numer 2 Erdösa), a jeśli nie, opublikował artykuł z kimś, kto opublikował artykuł z kimś, kto opublikował artykuł z Paulem Erdösem (numer Erdös 3), a więc na. Model pozwala wybrać Paul Erdös lub Kevin Bacon jako "centrum wszechświata". Następnie może zmierzyć średni stopień separacji za pomocą algorytmu Dijkstry, lub może wyszukać węzeł powiązany z tymi osobami za pomocą różnych rozproszonych algorytmów dzielenia się wiedzą między agentami, takimi jak word-of-mouth.

JAKI JEST CEL?

Celem tego modelu jest przedstawienie pewnych ważnych pojęć związanych z komunikacją między agentami w sieci, takich jak zjawisko małego świata, stopnie separacji, super-węzły w sieciach peer-to-peer i komunikacja za pośrednictwem szeptanych.

JAK TO DZIAŁA

Model implementuje algorytmy wyszukiwania w nowatorski sposób, wykorzystując podejście zorientowane na agentów, które jest stosunkowo łatwe do wdrożenia w NetLogo. Model przyjmuje rozwiązanie czysto agentowe, w którym informacje są dystrybuowane wśród agentów NetLogo. W odróżnieniu od tradycyjnych algorytmów wyszukiwania (takich jak niedoinformowane wyszukiwania, takie jak Wyszukiwanie w pierwszej kolejności i Wyszukiwanie w pierwszej kolejności, lub wyszukiwania oparte na świadomych informacjach, takie jak Pierwsze najlepsze wyszukiwanie Greedy i A *, które są zaimplementowane w modelu Search for Kevin Bacon), ci agenci przeprowadzaj wyszukiwanie, dzieląc się wiedzą z innymi agentami, którzy jednocześnie prowadzą wyszukiwanie. W metodzie dzielenia się wiedzą ustną, jeśli agenci znaleźli cel, dzielą się swoją wiedzą z innymi agentami, z którymi spotykają się podczas powrotu do miejsca rozpoczęcia. Za pomocą metody tablicowej agenci dzielą się swoją wiedzą, pisząc to, co wiedzą, do wspólnych "tablic", które można znaleźć w każdym węźle. Może to następnie zostać odczytane przez agentów, którzy odwiedzają węzeł na później. Dwie kolejne metody dzielenia się wiedzą łączą te dwa podejścia - "word-of-mouth" i "blackboard" - w nieco inny sposób, aby stworzyć dwa nowe hybrydowe schematy dzielenia się wiedzą.Typ agentów żółwia dwalker jest używany dla agentów, które poruszają się po labiryncie, próbując dostać się do celu. Ci agenci wyszukujący przechowują informacje o bieżącym stanie wyszukiwania, takie jak ścieżka, którą podnieśli. Każdy agent wyszukiwania rozszerza wyszukiwanie, podążając za ścieżkami wychodzącymi z bieżącego węzła, które zostały zasugerowane w wyniku przyjętej metody dzielenia się wiedzą. Typ agentów dwalker jest używana do kroczenia po sieci podczas wykonywania algorytmu Dijkstry. Można to wykorzystać do obliczenia stopnia rozdzielenia każdego węzła w sieci od węzła celu.

JAK TEGO UŻYĆ

Aby zainicjować wyszukiwanie i utworzyć losową sieć (której typ jest określony przez selektor network-type), naciśnij przycisk setup-network w Interface. Aby skonfigurować agenta walkera do przeszukiwania sieci, najpierw naciśnij przyciski - reset-blackboards i reset-walkers, aby wyczyścić tablice i usunąć wszystkie istniejące walkery, a następnie naciśnij przycisk setup-walkers, aby utworzyć nowe. Kilka agentów żółwia walker (których liczba jest określona przez suwak new-walkers-per-tick) zostanie utworzona i losowo zlokalizowana w sieci. Przycisk "spacerowiczów" można nacisnąć kilkakrotnie, jeśli chcesz, aby więcej osób rozpoczynało wyszukiwanie.

Aby rozpocząć symulację, naciśnij go-walkers once, aby wyszukiwanie przebiegło krok po kroku, lub naciśnij przycisk go-walker, aby wyszukiwanie było kontynuowane. Chodzący będą kontynuowali wędrówkę po sieci do momentu znalezienia węzła celu lub wygasną bez powodzenia, jeśli przekroczyli wartość suwaka time-to-live. Łącza, przez które przechodzą agenci walker, są krótko pogrubione, aby pokazać ścieżki, które agenci podejmują w trakcie wyszukiwania. Aby wykreślić najkrótsze odległości i znaleźć średni stopień oddzielenia od węzła celu za pomocą algorytmu Dijkstry, naciśnij przycisk go-dijkstra.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:
- setup-network: Spowoduje to wyczyszczenie środowiska i wszystkich zmiennych oraz utworzenie losowej sieci, której typ jest określony przez selektor typu sieciowego. Jego układ jest określony przez selektor typu układu. Cztery suwaki: węzły, węzły super-węzłów, węzły-węzły i węzły-węzły-węzły kontrolują liczbę węzłów i super-węzłów oraz liczbę łączy między nimi.
- change-layout: jeśli układ jest typu spring, może to pomóc w usunięciu bałaganu.
- go-dijkstra: Drukuje najkrótsze drogi i znajduje średni stopień oddzielenia od węzła celu za pomocą algorytmu Dijkstry. Węzeł celu jest określony za pomocą choosera center-of-the-universe.
- reset-blackboards: Resetuje tablice, które są powiązane z każdym węzłem w sieci. Jest to wykorzystywane przez mechanizm udostępniania wiedzy w Blackboard.
- setup-walkers: Tworzy nowych walkerów zgodnie z liczbą w suwakach newwalkers-per-tick. Ci piechurzy zaczną chodzić po sieci, próbując znaleźć węzeł celu.
- go-walkers-once: To spowoduje, że symulacja będzie przebiegać krok po kroku.
- go-walkers-forever: To sprawi, że symulacja będzie kontynuowana, dopóki nie osiągnie węzła celu lub utknie.
- reset-walkers: To zabija wszystkich istniejących użytkowników i tworzy nowe, aby ponownie uruchomić wyszukiwanie zgodnie z liczbą w suwaku nowych spacerowiczów na tick.
- dump-blackboards: Spowoduje to zrzucenie zawartości wszystkich tablic w sieci (można to wykorzystać do celów debugowania).
- load-blackboards: to wstępnie ładuje tablice dla każdego węzła przy użyciu najkrótszych ścieżek znalezionych za pomocą algorytmu Dijkstra. (Poprawi to wydajność mechanizmu dzielenia się wiedzą w Blackboard).

Wybory, suwaki i przełączniki interfejsu modelu są zdefiniowane w następujący sposób:

- animate-dijkstra: Spowoduje to animację wykonania algorytmu Dijkstry (uruchamianego po naciśnięciu przycisku go-dijkstra).
- revisits-allowed: Jeśli jest ustawione na On, umożliwi to agentom ponowne sprawdzenie już odwiedzonych węzłów.
- center-of-the-universe: Ustawia węzeł celu, który agenci próbują znaleźć. Może być ustawiony na Paula Erdosa lub Kevina Bacona. (Te węzły są losowo tworzone podczas tworzenia sieci).
- knowledge-sharing: Określa typ dzielenia się wiedzą wykorzystywany przez agentów podczas chodzenia po sieci. Rodzaje dzielenia się wiedzą są następujące:

"None": agenci nie wymieniają żadnej wiedzy z innymi agentami. W rezultacie agenci trafiają losowo do sieci.
"Word-of-mouth": Jeśli agenci znaleźli cel, dzielą się swoją wiedzą z innymi agentami, których spotykają, gdy wracają do miejsca rozpoczęcia.
"Blackboard": agenci dzielą się swoją wiedzą pisząc to, co wiedzą, do wspólnych "tablic", które można znaleźć w każdym węźle. To może następnie zostać odczytane przez agentów, którzy owiedzili ostatni węzeł.
"Combined 1" i " Combined 2": Łączą one wiedzę o podejściach szeptanych i tablicowych w nieco inny sposób, aby stworzyć dwa nowe hybrydowe schematy dzielenia się wiedzą. Pierwszy schemat sprawdza najpierw tablicę, a następnie domyślnie program szeptany, jeśli nie ma wiedzy na tablicy. Drugi schemat jest odwrotny - najpierw zastosuje wiedzę z ustnej wiedzy, zanim nie dotrze do wiedzy o tablicach.
- network-type: Określa typ sieci tworzonej po naciśnięciu przycisku setup-network. Typy sieci są następujące:
"P2P-no-super-nodes": Symuluje sieć typu peer-to-peer bez super-węzłów.
"P2P-has-super-nodes": Symuluje sieć peer-to-peer z super-węzłami.
"P2P-random-single-link": Symuluje sieć typu peer-to-peer, w której każdy węzeł ma tylko jedno łącze z innym węzłem losowym.
"P2P-incremental": Tworzy symulowaną sieć peer-to-peer, stopniowo budując łącza do innych losowych węzłów po jednym na raz.
"P2P-incremental-1": Tworzy symulowaną sieć peer-to-peer, stopniowo budując łącza do innych losowych węzłów.
"Star-central-hub": Tworzy sieć z jednym węzłem (węzeł Bacon Bacon, tj. Węzeł celu) jako centralnym koncentratorem i wszystkimi innymi węzłami połączonymi z nim, a nie z żadnym innym węzłem.
"Hierarchical": Tworzy sieć drzewiastą z węzłem celu Kevina Bacona w katalogu głównym.
- layout-type : Określa sposób ułożenia sieci podczas wizualizacji.
- no-of-nodes: Jest to liczba węzłów do umieszczenia w sieci.
- no-of-super-nodes: Jest to liczba super-węzłów do umieszczenia w sieci. (Są to węzły, które zwykle będą miały znacznie więcej łączy niż standardowe węzły określone przez suwak link-per-super-node).
- links-per-node: Określa maksymalną liczbę łączy, które będą mieć węzły standardowe. Rzeczywista liczba wybrana dla danego węzła będzie liczbą losową od 1 do tej liczby.
- links-per-super node: Określa maksymalną liczbę łączy, które ma węzeł super-węzeł. Rzeczywista liczba wybrana dla danego super-węzła będzie liczbą losową od 1 do tej liczby.
- simulation-tocks: Określa czas trwania symulacji.
- network-update : Jeśli wartość jest niezerowa, spowoduje to aktualizację sieci w przedziale czasowym w zależności od liczby losowej od 0 do wartości tego suwaka.
- node-to-add : liczba węzłów określonych przez ten suwak zostanie dodana do sieci, gdy nastąpi następna aktualizacja zgodnie z suwakiem aktualizacji sieci.
- node-to-delete: liczba węzłów określonych za pomocą tego suwaka zostanie usunięta z sieci, gdy nastąpi następna aktualizacja zgodnie z suwakiem aktualizacji sieci.
- new-walkers-per-tick: Określa liczbę agentów Walker dodanych do każdego tiku symulacji.
- time-to-live: określa czas działania agentów Walker, jeśli nie znaleźli węzła celu, zanim zostaną zabici.
- new-walkers-per-node: Ustawia liczbę walkerów, które są tworzone w celu kontynuowania wyszukiwania w wielu różnych kierunkach, gdy każdy spaceruje do każdego węzła. Ustawienie tej wartości na wartość większą niż 1 szybko spowoduje zalanie sieci w większości przypadków.
- percent-in-both: Kiedy sieć zostanie utworzona, zostanie utworzona pewna liczba węzłów połączonych z węzłem Paula Erdosa (tj. ścieżka istnieje, która ostatecznie doprowadzi do Paula Erdosa), a liczba zostanie utworzona, są połączone z Kevinem Baconem. Ten suwak kontroluje liczbę węzłów, które będą podwójnie połączone (tj. Ścieżki istnieją od węzła, który doprowadzi do węzłów Paul Erdos i Kevin Bacon).

Monitory wykresu interfejsu modelu (pokazane po prawej stronie) są zdefiniowane następująco:

- Number of walkers: Ta działka pokazuje liczbę spacerowiczów na kleszcza.
-Successful searches: ten wykres przedstawia liczbę pomyślnych wyszukiwań (tj. Spacerowiczów, którzy znaleźli węzeł celu) dla każdego tiku.
- Shortest path distances: Ten wykres jest drukowany po naciśnięciu przycisku go-dijkstra. Wykreśla najkrótsze drogi z każdego węzła do węzła celu.
- #Nodes: ten monitor zgłasza liczbę węzłów w sieci. Zmieni się, jeśli sieć zostanie zaktualizowana, gdy aktualizacje sieci, węzły do dodania i suwaki węzłów-todelete będą niezerowe.
- #Walkers: ten monitor zgłasza liczbę aktywnych agentów Walker w sieci.
- #Visited: ten monitor zgłasza liczbę węzłów odwiedzonych przez agentów walker.
-%Success: ten monitor zgłasza procent agentów Walkera, którym udało się osiągnąć węzeł celu.
RZECZY DO ODNOTOWANIA

Zwróć uwagę, jak dobrze agenty wykonują zadanie znalezienia węzła celu, gdy metoda dzielenia się wiedzą jest ustawiona na None. Porównaj to z innymi metodami dzielenia się wiedzą. Zauważ, że mechanizm dzielenia się wiedzą na tablicach zwykle przewyższa mechanizm word of mouth pod względem odsetka pomyślnych wyszukiwań. Zauważ, że wstępne ładowanie tablic z najkrótszą ścieżką uzyskaną z wykonania algorytmu Dijkstry może znacznie poprawić wyszukiwanie. Zauważ, że gdy pojawi się efekt uczenia się z powodu mechanizmu dzielenia się wiedzą, wykres Successfuk Seaeches zacznie się zakrzywiać w górę, a następnie będzie kontynuowany jako linia prosta. Dlaczego to? Jakie ustawienia i typ sieci to dotyczy? Czy można uzyskać krzywą, aby wygięła się w dół zamiast w górę? (Wskazówka: Spróbuj zmienić wartość jednego lub dwóch z suwaków w połowie strumienia). Zwróć uwagę, jak efektywność wyszukiwania pogarsza się wraz ze zmianą sieci, gdy węzły są dodawane lub usuwane. Jaki rodzaj metody dzielenia się wiedzą najlepiej radzi sobie z dynamiczną siecią? Zwróć uwagę na efekt zmiany flag-allow-revisited-states? z On na Off Dlaczego Off jest tak skuteczne, że znacznie ogranicza poszukiwanie różnych zachowań związanych z wyszukiwaniem? Zauważ, że agenci pokazani, kiedy algorytm Dijkstry jest animowany, wydają się przeskakiwać w całej sieci. Dlaczego to?

RZECZY DO SPEŁNIENIA
Które zachowanie dzielenia się wiedzą wydaje się najlepsze w tym problemie? Który wydaje się najgorszy? Wypróbuj różne zachowania dzielenia się wiedzą, aby zobaczyć, który z nich jest najbardziej skuteczny. Spróbuj ustawić niskie i wysokie wartości dla suwaka time-to-live. W jaki sposób wpływa to na procent udanych wyszukiwań i liczbę odwiedzonych węzłów? Spróbuj kilkakrotnie naciskając przycisk setup-walkers. Spowoduje to rozpoczęcie wyszukiwania z więcej niż jednym spacerowiczem. Wypróbuj wszystkie typy sieci z różnymi ustawieniami suwaka. Jakie rodzaje sieci powodują problemy dla różnych metod dzielenia się wiedzą, a które nie? tj. które wydają się być bardziej trudne do przeszukania? Spróbuj zmienić zachowanie dzielenia wiedzy w połowie strumienia, aby sprawdzić, czy nie ma zauważalnego efektu. Na przykład spróbuj przełączyć się z metody udostępniania Word-of-Mouth na metodę udostępniania Blackboard, a następnie z powrotem.

ROZSZERZENIE MODELU

Spróbuj dodać inne mechanizmy dzielenia się wiedzą lub dodając własne odmiany do tych zaimplementowanych w modelu. Spróbuj dodać własny typ sieci, losowo utworzonej lub z korespondencją do sieci w realnym życiu. Będziesz musiał dodać procedury wejściowe, aby utworzyć układ sieci dla tego ostatniego. Zamiast używać agentów walker szukających jednego węzła w sieci, spróbuj dodać zasoby do każdego węzła, tak aby symulacja była podobna do problemu wykrywania zasobów, w którym zasób (np. jako plik MP3) może pojawić się w wielu węzłach w całej sieci, a każdy węzeł będzie miał wiele zasoby (do kilkudziesięciu tysięcy). Będziesz musiał dodać zmienną resources do pola własnych węzłów gdzie zasoby są tabelą zawierającą nazwy zasobów, które węzeł posiada lokalnie. Spróbuj wyłączyć wizualizację sieci, używając polecenia hide-turtle, aby ukryć wszystkich agentów i linki. Pozwoli to na uruchamianie znacznie większych symulacji - do 100 000 węzłów.

CECHY NETLOGO

Zwróć uwagę na użycie poleceń kreskowania i matryc do utworzenia nowych obiektów podrzędnych w każdym węźle i zakończ wszyscy istniejący piechurzy. Zauważ także, jak parametr next-locations-list dla expand-walkers polecenie określa używaną strategię dzielenia się wiedzą, która definiuje różne wyszukiwania.

POWIĄZANE MODELE

Zobacz model Wyszukiwanie Kevina Bacona.

7.6 Używanie agentów komunikacyjnych do wyszukiwania sieci

Ćwiczenie 7.6.1:

W modelu Being Kevin Bacon istnieje wiele różnych wartości suwaka, selektora i przełącznika, które można wypróbować podczas uruchamiania symulacji wyszukiwania. (Można to zrobić, naciskając najpierw przycisk setup-network, a następnie przycisk przejścia go-walkers.) Na przykład istnieje pięć różnych metod dzielenia się wiedzą - "None", "Word of mouth", "Blackboard", "Combined 1" i "Combined 2" - istnieje również siedem różnych typów sieci - "P2P-no-supernodes", "P2P-has-super-nodes", "P2Prandom-single-link", "P2P-incremental", "P2P -incremental-1 "," Star-central-hub "i" Hierarchical ". Rzeczywiście, gdybyśmy chcieli zbadać wszystkie różne konfiguracje symulacji wyszukiwania, przechodzimy przez wszystkie wartości przełącznika / wyboru / suwaka od prawej do lewej i od góry do dołu (tj. te dla wszystkich zielonych elementów Interface, ale ignorując dwa możliwe ustawienia przełącznika animate-dijkstra, który przełącza między algorytmem Dijsktry i symulacją wyszukiwania), całkowita liczba różnych ustawień będzie następująca:

2 × 2 × 5 × 7 × 3 × 9991 × 100 × 20 × 50 × 20000 × 101 × 11 × 11 × 20 × 100 × 10 × 101 = 2,071793 × 1026.

Uruchomienie symulacji dla wszystkich tych ustawień nie byłoby możliwe, ponieważ liczba ta przekracza całkowitą liczbę sekund, które upłynęły od początku wszechświata, który szacuje się na około 1, a następnie 17 zer. Oczywiście musimy być bardziej selektywne, które ustawienia eksperymentalne uruchomić, aby zbadać zachowanie modelu dla różnych konfiguracji. Na szczęście NetLogo udostępnia narzędzie o nazwie BehaviorSpace, które ułatwia poznanie "przestrzeni" możliwych zachowań tego modelu. Narzędzie systematycznie uruchamia model wiele razy i zapisuje wyniki każdego uruchomienia do pliku. (Ten proces jest czasami nazywany "zamiataniem parametrów"). Narzędzie można uruchomić bezpośrednio z menu Narzędzia w NetLogo. Sposób użycia jest opisany w instrukcji użytkownika NetLogo. Poniższy fragment pochodzi z podręcznika i wyjaśnia, dlaczego takie narzędzie jest tak użyteczne: "Potrzeba tego rodzaju eksperymentu została ujawniona w następujących obserwacjach. Modele często mają wiele ustawień, z których każdy może przyjmować zakres wartości. Razem tworzą to, co w matematyce nazywa się przestrzenią parametrów dla modelu, którego wymiary są liczbą ustawień, i w którym każdy punkt jest określoną kombinacją wartości. Uruchomienie modelu z różnymi ustawieniami (a czasami nawet tymi samymi) może prowadzić do drastycznego odmiennego zachowania w modelowanym systemie. Skąd więc wiedzieć, która konkretna konfiguracja wartości lub typów konfiguracji przyniesie pożądane zachowanie? Sprowadza się to do tego, gdzie w swojej ogromnej, wielowymiarowej przestrzeni parametrycznej Twój model działa najlepiej? "W tym ćwiczeniu wypróbuj narzędzie BehaviorSpace dla modelu Being Kevin Bacon, aby sprawdzić, które zachowania dzielenia się wiedzą najlepiej sprawdzają się w wyszukiwaniu symulowane sieci. Najpierw wybierz opcję BehaviorSpace z menu Tools, a następnie, aby utworzyć nową konfigurację eksperymentu, kliknij New w oknie dialogowym BehaviorSpace, które się pojawi. Spowoduje to utworzenie kolejnego okna dialogowego eksperymentu, w którym określisz ustawienia eksperymentu. Wprowadź nazwę eksperymentu w górnej części okna i użyj wartości wymienionych poniżej dla pozostałych pól. Zmien zmienne w następujący sposób (uwaga: nawiasy i cudzysłowy):

["links-per-node" 5]
["layout-type" "circle"]
["animate-dijkstra" true]
["nodes-to-delete" 0]
["centre-of-the-universe" "Kevin Bacon"]
["new-walkers-per-node" 1]
["simulation-ticks" 500]
["new-walkers-per-tick" 5]
["percent-in-both" 10]
["network-update" 0]
["network-type" "P2P-no-supernodes"]
["time-to-live" 5 10 15 20]
["nodes-to-add" 0]
["no-of-nodes" 1000]
["revisits-allowed" false]
["links-per-super-node" 20] ["no-of-super-nodes" 5] ["knowledge-sharing" "None" "Word of mouth" "Blackboard" "Combined 1" "Combined 2"]
Repetitions: 5
Measure runs using these reporters: report-success-rate
Measure runs at every step: ?
Setup-commands: setup-network
Go commands: go-walkers
Stop condition:
Final commands:
Time limit: 0

W polu, które rozpoczyna się od "Vary variables as follows….", ustawiany jest zakres wartości możliwych ustawień dla modelu. Pole Repetitions określa, ile razy eksperyment został powtórzony. Pole "Measure runs using the reporters" określa, które reportery w modelu są wykonywane w celu zebrania danych o przebiegu. Są one rejestrowane w tworzonym pliku wyjściowym. "Measure runs at every step" zapewnia, że te reportery są wykonywane na każdym etapie. Pole setup-commands określa, które polecenia w modelu są wykonywane na początku każdego uruchomienia, a pole "Go-commands" określa polecenia wykonywane w każdym kroku. Istnieją również pola dla określenia warunku zatrzymania dla przebiegu, końcowych poleceń do wykonania na końcu przebiegu i ustalonego limitu czasu (jeśli jest ustawione na 0, nie określono czasu). Po wypełnieniu okna dialogowego Experiment naciśnij przycisk OK u dołu, a następnie naciśnij przycisk Run w oknie dialogowym BehaviorSpace. Zostanie wyświetlone okno dialogowe Run options. Jeśli chcesz, aby wyniki eksperymentu zostały zapisane w pliku w formacie odpowiednim do załadowania do aplikacji arkusza kalkulacyjnego, zaznacz opcję Spreadsheet output, a następnie przycisk OK. Exporting as spreadsheet zostanie wyświetlone okno dialogowe z arkuszem kalkulacyjnym, w którym można określić nazwę pliku wynikowego wyników. Naciśnięcie przycisku Save uruchomi eksperyment. Po zakończeniu eksperymentu możesz uruchomić go ponownie, naciskając przycisk Uruchom w oknie dialogowym Experiment. Spójrz na wyniki eksperymentu, ładując plik wyjściowy, który został wygenerowany do pliku arkusz. Przeanalizuj wyniki, aby dowiedzieć się, która z metod dzielenia się wiedzą była najlepsza na różnych typach sieci. Spróbuj również znaleźć interesujące wyniki lub trendy w generowanych danych. Utwórz kolejne eksperymenty, używając różnych ustawień, gdy pojawi się okno dialogowe Eksperyment. Czy te eksperymenty przyniosły różne wyniki w pierwszym eksperymencie?

7.7 Entropia i informacje

Ćwiczenie 7.7.1:

Wypracuj entropię wiadomości, które mają być zakodowane za pomocą symboli z następujących rozkładów prawdopodobieństwa:
• dla alfabetu zawierającego dwa symbole o równych prawdopodobieństwach;
• dla alfabetu zawierającego cztery symbole o równych prawdopodobieństwach;
• dla alfabetu zawierającego sześć symboli: czerwony, pomarańczowy, brązowy, żółty, zielony i wapienny, z prawdopodobieństwami w następujący sposób:

Ćwiczenie 7.7.2:

W jakich warunkach jest minimalna entropia dla alfabetu o określonej wielkości?

7.8 Obliczanie entropii w NetLogo

Ćwiczenie 7.8.1: Gra Zgadywanie samochodów w modelu NetLogo

Wypróbuj model gry Zgadywanie samochodów w NetLogo:

http://files.bookboon.com/ai/Cars-Guessing-Game.nlogo

CO TO JEST?

Ten model odgrywa prostą grę, próbując odgadnąć kolor samochodów podczas ich przejazdu. Różni agenci zachowują rozkład prawdopodobieństwa, którego używają do przewidywania przybycia samochodów. Dystrybucja źródła jest stałą dystrybucją używaną do generowania samochodów, więc jest najdokładniejsza, a zatem jej entropia jest entropią źródła, a odpowiadająca jej długość kodu jest najniższa (długość kodu jest optymalnym kosztem kodowania sekwencji samochodów biorąc pod uwagę rozkład prawdopodobieństwa). Agenty od 01 do 03 utrzymują stałe rozkłady, które użytkownik może dostosować zgodnie z ich potrzebami, zmieniając wartości suwaków po lewej stronie interfejsu. Adaptacyjny agent utrzymuje również dynamiczną dystrybucję, aktualizując liczbę samochodów, które były wcześniej widziane. Liczby te są pokazywane w interfejsie przez monitory pod nagłówkiem "Dystrybucja agenta adaptacyjnego". Obliczenia entropii i długości kodu są pokazywane przez monitory na środku interfejsu. Adaptacja entropijna i długość kodu to te, które zwykle zbliżają się do entropii źródłowej i długości kodu, podczas gdy entropia i długość kodu innych agentów odzwierciedlają różnice w ustawieniach suwaka z rozkładu źródłowego.

CZYM JEST CEL?

Celem tego modelu jest pokazanie, w jaki sposób wykonywane są obliczenia entropii i długości kodu z uwzględnieniem rozkładu prawdopodobieństwa.
JAK TO DZIAŁA

Agent żółwia car służy do reprezentowania samochodów w środowisku. Są one tworzone z kolorami dystrybuowanymi zgodnie z dystrybucją źródłową. Przybycie następnego samochodu na lewo od otoczenia określa losowa liczba wygenerowana zgodnie z suwakiem next-car-random-tick-interval. Agenci żółwi zwani "agents" również są obecni, ale nie są pokazani w animacji. Można je uważać za obserwatorów obserwujących przejeżdżające samochody. Każdy posiada dystrybucję, która jest listą zliczeń, które są używane do obliczenia prawdopodobieństwa w celu odgadnięcia nadchodzących samochodów.

JAK TEGO UŻYĆ

Ustawienie wartości na suwakach dla Source Distribution określi rozkład dla samochodów, które pojawią się w animacji. Ustawienie next-car-random-tick-interval będzie kontrolować, jak często samochody się pojawiają. Użytkownik może następnie ustawić wartości suwaków dla trzech dystrybucji Agent distribution po lewej stronie, aby zobaczyć, jak wpływa to na entropię i długości kodu dla tych dystrybucji.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- setup: Resetuje animację i inicjuje wartości zliczeń, entropii i długości kodu.
- animate-cars: uruchamia animację w środowisku (jasnoniebieski prostokąt przedstawia środkowe dno Interface).
Suwaki modelu Interface mają następującą konwencję nazewnictwa:
- .

. Te liczby są używane do określenia prawdopodobieństwa dla określonego koloru przy użyciu następującego wzoru:



gdzie C(colour) jest liczbą dla symbolu, a Ctotal jest sumą wszystkich zliczeń dla wszystkich kolorów

Monitory interfejsu modelu są zdefiniowane w następujący sposób:

- adaptive-: Jest to liczba samochodów obserwowanych w animacji danego koloru, która jest adaptacyjnie aktualizowana w miarę postępu animacji.
- Entropia: Jest to entropia rozkładu prawdopodobieństwa obsługiwanego przez agenta o nazwie .
- Długość kodu: Jest to koszt optymalnego kodowania sekwencji obserwowanych samochodów, biorąc pod uwagę rozkład prawdopodobieństwa agenta.
Wykres modelu jest zdefiniowany następująco:
- Rozkłady są konwertowane na liczbę, która w unikalny sposób reprezentuje wartości zliczeń w rozkładzie. (Na przykład liczba 1234 może być uważana za reprezentującą cztery oddzielne liczby - 1, 2, 3 i 4 - które łączą się, tworząc niepowtarzalną liczbę. W tym przypadku oddzielne liczby nie mieszczą się w zakresie od 0 do 9; mogą wynosić od 0 do 1000). Liczba, która w unikalny sposób reprezentuje rozkład, jest następnie narysowana w porównaniu z kleszczami, aby pokazać, jak rozkłady ewoluują w trakcie symulacji.
RZECZY DO NOTYFIKACJI
Zwróć uwagę, jak dobrze rozkład adaptacyjny ma w porównaniu z dystrybucją źródłową. Dystrybucja źródłowa będzie miała najniższą całkowitą długość kodu w porównaniu do innych, ale zazwyczaj najbliższa dystrybucja będzie miała charakter adaptacyjny (chyba że zliczenie jednej lub więcej dystrybucji dokładnie pasuje do Agent′s distribution źródła). Jeśli dystrybucja źródłowa ma taką samą liczbę, to liczba adaptacyjna wzrośnie z podobną szybkością, a w konsekwencji czerwona linia na wykresie wzrośnie ukośnie od dolnej lewej do prawej górnej. (Dlaczego?) Pozioma linia na wykresie oznacza stały rozkład. Modyfikowanie liczników dystrybucji w środku animacji spowoduje, że linie na wykresie będą się zmieniały, aby to odzwierciedlić.

RZECZY DO SPEŁNIENIA

Spróbuj zmienić liczniki dystrybucji na suwakach, aby zobaczyć, jaki wpływ ma to na obliczenia entropii i długości kodu oraz na to, co dzieje się na wykresie. Zauważ, że niższe kolory (niebieskie i różowe) spowodują największe przesunięcia na wykresach liniowych. (Dlaczego?) Czy można osiągnąć sytuację, w której długość kodu jednego z trzech agentów nieadaptacyjnych jest lepsza niż agenta adaptacyjnego? (tj. długość kodu jest mniejsza i bliższa sumie kodu kodu źródłowego).

7.9 Modelowanie języka

Ćwiczenie 7.9.1: Modelowanie języka Model NetLogo

Wypróbuj model modelowania języka w NetLogo:

http://files.bookboon.com/ai/Language-Modelling.nlogo

CO TO JEST?

Ten model pokazuje, w jaki sposób można zbudować model językowy z jakiegoś tekstu szkoleniowego. Typem modelu języka jest model Markowa o ustalonym porządku - to znaczy, zgodnie z własnością Markowa, rozkład prawdopodobieństwa dla następnego kroku i przyszłych kroków zależy tylko od bieżącego stanu systemu i nie uwzględnia poprzedniego stanu systemu . Model językowy jest także ustalonym porządkiem - to znaczy prawdopodobieństwo jest uwarunkowane wcześniejszym kontekstem o ustalonej długości. Uwaga: Istnieje pewne możliwe zamieszanie terminu "model" dla tego "modelu" NetLogo. NetLogo używa terminu "model" w odniesieniu do programu / symulacji. Można to pomylić z użyciem terminu "model" w wyrażeniu "model językowy", który jest mechanizmem przypisywania prawdopodobieństwa do sekwencji symboli za pomocą rozkładu prawdopodobieństwa. W informacjach wymienionych poniżej dwa typy modeli będą wyraźnie rozróżnia się za pomocą zwrotów "model NetLogo" i "model języka".

JAKI JEST CEL?

Celem tego modelu NetLogo jest pokazanie różnych ważnych cech modeli językowych i wizualizacja ich za pomocą linku NetLogo i agentów żółwi.
JAK TO DZIAŁA

Modelowane dane są konceptualizowane jako strumień zdarzeń (to jest analogicznie do Event Stream Processing lub ESP), gdzie zdarzenia zachodzą z określoną kolejnością dla określonego strumienia, ale jednocześnie mogą występować jednocześnie w oddzielnych strumieniach. Sekwencja tekstowa szkolenia służy do szkolenia modelu językowego. Ten model języka jest następnie używany do przetwarzania sekwencji tekstu testowego. Każde zdarzenie strumienia z danych szkolenia jest reprezentowane przez agenta stanu żółwia, a ścieżki między stanami są reprezentowane przez agentów łącza ścieżki. Kiedy model językowy jest używany dla aplikacji, takiej jak przetwarzanie sekwencji testowej tekstu, to agenci walker są wykorzystywani do przechodzenia przez sieć stanów i łączy, aby pokazać, w którym momencie aktywne są bieżące konteksty. Agenci tekstu żółwia służą do przechowywania informacji o konkretnym tekście, takich jak sumy i zmienna do przechowywania modelu językowego.

JAK TEGO UŻYĆ

Naciśnij przycisk setup w Interface, aby zresetować wszystkich agentów. Aby załadować model języka, najpierw wybierz tekst, który chcesz wczytać z which-text, a następnie naciśnij przycisk load-model-from-text. Spowoduje to załadowanie modelu językowego do środowiska, aby można go było wizualizować za pomocą układu określonego przez selektor lyout-type. Jeśli wybrałeś spring layout - type, naciśnięcie przycisku change-layut może czasami usunąć niektóre z bałaganów, gdy już się pojawiły załadowany. Inne modele językowe z różnych tekstów mogą być następnie ładowane w razie potrzeby. Pola wejściowe pick-these-streams i pick-these-events mogą być używane do odfiltrowania modelu językowego, dzięki czemu wizualizowana jest tylko część modelu języka, który pasuje do określonych strumieni i zdarzeń. Selektor zdarzeń tekstowych określa, jaki typ zdarzenia ma zostać załadowany. Model NetLogo w tej chwili przetwarza tylko zdarzenia typu znak i słowo. Aby zobaczyć, w jaki sposób modele językowe przetwarzają testową sekwencję, najpierw edytuj pole wprowadzania test-text i wstaw tekst testowy, który chciałbyś przetworzyć, a następnie naciśnij przycisk go-walkers. Ścieżki brane pod uwagę w modelach językowych zostaną podświetlone, ponieważ sekwencja tekstu testowego jest przetwarzana sekwencyjnie.

INTERFEJS

Przyciski modelu Interface NetLogo są zdefiniowane w następujący sposób:

- setup: To (re-) inicjalizuje wszystkie zmienne. - change-layout: Zmienia układ w celu przesunięcia agentów, jeśli suwak typu layout jest ustawiony na "spring".
- go-walkers: Jeśli model języka jest wizualizowany w środowisku, to uruchomi animację, która pokazuje, w jaki sposób sekwencja testowania (określona w polu wprowadzania tekstu testowego) jest przetwarzana przy użyciu modelu językowego.
- kill-all-walkers: To zabija wszystkich obecnych spacerowiczów.
- load-model-from-text: Spowoduje to załadowanie modelu językowego z wykorzystaniem tekstu szkolenia określonego przez selektor which-text. Typ zdarzeń (znaki lub słowa) jest określony przez selektor text-event.

Suwaki modelu Interface NetLogo i selektory są zdefiniowane w następujący sposób:

- layout-type: Określa typ układu używanego do wizualizacji - sprężynowy lub radialny.
- which-text: Określa tekst szkolenia, którego należy użyć do szkolenia modeli językowych.
- text-event: Określa typ zdarzenia w przetwarzanym tekście szkolenia - znaki lub słowa.
- max-tree-depth: Określa maksymalną głębokość drzewa modelu językowego (kolejność modelu językowego równa się max-tree-depth + 1).
- max-text-size: Określa maksymalną liczbę znaków do przetworzenia z trenowanego tekstu. Zaleca się względnie niską liczbę, w przeciwnym razie będzie zbyt wiele do zobrazowania.
- window-size: Określa rozmiar okna, w którym model NetLogo próbuje sklasyfikować tekst za pomocą prostej formy kategoryzacji tekstu. W tym przypadku utrzymywana jest liczba aktywności modeli językowych (gdzie działanie jest podświetlaniem przekreślonego łącza podczas animacji), a najbardziej aktywny model językowy jest wyświetlany w Most Active Recently in Window Kategorię sekwencji testowania można następnie ustawić na etykietę języka najbardziej aktywnego modelu językowego. np. jeśli z różnych tekstów szkoleniowych były napisane francuskie, angielskie i hiszpańskie modele językowe, a językowym pokazanym przez monitor był model języka francuskiego, to tekst można sklasyfikować jako francuski.

Przełączniki modelu Interface NetLogo są zdefiniowane w następujący sposób:

- setup-char-models ?: Jeśli ustawione na On, to ustawia modele, aby rozpoznawać słowa i znaki interpunkcyjne od znaków.
- show-counts ?: Jeśli ustawione na On, to pokaże liczbę w wizualizacji modeli językowych.
- debug-trace ?: Jeśli opcja jest ustawiona na On, wydrukuje obficie informacje debugowania, aby pokazać wykonywanego kodu.

Pola wejściowe wykresu i monitora Interface NetLogo są zdefiniowane w następujący sposób:
- pick-these-streams: To może być używane do przycinania tego, co jest wizualizowane w każdym modelu językowym. Tylko określone strumienie będą wizualizowane.
- pick-these-events: To może być używane do przycinania tego, co jest wizualizowane każdego modelu językowego. Tylko określone zdarzenia będą wizualizowane.
- test-text: Jest to tekst testowy, który jest przetwarzany sekwencyjnie.
-Total of paths traversed plot, które przeszły przez fabułę: Przedstawia liczbę ścieżek przetransmitowanych w modelu językowym w stosunku do liczby przetworzonych zdarzeń.
- Most Active Recently in Window: Jest to najbardziej aktywny model w poprzednim oknie (o długości okna) w tekście testowym.

RZECZY DO ODNOTOWANIA

Zauważ, że oparte na słowach modele językowe są znacznie mniej złożone pod względem wizualizacji niż złożoność modeli języka znaków. Można się tego spodziewać, ponieważ w tekście jest znacznie mniej zdarzeń w słowie niż zdarzeń z postaciami (na przykład średnio dla języka angielskiego 5 znaków na słowo). Spróbuj załadować kilka modeli językowych razem. Następnie zwróć uwagę, jak przy wyborze tekstu testowego w języku podobnym do jednego z tekstów szkoleniowych używanych do szkolenia modeli językowych, wówczas najbardziej aktywny staje się model językowy o podobnym języku. Wynika to z faktu, że język można łatwo zidentyfikować w sposób unikalny i wyjaśnia, dlaczego możliwe jest wykonywanie autorstwa w oparciu o modele językowe z dużą dokładnością.

RZECZY DO SPEŁNIENIA

Spróbuj wczytać wszystkie modele językowe z różnych tekstów (określonych przez which-text). Robiąc to, ustaw różne wartości dla kolejności modeli językowych, ustawiając suwak max-tree-depth od 1 do 8. (Zachowaj ostrożność, gdy ta wartość jest ustawiona na wysoką - modele językowe mogą zająć trochę czasu czas ładowania, a wizualizacja staje się bardzo zagracona). Spróbuj rozszerzyć maksymalny rozmiar tekstu treningowego (używając suwaka max-text-size) i sprawdź, jaki wpływ ma to na złożoność modeli językowych. Spróbuj zmienić suwak window-size, aby zobaczyć, jaki ma to wpływ na monitor Most Active Recently in Window

ROZSZERZENIE MODELU NETLOGO

Wypróbuj odmianę modelu NetLogo, w którym większość węzłów jest ukryta, a tylko te wybrane do wizualizacji (wybrane przez pick-these-streams i pick-these-events) są wyświetlane w środowisku. Oznacza to, że można załadować dużo większe modele językowe (ponieważ procedura reset-layout układu sprężynowego spowalnia program po załadowaniu modelu językowego). Można również wypróbować alternatywną animację, w której animowana jest tylko aktywna część modelu językowego. tzn. wszystko w modelu językowym pozostaje ukryte, dopóki nie zostanie aktywowane. Jeśli dodamy entropię i obliczenia długości kodu (jak w modelu NetLogo gry Cars Guessing), to model można rozszerzyć, aby wykonać z dużą dokładnością zadanie identyfikacji języka, identyfikacji autora lub kategoryzacji tekstu, po prostu wybierając klasę ( tj. język, autor lub kategoria) testowego tekstu, który jest klasą tekstu używanego do szkolenia modelu języka, który wytwarza najmniejszą długość kodu w sekwencji testowej.

POWIĄZANE MODELE

Zobacz wydarzenia związane z Central Park i następujące po nich modele NetLogo. Aby przewidzieć, używając tych modeli językowych, zobacz model gry Shannon Guessing Game NetLogo.

7.10 Entropia języka

Ćwiczenie 7.10.1: Odgrywanie gry Shannon Model NetLogo

Wypróbuj model gry Shannon Guessing w NetLogo:

http://files.bookboon.com/ai/Shannon-Guessing-Game.nlogo

CO TO JEST?

Ten model pokazuje, w jaki sposób można zbudować model językowy z jakiegoś tekstu szkoleniowego, a następnie wykorzystać go do przewidywania tekstu - np. Zagrać w "Shannon Guessing Game", grę, w której agent (człowiek lub komputer) próbuje przewidzieć nadchodzący tekst, jedna litera na czas, w oparciu o poprzedni tekst, który już widział. Uwaga: Istnieje pewne możliwe zamieszanie terminu "model" dla tego "modelu" NetLogo. NetLogo używa terminu "model" w odniesieniu do programu / symulacji. Można to pomylić z użyciem terminu "model" w wyrażeniu "model językowy", który jest mechanizmem przypisywania prawdopodobieństwa do sekwencji symboli za pomocą rozkładu prawdopodobieństwa. W poniższych informacjach dwa typy modeli zostaną wyraźnie rozróżnione za pomocą zwrotów "model NetLogo" i "model języka". Typem modelu językowego stosowanego w tym modelu NetLogo jest model Markowa o ustalonym porządku - to znaczy, zgodnie z własnością Markowa, rozkład prawdopodobieństwa dla następnego kroku i przyszłych kroków zależy tylko od bieżącego stanu systemu i nie bierze pod uwagę rozważ poprzedni stan systemu. Model językowy jest także ustalonym porządkiem - to znaczy prawdopodobieństwo jest uwarunkowane wcześniejszym kontekstem o ustalonej długości.

JAK TO DZIAŁA

Model językowy oparty jest na algorytmie kompresji PPMC opracowanym przez Johna Cleary'ego i Iana Witten'a. Wykorzystuje mechanizm back-off zwany escaping, aby wygładzić estymacje prawdopodobieństwa za pomocą modeli o niższym rzędzie w celu przezwyciężenia problemu z zerową częstotliwością. Jest to problem, który pojawia się, gdy nadchodząca postać nie była wcześniej widziana w kontekście, a zatem ma zerową częstotliwość. Przypisanie oszacowania zerowego prawdopodobieństwa spowoduje nieskończoną długość kodu (ponieważ log0 = ?), co oznacza, że nie można zakodować zdarzenia za pomocą tego oszacowania. Aby temu zaradzić, szacunki są obliczane przez wygładzanie za pomocą modeli niższego rzędu przy użyciu mechanizmu ucieczki. Prawdopodobieństwo ucieczki szacuje się za pomocą metody C opracowanej przez Alistaira Moffata (stąd dlaczego nazywa się ją PPMC). Metoda wygładzania jest często błędnie nazywana wygładzaniem Witten-Bell, chociaż była wymyślona przez Alistaira Moffata. Model języka PPMC implementowany przez ten model NetLogo nie implementuje pełnych wyłączeń ani aktualizacji wykluczeń.
JAKI JEST CEL?

Celem tego modelu NetLogo jest przedstawienie sposobu implementacji modelu języka opartego na schemacie kompresji PPMC, a następnie wykorzystanie go do przewidywania tekstu po jednym znaku na raz.

JAK TO DZIAŁA

Modelowane dane są konceptualizowane jako strumień zdarzeń (to jest analogicznie do Event Stream Processing lub ESP), gdzie zdarzenia zachodzą z określoną kolejnością dla określonego strumienia, ale jednocześnie mogą występować jednocześnie w oddzielnych strumieniach. Sekwencja tekstowa szkolenia służy do szkolenia modelu językowego. Ten model języka jest następnie używany do przetwarzania sekwencji tekstu testowego. Każde zdarzenie strumienia z danych szkolenia jest reprezentowane przez agenta state żółwia, a ścieżki między stanami są reprezentowane przez agentów path. Kiedy model językowy jest używany do przewidywania, na przykład podczas grania w grę Shannon Guessing, tak jak w tym modelu NetLogo, to agenci walker są wykorzystywani do kroczenia po sieci stanów w celu ustalenia, które z bieżących kontekstów są aktywne. Są one następnie wykorzystywane do oszacowania prawdopodobieństwa. Agenci Text żółwia służą do przechowywania informacji o konkretnym tekście, takich jak sumy i zmienna do przechowywania modelu językowego.

JAK TEGO UŻYĆ

Aby użyć tego modelu NetLogo, wykonaj następujące kroki:

1. Wybierz tekst treningowy do załadowania za pomocą suwaka, which-training-text.
2. Załaduj i zbuduj dla niego model językowy za pomocą przycisku load-training-text
3. Wybierz testowy tekst, aby przeprowadzić prognozę użycia suwaka which-testing-text.
4. Następnie przewidujemy tekst testowy po jednym znaku naraz, naciskając przyciskpredict-text.
INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- load-training-text: ładuje tekst treningowy określony przez suwak tekstu przemawiającego. Jednocześnie konstruuje z niego model języka.
- load-testing-text: ładuje tekst testowy określony przez suwak tekstu który testuje tekst.
- predict-text: Przewiduje tekst w testowym tekście po jednym znaku na raz.
Suwak i selektory modelu Interface są zdefiniowane następująco:

- max-depth-of-tree: Jest to maksymalna głębokość drzewa kontekstów. Kolejność modelu to (max-głębokość-drzewa-1).

- output-options: określa, ile danych wyjściowych jest zapisanych w skrzynce wyjściowej podczas fazy predykcji.

- which-training-text: Ten suwak pozwala użytkownikowi wybrać z małej, ale eklektycznej listy tekstów w języku naturalnym, które będą używane jako dane do szkolenia modelu językowego.

- which-testing-text: Ten suwak pozwala użytkownikowi wybrać z małej, ale eklektycznej listy tekstów w języku naturalnym, aby użyć jako danych, na których testowany jest model językowy, przewidując każdy znak jeden po drugim.

RZECZY DO NOTYFIKACJI

Zwróć uwagę, jak zwiększa się przewidywanie, gdy zmienna max-depth-of-tree zostanie zwiększona z 1 na 5 lub 6, a następnie lekko spadnie. Zależy to jednak w dużej mierze od tekstu szkoleniowego stosowanego do budowy modelu językowego i od tego, jak bardzo jest on powiązany z tekstem testowym. Zwróć uwagę, jak słaba jest prognoza, gdy teksty szkoleniowe i testowe pochodzą z różnych języków. Zauważ też, że w przypadku pierwszych kilku znaków w tekście testowym przewidywania są stosunkowo słabe. Dlaczego to? W przeciwieństwie, zauważ, jak dobrze model językowy przewiduje przewidywanie tekstu testowego, jeśli jest przeszkolony na dokładnie tym samym tekście (tj. Trening i teksty są dokładnie takie same). Uwaga: ta sytuacja rzadko pojawia się w prawdziwe przewidywanie życia, ponieważ zwykle sekwencja testów jest całkowicie nieprzewidywalna. Zauważ również, że najlepszy model językowy dla modeli wyższego rzędu może zrobić dla przewidywania następnego znaku jest często tylko 1/2 lub 1 bit do kodowania nawet w sytuacji, w której został przeszkolony na teście testowym. Dlaczego to? Wskazówka: co by się stało, gdyby długość tekstu szkolenia była znacznie dłuższa?

RZECZY DO SPEŁNIENIA

Spróbuj zmienić max-depth-of-tree, aby zobaczyć, jak wpływa to na prognozę. Wypróbuj różne kombinacje szkoleń i testowania tekstów.
ROZSZERZENIE MODELU

Rozszerz model języka PPMC, tak aby implementował pełne wykluczenia i aktualizować wykluczenia. Czy możesz opracować dalsze metody poprawy przewidywania modelu językowego?

POWIĄZANE MODELE

Zobacz model modelowania języka NetLogo i model NetLogo Cars Guessing Game.

7.11 Znaczenie komunikacyjne

Ćwiczenie 7.11.1:

Wypełnij konceptualną metaforę następujących dwóch wersetów piosenki ABBA "Zwycięzca bierze wszystko":

The gods may throw a dice
Their minds as cold as ice
And someone way down here
Loses someone dear
The winner takes it all
The loser has to fall
It's simple and it's plain
Why should I complain?
The judges will decide
The likes of me abide
Spectators of the show
Always staying low
The game is on again
A lover or a friend
A big thing or a small
The winner takes it all

Ćwiczenie 7.11.2:

Jak można komunikować się z obcymi rasami? Czy istnieje jakiś wspólny układ odniesienia, z którym moglibyśmy się komunikować? Czy matematyka może na przykład zapewnić wspólną płaszczyznę ułatwiającą komunikację? Ale czy ludzka matematyka sama w sobie opiera się zbytnio na naszej ludzkiej, wcielonej egzystencji? Czy istnieje alternatywne podejście, w którym moglibyśmy zakodować "znaczenie" bezpośrednio w przesłaniu, które chcemy przekazać rasie obcych?

Ćwiczenie 7.11.3:

Przeanalizuj następujący fragment z autobiografii Billa Gatesa Moje życie: "Al Gore wygłosił wspaniałe przemówienie na temat koncesji. Był autentyczny, łaskawy i patriotyczny. Kiedy zadzwoniłem, aby mu pogratulować, powiedział mi, że przyjaciel, który był zawodowym komikiem, żartował, że zdobył najlepsze z obu światów: zdobył popularność i nie musiał wykonywać tej pracy. Następnego ranka, po tym, jak Tony Blair i ja rozmawialiśmy trochę, wyszedłem na zewnątrz, komplementowałem Al i obiecałem pracować z prezydentem elektem Bushem. Następnie Tony i Cherie towarzyszyli Hillary, Chelsea i mnie na University of Warwick, gdzie przekazałem kolejne moje pożegnalne przemówienia, ten dotyczący podejścia do globalizacji, którą objęła nasza grupa Trzeciej Drogi: handel plus globalny kontrakt na wzmocnienie pozycji ekonomicznej, edukacja , zdrowie troska i demokratyczne rządy. Przemówienie to dało mi również okazję do publicznego podziękowania Tony'emu Blairowi za jego przyjaźń i nasze partnerstwo. Ceniłem sobie nasze czasy i tęskniłem za nimi. Zanim opuściliśmy Anglię, pojechaliśmy do Pałacu B uckingham, przyjmując zaproszenie Królowej Elżbiety na herbatę. Mieliśmy przyjemną wizytę, omawiając wybory i sprawy światowe. Potem Jej Wysokość podjęła niezwykły krok towarzyszący nam na parterze pałacu i odprowadzając nas do samochodu, by się pożegnać. Ona też była dla mnie łaskawa i miła przez ostatnie osiem lat. "

Opisz, w jaki sposób ten fragment ujawnia niektóre myśli Billa Gatesa - to, co wie i nie wie; jego przekonania; jego upodobania lub antypatie; jego opinie; jego nadzieje i lęki; co on szanuje i wysoko szanuje; lub czego nie okazuje szacunku i pogardza; co popiera lub jest przeciwny; jego pragnienia / potrzeby / potrzeby; i jego intencje.


Powrót

  Wyszukiwanie 

8.1 Zachowanie wyszukiwania

Ćwiczenie 8.1.1:

Badania w literaturze, w jaki sposób definiowane są terminy "wyszukiwanie" i "badania". Obserwuj metody, których używasz do przeprowadzenia badań. Czy istnieją wyraźnie różne znaczenia tych pojęć, czy też wywodzą się one z tego samego ogólnego znaczenia?

8.2 Problemy z wyszukiwaniem

Ćwiczenie 8.2.1: Wyszukiwanie Maze Model NetLogo

Wypróbuj model wyszukiwania Maze w NetLogo: http://files.bookboon.com/ai/Searching-Mazes.html

CO TO JEST?

Model ten stosuje standardowe algorytmy wyszukiwania do problemu wyszukiwania labiryntów. W modelu są trzy labirynty: pusty labirynt bez ścian wewnętrznych; labirynt Hampton Court, który jest schematyczną ilustracją prawdziwego labiryntu ogrodowego w Hampton Court Palace w Wielkiej Brytanii; i labirynt Chevening House, który jest przedstawieniem prawdziwego labiryntu w Chevening House w Wielkiej Brytanii, zaprojektowanego, aby udaremnić metodę "dotarcia do ściany", dotarcia do centrum labiryntu. Wejście do pustego labiryntu at5 w dolnej połowie labiryntu, a celem jest dotrzeć do wyjścia na szczycie labiryntu. Wejście do labiryntu Hampton Court znajduje się w środkowym dole, a celem jest dotarcie do centrum. Podobnie wejście do labiryntu Chevening House znajduje się na środku dna, a celem jest dotarcie do centrum. Problem jest następujący: Jak osiągnąć cel od wejścia? Aby rozwiązać ten problem, należy przeprowadzić wyszukiwanie, aby wypróbować różne ścieżki, które są możliwe. Ten model implementuje niektóre z klasycznych algorytmów wyszukiwania i można je zastosować do tego problemu z zabawkami, aby zobaczyć, jak różne strategie wyszukiwania działają przeciwko sobie.

CZYM JEST CEL?

Celem tego modelu jest pokazanie, w jaki sposób można zaimplementować w NetLogo klasyczne algorytmy wyszukiwania, takie jak wyszukiwanie wszerz i wyszukiwanie w pierwszej kolejności, a także w jaki sposób można je zastosować do rozwiązania klasycznego problemu z zabawkami w celu porównania jak działają.

JAK TO DZIAŁA

Model implementuje algorytmy wyszukiwania w nowatorski sposób, wykorzystując podejście zorientowane na agentów, które jest stosunkowo łatwe do wdrożenia w NetLogo. Zamiast używać struktury danych kolejek do implementacji klasycznych algorytmów wyszukiwania, zamiast tego model przyjmuje czysto agencyjne rozwiązanie, w którym informacje są dystrybuowane wśród agentów NetLogo. Agenci przeprowadzają wyszukiwanie, przesyłając informacje do innych agentów, którzy kontynuują wyszukiwanie. Dlatego wyraźna struktura danych kolejek oddzielona od tego, co dzieje się w wyszukiwaniu, nie jest potrzebna (choć technicznie informacja jest nadal przechowywana w kolejce za kulisami, ale jej implementacja jest ukryta za poleceniami najwyższego poziomu, które NetLogo zapewnia ). Istnieje nadzieja, że to "pozbawione tożsamości" podejście zorientowane na agenta zapewnia bardziej intuicyjne rozwiązanie, które ułatwia uchwycenie sposobu działania strategii wyszukiwania. Wykorzystuje usytuowaną, ucieleśnioną perspektywę projektowania z perspektywy pierwszej osoby, a zatem prawdopodobnie ułatwia zrozumienie zasadniczych różnic między strategiami wyszukiwania. Rasa poszukiwaczy żółwi jest używana dla poszukiwaczy, którzy poruszają się po labiryncie, próbując dotrzeć do celu. Ci agenci wyszukujące przechowują informacje o bieżącym stanie wyszukiwania, takie jak czas wykonania, ścieżka i szacunkowe koszty. Każdy agent wyszukujący rozszerza wyszukiwanie w trzech kierunkach: do przodu; prawo 90 stopni, a potem do przodu; a lewe 90 stopni, a następnie do przodu. Zachowanie ruchu postępowego agentów wyszukujących w labiryncie jest kontrolowane przez dwa choosery -move-forward-behaviour i move-forward-behaviour=after-turning. Opcje tego typu zachowania do przodu używane przez oba te selektory są następujące:

- "Przejdź do przodu o kolejne kroki, chyba że uderzysz w ścianę": Agent przesuwa do przodu o kilka kroków określonych za pomocą suwaka przesuwania kroku.
- "Przejdź do przodu, aż trafisz w ścianę": Agent będzie poruszał się do przodu w nieskończoność, aż uderzy o ścianę.
- "Poruszaj się do przodu aż do dowolnej otwartej przestrzeni": Agent będzie poruszał się naprzód, dopóki nie znajdzie otwartej przestrzeni (tj. Dopóki nie pojawi się ściana lub jest otwarta przestrzeń po obu stronach).
- "Poruszaj się do przodu, aż do otwartej przestrzeni po ścianie bocznej": Agent będzie poruszał się do przodu, dopóki nie znajdzie otwartej przestrzeni (tj. Dopóki nie znajdzie się ściana lub jest otwarta przestrzeń po obu stronach, ale zatrzyma się tylko, jeśli wcześniej śledziłem ścianę po obu stronach)

JAK TEGO UŻYĆ

Aby zainicjować wyszukiwanie i narysować wybrany labirynt (określony przez image-being-searcher), naciśnij przycisk setup w Inerface . Agent żółwia o kształcie osoby będzie powoli chodzić w kierunku wejścia do labiryntu. Wtedy wejście zostanie zablokowane (aby uniemożliwić agentowi wyjście w tym kierunku). Aby rozpocząć wyszukiwanie, naciśnij przycisk go-once, aby wyszukiwanie było wykonywane krok po kroku naciśnij przycisk go-forever, aby wyszukiwanie było kontynuowane do momentu osiągnięcia stanu docelowego albo utknie.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- setup: Spowoduje to wyczyszczenie środowiska i wszystkich zmiennych oraz przerysowanie wybranego labiryntu (wybranego za pomocą suwaka wyszukiwanego przez labirynt).
- go-once: To sprawi, że wyszukiwanie będzie kontynuowane krok po kroku.
- go-forever: spowoduje to kontynuowanie postępów aż do osiągnięcia stanu docelowego lub utknie.
Selektory Interface, suwaki i przełącznik interfejsu są zdefiniowane w następujący sposób:

- maze-being-searching: To wybiera szukany labirynt. Dostępne są trzy: pusty labirynt, labirynt Hampton Court i labirynt Chevening House.
- search-behaviour: określa strategię wyszukiwania, którą agenci powinni stosować podczas wyszukiwania.
- heuristic : Określa heurystykę, która ma być używana w wyszukiwaniu Informed - Greedy Best First Search i A * Search.
- move-forward-behaviour: określa typ zachowania do przodu, które wykonuje agent wyszukujący. (Aby zapoznać się z objaśnieniami opcji, zobacz sekcję Jak to działa powyżej).
- move-forward-behaviour-after-turning: Określa typ zachowania do przodu, które agent wyszukujący wykonuje po obróceniu w prawo lub w lewo. (Aby zapoznać się z objaśnieniami opcji, zobacz sekcję Jak to działa powyżej).
- move-forward-step-amount: Jest to liczba kroków, które agent wykonuje, kiedy porusza się do przodu (albo bezpośrednio przed sobą w swoim bieżącym nagłówku, albo po skręcie w prawo lub w lewo).
- allow-revisited-states ?: To jest flaga, która jeśli jest ustawiona na On pozwoli przeszukanie przejść do już odwiedzonych stanów.
- left-cols, right-cols, above-rows, above-cols, entrance-cols: Te suwaki określają wysokość i szerokość pustego labiryntu oraz wielkość wejścia.
- col-patches-width, row-patches-width: Te suwaki określają wysokość i szerokość labiryntu Hampton Court i Chevening House.
- max-agent-to-expand: Ustawia maksymalną liczbę agentów, aby rozszerzyć wyszukiwanie w każdym kroku. Jest używany tylko przez pierwsze wyszukiwanie w programie Multi-Agent.
- max-depth: Ustawia maksymalną głębokość wyszukiwania dla wyszukiwania z ograniczeniem głębokości i tylko Wyszukiwanie po pogłębianiu iteracyjnym.

Monitory interfejsu modelu są zdefiniowane w następujący sposób:

- Active Searcher Agents: Pokazuje aktualną liczbę aktywnych agentów wyszukujących, którzy wciąż uczestniczą w wyszukiwaniu.
- Maximum Active Searcher Agents: Pokazuje maksymalną wartość, jaką monitor Active Searcher Agents osiągnął podczas wyszukiwania.
- Total Searcher Agents: Pokazuje całkowitą liczbę agentów wyszukujących używanych przez wyszukiwarkę.
- IDS Depth: Jest to aktualna głębokość podczas wykonywania iteracyjnego wyszukiwania pogłębionego.

RZECZY DO ODNOTOWANIA

Zwróć uwagę na efekt zmiany flag-allow-revisited-states? ON i OFF. Dlaczego wyłączenie go jest tak skuteczne, że znacznie ogranicza poszukiwanie różnych zachowań związanych z wyszukiwaniem? Zauważ, że niektóre wyszukiwania powtórzone z tymi samymi ustawieniami kończą się w różnych miejscach. Dlaczego to? Zauważ, że wiele zachowań powoduje, że agenci szukający żółwi zostają zablokowani. Kiedy to się dzieje i dlaczego?

RZECZY DO SPEŁNIENIA

Spróbuj spowolnić animację, zmieniając suwak prędkości u góry okna Information. Będziesz mógł zobaczyć, jak przebiega wyszukiwanie Jakie zachowania związane z wyszukiwaniem wydają się najlepsze w tym problemie? Który wydaje się najgorszy? Wypróbuj różne zachowania związane z wyszukiwaniem, aby zobaczyć, który z nich jest najbardziej skuteczny. Dowiedz się, jak dobrze działa każdy algorytm wyszukiwania w odniesieniu do czterech kryteriów oceny - złożoności czasowej, złożoności przestrzeni, optymalności i złożoności. Odnieść teorię do tego, co dzieje się w praktyce. Spróbuj przełączać wyszukiwanie w połowie strumienia. Różnica w zachowaniach jest najbardziej widoczna w pustym labiryncie. Na przykład spróbuj przełączyć się z pierwszego wyszukiwania do pierwszego wyszukiwania w głąb, a następnie z powrotem (po ustawieniu move-forvard-behaviour i move-forvard-after-turning po włączeniu funkcji wybierania zachowania na "Przenieś do przodu o kolejne kroki, chyba że uderzysz w ścianę "I ustaw suwak move-forvard-step-amount). Spróbuj przesuwać suwak move-forward-step-anoubt w przód i w tył , gdy wyszukiwanie będzie kontynuowane, jeśli ustawisz zachowanie "postępuj naprzód" i "postępuj po nawrocie", aby były "Przenieś do przodu o kolejne kroki, chyba że trafienie Ściana". Wypróbuj różne heurystyki dla świadomych wyszukiwań (Greedy Best First Search i A * Search). Czy mają one wpływ na efektywność wyszukiwania? Wypróbuj wszystkie kombinacje ustawień zachowania w ruchu i zmiany kolejności w ruchu po ruchu zwrotnym, a także ustawienie suwaka liczby kroków do przodu. Powoduje to ogromną różnorodność zachowań dla poszukujących agentów żółwia. Spróbuj zmienić parametry każdego labiryntu, zmieniając ustawienia suwaków po prawej stronie. Wypróbuj wszystkie różne kombinacje ustawień wybierania move-forward-behaviour,move-forward-after-turning-behaviour i move-forward-step-amount. Powoduje to ogromną różnorodność zachowań dla poszukujących agentów żółwia. Spróbuj zmienić parametry każdego labiryntu, zmieniając ustawienia suwaków po prawej stronie.

ROZSZERZENIE MODELU

Spróbuj dodać inne algorytmy wyszukiwania lub dodaj własne odmiany do tych zaimplementowanych w modelu. Spróbuj dodać własny labirynt, być może z labiryntu ogrodowego lub innego labiryntu, który istnieje w prawdziwym życiu. Jeśli twój labirynt ma rzeczywisty odpowiednik, zauważ różnice, które musisz wprowadzić w wirtualnym przedstawieniu, gdzie nie dokładnie odpowiadają temu, co dzieje się w prawdziwym labiryncie.

CECHY NETLOGO

Zwróć uwagę na użycie komendy kreskowania i matrycy do klonowania przeszukiwaczy podrzędnych i zakończenia wyszukiwania rodzica, co pozwala uniknąć oddzielnej struktury danych kolejki, aby zachować informacje podczas wyszukiwania. Zwróć także uwagę na odmianę polecenia ask, która określa używaną strategię, która definiuje różne wyszukiwania.

POWIĄZANE MODELE

Aby znaleźć inne problemy z wyszukiwaniem, zobacz model wyszukiwania Kevina Bacona i model wyszukiwania Maze. Aby uzyskać wgląd w odległość na Manhattanie i metryki odległości Euklidesa używane jako heurystyki do wyszukiwania Informed, patrz model odległości Manhattan.

Ćwiczenie 8.2.2: Modele misjonarzy i kanibali NetLogo

Wypróbuj model Misjonarzy i Kanibali w NetLogo:
http://files.bookboon.com/ai/Missionaries-and-Cannibals.html

CO TO JEST?

Model ten stosuje standardowe algorytmy wyszukiwania do klasycznego problemu wyszukiwania zwanego misjonarzami i kanibalami. W tym problemie z zabawkami jest 3 misjonarzy i 3 kanibali. Przybyli razem po jednej stronie rzeki i wszyscy chcą przejść na drugą stronę. Na szczęście dostępna jest łódź do przeprawy przez rzekę. Istnieją jednak dwa problemy z tym problemem. Pierwszy połów polega na tym, że tylko dwie osoby mogą zmieścić się w łodzi w tym samym czasie. Drugi połów polega na tym, że kanibale nie mogą przekroczyć liczby misjonarzy na żadnym etapie. Jeśli to zrobią, pokonają misjonarzy, a potem je zjedzą. Problem jest następujący: czy można bezpiecznie zabrać wszystkich misjonarzy i kanibali na drugą stronę rzeki? Aby rozwiązać ten problem, należy przeprowadzić wyszukiwanie w celu wypróbowania różnych scenariuszy. Ten model implementuje niektóre z klasycznych algorytmów wyszukiwania i można do nich zastosować problem z zabawkami, aby zobaczyć, jak różne strategie wyszukiwania działają przeciwko sobie.

CZYM JEST CEL?

Celem tego modelu jest pokazanie, w jaki sposób można zaimplementować w NetLogo klasyczne algorytmy wyszukiwania, takie jak wyszukiwanie wszerz i wyszukiwanie w pierwszej kolejności, a także w jaki sposób można je zastosować do rozwiązania klasycznego problemu z zabawkami w celu porównania jak działają.

JAK TO DZIAŁA

Model implementuje algorytmy wyszukiwania w nowatorski sposób, wykorzystując podejście zorientowane na agentów, które jest stosunkowo łatwe do wdrożenia w NetLogo. Zamiast używać struktury danych kolejek do implementacji klasycznych algorytmów wyszukiwania (jest to standardowe rozwiązanie, zobacz na przykład podręcznik AI Russella & Norviga), model zamiast tego przyjmuje czysto agencyjne rozwiązanie, w którym informacje są dystrybuowane wśród agentów NetLogo . Agenci przeprowadzają wyszukiwanie, przesyłając informacje do innych agentów, którzy kontynuują wyszukiwanie. Dlatego wyraźna struktura danych kolejek oddzielona od tego, co dzieje się w wyszukiwaniu, nie jest potrzebna (choć technicznie informacja jest nadal przechowywana w kolejce za kulisami, ale jej implementacja jest ukryta za poleceniami najwyższego poziomu, które NetLogo zapewnia ). Istnieje nadzieja, że to "pozbawione tożsamości" podejście zorientowane na agenta zapewnia bardziej intuicyjne rozwiązanie, które ułatwia uchwycenie sposobu działania strategii wyszukiwania. Wykorzystuje usytuowaną, ucieleśnioną perspektywę projektowania z perspektywy pierwszej osoby, a zatem prawdopodobnie ułatwia zrozumienie zasadniczych różnic między strategiami wyszukiwania. Typ poszukiwaczy żółwi jest używany dla poszukiwaczy, którzy poruszają się po labiryncie, próbując dotrzeć do celu. Te agenty wyszukujące przechowują informacje o bieżącym stanie wyszukiwania, takie jak czas wykonania, ścieżka i szacunkowe koszty. Każdy agent wyszukiwania rozszerza wyszukiwanie, sprawdzając, czy możliwe są następujące działania:

- dwóch misjonarzy wsiada do łodzi wiosłowej i wiosłuje na drugą stronę;
- dwóch kanibali wsiada do łodzi wiosłowej i wiosłuje na drugą stronę;
- jeden misjonarz i jeden kanibal wchodzą do łodzi wiosłowej i przechodzą na drugą stronę;
- tylko jeden misjonarz wsiada do łodzi wiosłowej i wiosłuje na drugą stronę;
- tylko jeden kanibal wchodzi do łodzi wiosłowej i wiosłuje na drugą stronę.
Zwróć uwagę, że stany wyszukiwania tego problemu mogą być reprezentowane przez 3-krotne: (#missionaries na startowej stronie rzeki, #cannibals na początkowej stronie rzeki, #boats na początkowej stronie rzeki) . Stąd stan początkowy jest reprezentowany przez krotkę (3, 3, 1) i stan celu przez (0, 0, 0). W Interface do wizualizacji wyszukiwania jest wykorzystywany wykres z równoległymi współrzędnymi. Animacja jednego możliwego rozwiązania problemu znajduje się również pod wykresem. Wykres jest aktualizowany w miarę postępu animowanego rozwiązania.

JAK TEGO UŻYĆ

Aby zainicjować wyszukiwanie, naciśnij przycisk setup w Interface. Kształt osoby pojawi się w stanie początkowym (3, 3, 1) w lewym górnym rogu wykresu. Stan celu znajduje się u dołu wykresu, więc przybliżoną oceną tego, czy wyszukiwanie dokonuje postępu, jest to, jak daleko posunął się on w dół. Aby rozpocząć wyszukiwanie, naciśnij przycisk "go-once", aby wyszukiwanie było wykonywane krok po kroku, lub naciśnij przycisk "go-forever", aby wyszukiwanie było kontynuowane do momentu osiągnięcia stanu docelowego lub spełnienia innych kryteriów zakończenia (np. dochodzi do prawej strony wykresu bez znalezienia rozwiązania). Naciśnięcie przycisku go-animation spowoduje rozpoczęcie animacji i wyświetlenie ścieżki pobranej w tym samym czasie na wykresie. Jest to pokazane za pomocą czerwonego koloru.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- setup: wyczyści środowisko i wszystkie zmienne, zresetuje animację i przerysuje wykres.
- go-once: To sprawi, że wyszukiwanie będzie kontynuowane krok po kroku.
- go-forever: spowoduje to, że wyszukiwanie będzie kontynuowane aż do momentu osiągnięcia stanu docelowego lub zostanie uznane za nieskuteczne.
- go-animation: Uruchomi animację wyświetlaną na środkowym dole Interface.

Selektory interfejsu, suwaki i przełącznik interfejsu są zdefiniowane w następujący sposób:

- search-behaviour: określa strategię wyszukiwania, którą agenci powinni stosować podczas wyszukiwania. - heuristic: Określa heurystykę, która ma być używana w wyszukiwaniu Informed - Greedy Best First Search i A * Search.
- max-depth: Ustawia maksymalną głębokość wyszukiwania.
- max-agent-to-expand: Ustawia maksymalną liczbę agentów, aby rozszerzyć wyszukiwanie w każdym kroku. Jest używany tylko przez pierwsze wyszukiwanie w programie Multi-Agent.
- allow-revisited-states ?: To jest flaga, która jeśli jest ustawiona na On pozwoli przeszukanie przejść do już odwiedzonych stanów.

Monitory interfejsu modelu są zdefiniowane w następujący sposób:

- Active Searcher Agents: Pokazuje aktualną liczbę aktywnych agentów wyszukujących, którzy wciąż uczestniczą w wyszukiwaniu.
- Maximum Active Searcher Agents: Pokazuje maksymalną wartość, jaką monitor Active Searcher Agents osiągnął podczas wyszukiwania.
- Total Searcher Agents: Pokazuje całkowitą liczbę agentów wyszukujących używanych przez wyszukiwarkę.
- IDS Depth: Jest to aktualna głębokość podczas wykonywania iteracyjnego wyszukiwania pogłębionego.
RZECZY DO ODNOTOWANIA

Zwróć uwagę na efekt zmiany flag-allow-revisited-states? On i Off. Dlaczego Off jest tak skuteczne, że znacznie ogranicza poszukiwanie różnych zachowań związanych z wyszukiwaniem? Zauważ, że niektóre wyszukiwania powtórzone z tymi samymi ustawieniami kończą się w różnych miejscach (na przykład spróbuj Greedy Best First Search kilka razy używając heurystycznego "Min. No boat trips needed" i z flagą allow-revisited-states? ustaw na Off). Dlaczego to?

RZECZY DO SPEŁNIENIA

Jakie zachowania związane z wyszukiwaniem wydają się najlepsze w tym problemie? Który wydaje się najgorszy? Wypróbuj różne zachowania związane z wyszukiwaniem, aby zobaczyć, który z nich jest najbardziej skuteczny. Dowiedz się, jak dobrze działa każdy algorytm wyszukiwania w odniesieniu do czterech kryteriów oceny - złożoności czasowej, złożoności przestrzeni, optymalności i złożoności. Odnieść teorię do tego, co dzieje się w praktyce. Spróbuj dowiedzieć się, ile jest rozwiązań problemu (ten pokazany w animacji nie jest jedynym). Wypróbuj różne heurystyki dla świadomych wyszukiwań (Greedy Best First Search i A * Search). Czy mają jakiś wpływ na skuteczność wyszukiwania?

ROZSZERZENIE MODELU

Spróbuj dodać inne algorytmy wyszukiwania lub dodaj własne odmiany do tych zaimplementowanych w modelu

CECHY NETLOGO

Zwróć uwagę na użycie komendy kreskowania i matrycy do klonowania przeszukiwaczy podrzędnych i zakończenia wyszukiwania rodzica, co pozwala uniknąć oddzielnej struktury danych kolejki, aby zachować informacje podczas wyszukiwania. Zwróć także uwagę na odmianę polecenia ask, która określa używaną strategię, która definiuje różne wyszukiwania.

POWIĄZANE MODELE

Aby znaleźć inne problemy z wyszukiwaniem, zobacz model wyszukiwania Kevina Bacona i model wyszukiwania Maze. Aby uzyskać wgląd w odległość na Manhattanie i metryki odległości Euklidesa używane jako heurystyki do wyszukiwania Informed, patrz model odległości Manhattan.

Ćwiczenie 8.2.3: Wyszukiwanie modelu Kevin Bacon NetLogo

Wypróbuj model wyszukiwania Kevin Bacon w NetLog

http://files.bookboon.com/ai/Searching-for-Kevin-Bacon.html

CO TO JEST?

Model ten stosuje standardowe algorytmy wyszukiwania do problemu wyszukiwania określonego węzła celu w sieci. Problem polega na tym, że nie wiesz, gdzie znajduje się węzeł ani jak konfiguruje się sieć. Aby rozwiązać ten problem, należy przeprowadzić wyszukiwanie, aby wypróbować różne ścieżki, które mogą prowadzić do węzła celu. Ten model implementuje niektóre z klasycznych algorytmów wyszukiwania i można je zastosować do tego problemu z zabawkami, aby zobaczyć, jak różne strategie wyszukiwania działają przeciwko sobie.

JAKI JEST CEL?

Celem tego modelu jest pokazanie, w jaki sposób można zaimplementować w NetLogo klasyczne algorytmy wyszukiwania, takie jak pierwsze wyszukiwanie i pierwsze wyszukiwanie głębi, a także to, w jaki sposób można je zastosować do rozwiązania problemu, aby porównać jego sposób wykonania

JAK TO DZIAŁA

Model implementuje algorytmy wyszukiwania w nowatorski sposób, wykorzystując podejście zorientowane na agentów, które jest stosunkowo łatwe do wdrożenia w NetLogo. Zamiast używać struktury danych kolejek do implementacji klasycznych algorytmów wyszukiwania, zamiast tego model przyjmuje czysto agencyjne rozwiązanie, w którym informacje są dystrybuowane wśród agentów NetLogo. Agenci przeprowadzają wyszukiwanie, przesyłając informacje do innych agentów, którzy kontynuują wyszukiwanie. W związku z tym wyraźna struktura danych kolejki oddzielona od tego, co dzieje się w wyszukiwaniu, nie jest potrzebne (choć technicznie informacje są nadal przechowywane w kolejce za kulisami, ale implementacja tego jest ukryta za poleceniami najwyższego poziomu, które zapewnia NetLogo). Istnieje nadzieja, że to "pozbawione tożsamości" podejście zorientowane na agenta zapewnia bardziej intuicyjne rozwiązanie, które ułatwia uchwycenie sposobu działania strategii wyszukiwania. Wykorzystuje usytuowaną, ucieleśnioną perspektywę projektowania z perspektywy pierwszej osoby, a zatem prawdopodobnie ułatwia zrozumienie zasadniczych różnic między strategiami wyszukiwania. Rasa agentów wyszukiwania żółwi jest używana dla osób wyszukujących, które poruszają się po sieci, próbując dotrzeć do celu. Te agenty wyszukujące przechowują informacje o bieżącym stanie wyszukiwania, takie jak czas wykonania, ścieżka i szacunkowe koszty. Każdy agent wyszukujący rozszerza wyszukiwanie, wykonując wszystkie ścieżki wychodzące, które prowadzą poza bieżący węzeł.

JAK TEGO UŻYĆ

Aby zainicjować wyszukiwanie i utworzyć losową sieć (której typ jest określony przez selektor network-type), naciśnij przycisk setup-network w Interface . Aby skonfigurować agenta wyszukującego do wyszukiwania w sieci, najpierw naciśnij przycisk reset-searchers, a następnie naciśnij przycisk setup-searcher. Agent żółwia o kształcie osoby zostanie narysowany w węźle określonym w polu wprowadzania start-node. Aby rozpocząć wyszukiwanie, naciśnij jeden raz przycisk "go-searchers", aby wyszukiwanie przebiegało krok po kroku, lub naciśnij przycisk "go-searchers", aby wyszukiwanie było kontynuowane do momentu, aż dotrze do węzła celu lub utknie.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- setup-network: Spowoduje to wyczyszczenie środowiska i wszystkich zmiennych oraz utworzenie losowej sieci, której typ jest określony przez selektor network-type. Jego układ jest określony przez selektor layout-type. Cztery suwaki: no-of-nodes, no-of-super-nodes, links-per-node i links-per-super-node kontrolują liczbę węzłów i super-węzłów oraz liczbę łączy między nimi.
- change-layout: jeśli układ jest typu spring, może to pomóc w usunięciu bałaganu.
- reset-searchers: To zabija wszystkich istniejących wyszukiwarek i tworzy nowy, określony przez pole wejściowe numeru początkowego, aby ponownie uruchomić wyszukiwanie.
- setup-searcher: uruchamia nowy program wyszukujący określony w polu wejściowym start-nodenumber (można go użyć do utworzenia wielu wyszukiwaczy na początku wyszukiwania).
- go-searchers-once: spowoduje to, że wyszukiwanie będzie wykonywane krok po kroku.
- go-searchers-forever: To sprawi, że wyszukiwanie będzie kontynuowane, dopóki nie dotrze do węzła celu lub utknie.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- setup-network: Spowoduje to wyczyszczenie środowiska i wszystkich zmiennych oraz utworzenie losowej sieci, której typ jest określony przez selektor network-type. Jego układ jest określony przez selektor layotu-type Cztery suwaki: no-of-nodes, no-of-super-nodes, links-per-node i links-per-super-node control kontrolują liczbę węzłów i super-węzłów oraz liczbę łączy między nimi.
- change-layout: jeśli układ jest typu spring, może to pomóc w usunięciu bałaganu.
- reset-searchers: To zabija wszystkich istniejących wyszukiwarek i tworzy nowy, określony przez pole wejściowe numeru początkowego, aby ponownie uruchomić wyszukiwanie.
- setup-searcher: uruchamia nowy program wyszukujący określony w polu Input-node-number (można go użyć do utworzenia wielu wyszukiwaczy na początku wyszukiwania).
- go-searchers-once: spowoduje to, że wyszukiwanie będzie wykonywane krok po kroku.
- go-searchers-forever: To sprawi, że wyszukiwanie będzie kontynuowane, dopóki nie dotrze do węzła celu lub utknie.
Selektory interfejsu, suwaki, przełącznik i pole wyboru modelu są zdefiniowane w następujący sposób:

- network-type: Określa typ sieci tworzonej po naciśnięciu przycisku setup-network. Rodzaje sieci są następujące:

"P2P-no-super-nodes": Symuluje sieć typu peer-to-peer bez super-węzłów.
"P2P-has-super-nodes": Symuluje sieć peer-to-peer z super-węzłami.
"P2P-random-single-link": Symuluje sieć typu peer-to-peer, w której każdy węzeł ma tylko jedno łącze z innym węzłem losowym.
"P2P-incremental": Tworzy symulowaną sieć peer-to-peer, stopniowo budując łącza do innych losowych węzłów po jednym na raz.
"P2P-incremental-1": Tworzy symulowaną sieć peer-to-peer, stopniowo budując łącza do innych losowych węzłów.
"Star-central-hub": Tworzy sieć z jednym węzłem (węzeł Bacon Bacon, tj. Węzeł celu) jako centralnym koncentratorem i wszystkimi innymi węzłami połączonymi z nim, a nie z żadnym innym węzłem.
"Hierarchiczny": Tworzy sieć drzewiastą z węzłem celu Kevina Bacona w katalogu głównym.

- typ-układu: Określa sposób ułożenia sieci podczas wizualizacji.
- no-of-nodes: Jest to liczba węzłów do umieszczenia w sieci.
- no-of-super-nodes: Jest to liczba super-węzłów do umieszczenia w sieci. (Są to węzły, które zwykle będą miały znacznie więcej łączy niż standardowe węzły określone przez suwak link-per-super-node).
- links-per-node: Określa maksymalną liczbę łączy, które będą mieć węzły standardowe. Rzeczywista liczba wybrana dla danego węzła będzie liczbą losową od 1 do tej liczby.
- links-per-super node: Określa maksymalną liczbę łączy, które ma węzeł super-węzeł. Rzeczywista liczba wybrana dla danego super-węzła będzie liczbą losową od 1 do tej liczby.
- search-behaviour: określa strategię wyszukiwania, którą agenci powinni stosować podczas wyszukiwania.
- start-node-number: jest to węzeł, w którym agent wyszukiwarki jest umieszczony po rozpoczęciu wyszukiwania. Określenie 0 oznacza, że agent wyszukujący zostanie umieszczony losowo w sieci.
- heuristic: Określa heurystykę, która ma być używana w wyszukiwaniu Informed - Greedy Best First Search i A * Search.
- max-agent-to-expand: Ustawia maksymalną liczbę agentów, aby rozszerzyć wyszukiwanie w każdym kroku. Jest używany tylko przez pierwsze wyszukiwanie w programie Multi-Agent.
- allow-revisited-states ?: To jest flaga, która jeśli jest ustawiona na On pozwoli przeszukanie przejść do już odwiedzonych stanów.
- max-depth: Ustawia maksymalną głębokość wyszukiwania, tylko dla wyszukiwania z ograniczeniem głębokości i dla wyszukiwania z Iteracyjnym pogłębieniem
Monitory modelu Interface są zdefiniowane w następujący sposób:

- Active Searcher Agents: Pokazuje aktualną liczbę aktywnych agentów wyszukujących, którzy wciąż uczestniczą w wyszukiwaniu.
- Maximum Active Searcher Agents: Pokazuje maksymalną wartość, jaką monitor Active Searcher Agents osiągnął podczas wyszukiwania.
- Total Searcher Agents: Pokazuje całkowitą liczbę agentów wyszukujących używanych przez wyszukiwarkę.
- IDS Depth: Jest to aktualna głębokość podczas wykonywania iteracyjnego wyszukiwania pogłębionego.

RZECZY DO ODNOTOWANIA

Zwróć uwagę na efekt zmiany flag-allow-revisited-states? On i Off. Dlaczego Off jest tak skuteczne, że znacznie ogranicza poszukiwanie różnych zachowań związanych z wyszukiwaniem? Zauważ, że niektóre wyszukiwania powtórzone z tymi samymi ustawieniami kończą się w różnych miejscach. Dlaczego to? Zauważ, że wiele zachowań powoduje, że agenci szukający żółwi zostają zablokowani. Kiedy to się dzieje i dlaczego?

RZECZY DO SPEŁNIENIA

Jakie zachowania związane z wyszukiwaniem wydają się najlepsze w tym problemie? Który wydaje się najgorszy? Wypróbuj różne zachowania związane z wyszukiwaniem, aby zobaczyć, który z nich jest najbardziej skuteczny. Dowiedz się, jak dobrze działa każdy algorytm wyszukiwania w odniesieniu do czterech kryteriów oceny - złożoności czasowej, złożoności przestrzeni, optymalności i złożoności. Odnieść teorię do tego, co dzieje się w praktyce. Wypróbuj wszystkie typy sieci z różnymi ustawieniami suwaka. Jakie rodzaje sieci powodują problemy dla różnych wyszukiwań, a które nie? tj. które wydają się trudniejsze do wyszukania? Spróbuj przełączać wyszukiwanie w połowie strumienia. Na przykład spróbuj przełączyć się z pierwszego wyszukiwania na pierwsze wyszukiwanie w głąb, a następnie z powrotem. Wypróbuj różne heurystyki dla świadomych wyszukiwań (Greedy Best First Search i A * Search). Czy mają jakiś wpływ na skuteczność wyszukiwania?

ROZSZERZENIE MODELU

Spróbuj dodać inne algorytmy wyszukiwania lub dodaj własne odmiany do tych zaimplementowanych w modelu. Spróbuj dodać własny typ sieci, losowo utworzonej lub z korespondencją do sieci w realnym życiu. Będziesz musiał dodać procedury wejściowe, aby utworzyć układ sieci dla tego ostatniego.

CECHY NETLOGO

Zwróć uwagę na użycie komendy hatch i die do klonowania przeszukiwaczy podrzędnych i zakończenia wyszukiwania rodzica, co pozwala uniknąć oddzielnej struktury danych kolejki, aby zachować informacje podczas wyszukiwania. Zwróć także uwagę na odmianę polecenia ask, która określa używaną strategię, która definiuje różne wyszukiwania.

POWIĄZANE MODELE

W przypadku innych problemów z wyszukiwaniem zobacz model Being Kevin Bacon, model Missionaries and Cannibals oraz model Searching Mazes.

Ćwiczenie 8.2.4: Wyszukiwanie modelu Kevin Bacon 2 NetLogo

Wypróbuj model wyszukiwania Kevina Bacona 2 w NetLogo:

http://files.bookboon.com/ai/Searching-for-Kevin-Bacon-2.html

Information dla tego modelu są takie same, jak w przypadku modelu Information for Kevin Bacon, wyszczególnionego w części 8.2.3, z wyjątkiem co następuje

CO TO JEST?

Ten model NetLogo jest rozszerzeniem modelu wyszukiwania Kevina Bacona, który ma wyjście, które zawiera opis problemu z wyszukiwaniem w języku angielskim i dostarcza śladu na temat sposobu wyszukiwania. Określone sieci można również zapisać do pliku i wczytać do aplikacji. Podobnie jak w przypadku modelu wyszukiwania Kevina Bacona, model ten stosuje standardowe algorytmy wyszukiwania do poszukiwania określonego węzła celu w sieci.

JAK TEGO UŻYĆ

Aby zainicjować wyszukiwanie i utworzyć sieć losową (której typ jest określony przez network-type selektor), naciśnij przycisk setup-network w Interface. Aby utworzyć własną sieć, ustaw opcję selektor network-type do "Określonego przez użytkownika". Jeśli specify-coordinates? wartość suwaka jest ustawiona na Off, następnie użytkownik może kliknąć myszką na punkty w otoczeniu, w którym się znajdują chcesz zlokalizować węzły sieci. (Pierwszy kliknięty punkt zostanie oznaczony jako węzeł celu, tj. Kevin Bacon węzeł). Jeśli suwak jest ustawiony na On, wówczas użytkownik zostanie poproszony o podanie współrzędnych x i y węzła Dla każdego z węzłów w sieci użytkownik zostanie zapytany, ile łączy istnieje. z węzła i które węzły do niego linkują. Aby zapisać sieć w pliku, naciśnij przyciskSave Network to File. Aby załadować ponownie na listę danych, datę listu, naciśnij przycisk Load Network from a File. Aby wygenerować opis problemu (które mogą być wykorzystane na przykład do egzaminu lub pytania testowego), a następnie naciśnij przycisk Generate Problem Description. Spowoduje to zapisanie opisu w polu Output pokazanym w środkowym prawym rogu u dołu Interface. Aby dodać kolejne węzły do sieci, naciśnij przycisk Add to Network.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- Generate Problem Description: Spowoduje to wygenerowanie opisu problemu wyszukiwania w języku angielskim i zapisanie go w polu Wyjście. Opis problemu oparty jest na wartościach selektorów i suwaków w interfejsie. Może być używany do ustawiania pytań egzaminacyjnych lub testowych, lub ustawić ćwiczenie dla zadania jako pracę na kursie.
- Add to Network: Umożliwi to użytkownikowi dodawanie węzłów do sieci, w tym sieci, które zostały wygenerowane losowo.
- Load Network from a File: Spowoduje to załadowanie układu sieciowego, który został wcześniej zapisany w pliku na dysku.
- Save Network to a File: Zapisuje układ sieciowy do pliku na dysku. Można go załadować w późniejszym terminie, używając przycisku Załaduj sieć z pliku.
Suwaki interfejsu modelu są zdefiniowane w następujący sposób:

- link-thickness: Ustawia grubość łączy, które są rysowane między węzłami w sieci.
- spring-constant, spring-length, repulsion-constan: Suwaki te są używane przez algorytm zmiany układu, gdy suwak typu układu jest ustawiony na sprężynę i można go wykorzystać do sterowania wyglądem sieci. Na przykład, ustawienie długości sprężyny na 0, a następnie jej zwiększenie, często spowoduje uporządkowanie układu sieci.

Przełączniki modelu Interface są zdefiniowane w następujący sposób:

- specify-coordinates?: Jeśli ten przełącznik jest ustawiony na On, gdy suwak typu sieci jest ustawiony na Określony przez użytkownika, to użytkownik musi określić dokładne współrzędne każdego węzła, zamiast używać myszy do wskazywania i klikania na miejscu.
- output-trace ?: Jeśli ten przełącznik jest ustawiony na On, wówczas ślad wyszukiwania jest zapisywany w polu Output (znajduje się w środkowym prawym rogu u dołu interfejsu).

RZECZY DO SPEŁNIENIA

Postaraj się śledzić, w jaki sposób wyszukiwanie informacji, Greedy Best First i A *, przeszukuje różne sieci. Śledzić wyszukiwania w trakcie ich wykonywania, obracając ślad wyjściowy? przełącz na On. Sprawdź, jak koszt trasy i szacowany koszt są obliczane na każdym etapie wyszukiwania. Wypróbuj różne heurystyki. Czy mają jakiś wpływ na skuteczność wyszukiwania?

POWIĄZANE MODELE

W przypadku innych problemów związanych z wyszukiwaniem zobacz model Being Kevin Bacon, model Missionaries and Cannibals, wyszukiwanie modelu Kevin Bacon i modelu Searching Mazes. Aby uzyskać wgląd w odległość na Manhattanie i metryki odległości Euklidesa używane jako heurystyki do wyszukiwania Informed, patrz model odległości Manhattan.

8.3 Niedoinformowane (niewidome) wyszukiwanie

Ćwiczenie 8.3.1:

Pokaż, jak algorytmy pierwszego wyszukiwania i głębokości pierwszego wyszukiwania przeszukują sieć pokazaną poniżej. Pokaż listę aktywnych agentów wyszukujących wraz z odwiedzanymi węzłami. Węzłem początkowym jest węzeł n1, a węzeł gwiazdy jest węzłem celu (tj. Węzłem n0). Rozwiń węzły w kolejności ich numerów węzłów. Na przykład: rozwiń węzeł n1 przed każdym innym węzłem; rozwiń węzeł n2 przed każdym innym węzłem za wyjątkiem węzła n1; i tak dalej. Ponadto, zezwól na ponowne przeglądanie węzłów. Powtórz to ćwiczenie dla następujących niedoinformowanych algorytmów wyszukiwania:

• Uniform Cost Search;
• Multi-agent Depth First Search;
• Depth Limited Search;
•o Iterative Deepening Search.

8.4 Wdrażanie wyszukiwania niedoinformowanego w NetLogo

Ćwiczenie 8.4.1:

Porównaj sposób definiowania procedur expand-path i expand-paths dla trzech różnych modeli - modelu Searching Mazes, modelu Missionaries and Cannibals oraz modelu Searching of Kevina Bacona. W jaki sposób różnice w sposobie ich definiowania odzwierciedlają naturę problemu z wyszukiwaniem? W jaki sposób odzwierciedlają one sposób, w jaki występują różne ścieżki prowadzące do różnych rezultatów? Czy jest jakiś sposób, aby procedury te stały się bardziej ogólne i mniej specyficzne dla problemu?

8.5 Wyszukiwanie jako wybór zachowania

Ćwiczenie 8.5.1:

Obserwuj sytuacje, w których wyszukiwanie jest wykorzystywane przez człowieka lub zwierzę, w tym Ciebie. Czy uważasz, że te wyszukiwania najlepiej scharakteryzować jako wybór pomiędzy alternatywnymi sekwencjami działań lub jako wybór między alternatywnymi sekwencjami zachowań? A może inna charakterystyka jest bardziej odpowiednia? Obserwuj proces, który zatrudniasz podczas podejmowania tej decyzji.

Ćwiczenie 8.5.2:

W modelu Searching Mazes, w celu zilustrowania behawioralnego podejścia do charakteryzowania procesu wyszukiwania, agenci otrzymali możliwość wykonywania trzech różnych zachowań reaktywnych - (i) posuwa się naprzód, (ii) skręcając w lewo, a następnie w przód i (iii) skręcając w prawo, a następnie w przód. Agenci mogą również wykonywać różne typy zachowań w ruchu do przodu. Są one kontrolowane przez dwóch selektorów w interfejsie: [1] move-forward-behaviour; i [2] move-forward-behaviour-after-turning. Pierwszy określa ruch do przodu dla zachowania reaktywnego (i), a drugi określa ruch do przodu dla zachowań reaktywnych (ii) i (iii). Rodzaje ruchu do przodu są następujące: (a) "Przejdź do przodu o kolejne kroki, chyba że uderzysz w ścianę", gdzie agent porusza się o kolejne n kroków, a n to liczba określona przez zmienną Interface move-forward-step-amount; (b) "Poruszaj się do przodu, aż trafisz ścianę", gdzie agent będzie kontynuował ruch do przodu, aż uderzy o ścianę; (c) "Posuwaj się naprzód, aż do dowolnej otwartej przestrzeni", gdzie agent będzie poruszał się naprzód, dopóki nie znajdzie się ściana na drodze lub po obu jej stronach jest otwarta przestrzeń; i (d) "Posuwaj się naprzód do otwartej przestrzeni za ścianą boczną", gdzie agent będzie poruszał się do przodu, dopóki nie znajdzie się ściana lub jest otwarta przestrzeń po ścianie bocznej. Pomimo możliwości wykonywania trzech podstawowych zachowań reaktywnych, agenci szukający labiryntu mogą w rezultacie wywołać zaskakującą różnorodność ruchów. Odwołując się do cyfr i liter w poprzednim akapicie, aby opisać cztery konfiguracje: w lewym górnym rogu, agenci stosują zachowania [1] (a) i [2] (a), obie za pomocą kroku 10; w prawym górnym rogu zachowania są [1] (a), z krokiem 1 i [2] (b); w lewym dolnym obrazie zachowanie to [1] (a), z krokiem 10 i [2] (c); aw prawym dolnym obrazie zachowaniem są [1] (c) i [2] (a), z krokiem 10. Na przykład efekt siatki w lewym górnym rogu jest spowodowany przez powtarzające się 10 kroków przechodzenie agentów w trzech kierunkach - do przodu, w lewo i w prawo. Sposób, w jaki siatka jest budowana, najlepiej widać po ciągłym naciskaniu przycisku jednorazowego użycia w interfejsie na początku każdego wyszukiwania. W tym ćwiczeniu spróbuj odtworzyć zachowanie ruchu żółwia w pustym labiryncie, jak pokazano w



. Następnie spróbuj tworzyć własne wzory, zmieniając wartości wybranych i suwaków

8.6 Poszukiwanie informacji

Ćwiczenie 8.6.1: Model odległości na Manhattanie

Wypróbuj model odległości na Manhattanie w NetLogo:

http://files.bookboon.com/ai/Manhattan-Distance.html

CO TO JEST?

Ten model pokazuje, jak obliczana jest odległość na Manhattanie. Jest to porównywane z odległością euklidesową w modelu.

JAKI JEST CEL?

Celem tego modelu jest podkreślenie za pomocą podstawowych technik animacji podstawowych różnic w dwóch różnych obliczeniach odległości.

JAK TO DZIAŁA

Do wyznaczania punktów początkowych i końcowych używane są dwaj agenci point . Do przejścia między tymi dwoma punktami służy agent walker. Odbywa się to albo w linii prostej, aby zilustrować, na czym opiera się metryka odległości euklidesowej. Lub w przypadku metryki odległości na Manhattanie, odbywa się to poprzez dowolne ścieżki, które unikają przejścia do drapaczy chmur na Manhattanie, reprezentowanych przez niebieskie pola w otoczeniu. Innymi słowy, ścieżki mogą iść tylko ulicą (drogi biegnące na północ / południe) lub ulicą (drogi biegnące na zachód / wschód).

JAK TEGO UŻYĆ

Najpierw naciśnij Setup, aby zresetować agentów i środowisko. Następnie naciśnij przycisk plot-euclidean-distance, jeśli chcesz pokazać ścieżkę, na której opiera się metryka odległości euklidesowej (pokazana w monitorze Odległość euklidesowa). Lub naciśnij przycisk plot-manhattan-distance, jeśli chcesz wykreślić jedną ze ścieżek, na której bazuje metryka odległości Manhattan (pokazana na monitorze Odległość na Manhattanie). Ponowne naciśnięcie tego przycisku wykreśli inną ścieżkę, ale z tą samą wartością, którą widać na monitorze.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- Setup: Resetuje model.
- plot-eulidean-distance: rysuje prostą ścieżkę, na której opiera się obliczenie odległości euklidesowej.
- plot-manhattan-distance: Rysuje jedną ze ścieżek, na których opiera się obliczenie odległości na Manhattanie.
Monitory modelu Interface są zdefiniowane w następujący sposób:

- Euclidean Distance: Jest to odległość euklidesowa między dwoma punktami.
- Manhattan Distance: odległość między dwoma punktami na Manhattanie.

RZECZY DO ODNOTOWANIA

Zauważ, że odległość euklidesowa jest zawsze mniejsza niż odległość na Manhattanie. Czemu? Zarówno odległość euklidesowa, jak i odległość na Manhattanie są dopuszczalnymi heurystykami, jeśli są wykorzystywane do świadomego algorytmu wyszukiwania, takiego jak chciwe wyszukiwanie lub wyszukiwanie A *. Czemu?

RZECZY DO SPEŁNIENIA

Kontynuuj rysowanie różnych ścieżek na Manhattanie, naciskając kilkakrotnie przycisk plot-manhattan-distance. Pojawi się wizualnie atrakcyjny wzór. Niektóre ścieżki będą jednak dłużej pojawiać się. Czemu?

ROZSZERZENIE MODELU

Zastanów się, jak wizualizować obliczenia odległości w 3 lub więcej wymiarach.

POWIĄZANE MODELE

Zobacz Searching Mazes, Missionaries i Cannibals and Searching for Kevin Bacon, aby zobaczyć, gdzie te metryki odległości stają się użyteczne jako funkcje heurystyczne w różnych świadomych algorytmach wyszukiwania.

Ćwiczenie 8.6.2:

Pokaż, jak algorytmy Greedy Best First Search i A * Search przeszukują sieć pokazaną poniżej. Pokaż listę aktywnych agentów wyszukujących wraz z odwiedzanymi węzłami. Węzłem początkowym jest węzeł n1, a węzeł gwiazdy jest węzłem celu (tj. Węzłem n0). Rozwiń węzły w kolejności ich numerów węzłów. Na przykład: rozwiń węzeł n1 przed każdym innym węzłem; rozwiń węzeł n2 przed każdym innym węzłem za wyjątkiem węzła n1; i tak dalej. Ponadto, zezwól na ponowne przeglądanie węzłów. W jaki sposób te wyszukiwania oparte na informacjach są porównywane z tym, w jaki sposób niedoinformowane algorytmy wyszukiwania, takie jak Breadth First Search i Depth First Search, przeszukują sieć?

8.7 Lokalne wyszukiwanie i optymalizacja

Ćwiczenie 8.7.1:

Pokaż, w jaki sposób Wyszukiwanie Wspinaczkowe przeszukuje sieć pokazaną poniżej. Pokaż listę aktywnych agentów wyszukujących wraz z odwiedzanymi węzłami. Węzłem początkowym jest węzeł n16 w lewym dolnym rogu, a węzeł gwiazdy jest węzłem celu (to jest węzłem n0). Rozwiń węzły w kolejności ich numerów węzłów. Na przykład: rozwiń węzeł n1 przed każdym innym węzłem; rozwiń węzeł n2 przed każdym innym węzłem za wyjątkiem węzła n1; i tak dalej. Ponadto, zezwól na ponowne przeglądanie węzłów. Użyj odległości na Manhattanie jako heurystyki dla problemu. Porównaj, w jaki sposób algorytmy wyszukiwania informacji, Greedy Best First Search i A * Search, wykonują ten sam problem

8.8 Porównywanie zachowań wyszukiwania

Ćwiczenie 8.8.1:

Zagraj w modele Searching Mazes, Missionaries and Cannibals and Searching for Kevin Bacon NetLogo do wypróbowania różnych algorytmów wyszukiwania, które zostały zaimplementowane w każdym modelu:

• Breadth First Search
• Uniform Cost Search
• Depth First Search
• Multi-agent Depth First Search
• Depth Limited Search
• Iterative Deepening Search
• Greedy Best First Search
• A* Search
o Hill Climbing Search

Wypróbuj inne ustawienia, aby zobaczyć, co się stanie. Wybierz różne typy wyszukiwania, wybierając odpowiednią opcję przy użyciu opcji search-behaviour. W przypadku bardziej świadomych wyszukiwań - Greedy Best First Search i A * - będziesz mógł wybrać jedną z trzech heurystyk ("Zero", "Euclidean Distance" i "Manhattan Distance") z dwoma dalszymi heurystykami ("Ludzie na lewa strona "i" Min. liczba wymaganych wypraw ") dostępne dla modelu Misjonarzy i Kanibali. W przypadku modelu Searching Mazes najpierw ustaw maze-being-searched w Interface do Empty Maze. Dowiedz się także, co się stanie, gdy wybierzesz labirynt Hampton Court lub labirynt Chevening House. Wyjaśnij swoje wyniki.

Ćwiczenie 8.8.2:

Użyj narzędzia BehaviorSpace, aby dowiedzieć się, który z różnych algorytmów wyszukiwania działa najlepiej w przypadku następujących modeli NetLogo: Wyszukiwanie w labiryntach; Misjonarze i kanibale; i szukanie Kevina Bacona. (Zrób to w bardziej systematyczny sposób niż dla Ćwiczenia 8.8.1 Zobacz Ćwiczenie 7.6.1, aby uzyskać więcej informacji na temat jak korzystać z narzędzia BehaviorSpace). Podczas wypełniania okna dialogowego Eksperyment w narzędziu BehaviorSpace można użyć reportera total searcher do pomiaru przebiegów dla wszystkich trzech modeli (tj. Wpisać tekst "total-searchers" w pole "Measure runs using these reporters"). Będziesz musiał również usunąć różne komunikaty użytkownika w trzech modelach, takich jak "Wyszukiwanie zostało zakończone!", "Nigdy więcej osób szukających! Przerwij! "," Udało się do środka labiryntu "i" Znalazłeś Kevina Bacona! ", Zastąp je reporterami i użyj ich do określenia pola warunku Stop dla eksperymentu. W przypadku modelu Searching Mazes oraz modelu Missionaries and Cannibals użyj procedur setup i go, aby wypełnić pola poleceń Setup i Go command. Aby wyszukać model Kevina Bacona, użyj procedur setup-network i go-searchers jako poleceń setup i go.



Powrót

  Wiedza 

9.1 Systemy oparte na wiedzy i wiedzy

Ćwiczenie 9.1.1:

Jak wskazano w ćwiczeniu 1.1.1a, jednym z zagadnień badań sztucznej inteligencji jest problem kategoryzacji dla inteligentnych systemów - problem wyboru odpowiednich kategorii w celu objęcia zestawu przykładów, oraz wynikające z nich błędy klasyfikacji powstałe po wybraniu określonego zestawu kategorii. Jako kolejny przykład użyj swojej ulubionej wyszukiwarki, aby dowiedzieć się, w jaki sposób terminy "Wiedza" i "System oparty na wiedzy" są definiowane przez różne osoby. Klasyfikuj różne znalezione definicje w zestawie różnych kategorii. Które definicje pasują do Twojego zestawu kategorii? Które definicje stwarzają problemy, które wymagają ponownej oceny odpowiedniości klasyfikacji taksonomicznej?

Ćwiczenie 9.1.2:

Co musi mieć system oparty na wiedzy, który różni się od systemu baz danych, aby stał się repozytorium "wiedzy", a nie tylko repozytorium danych? Twoja odpowiedź musi zawierać omówienie następującego stwierdzenia: "Aby stworzyć system oparty na wiedzy, wystarczy dodać pewne reguły do systemu baz danych, aby wnioskować nowe dane."

9.2 Wiedza jako uzasadniona prawdziwa wiara

Ćwiczenie 9.2.1:

Omów następujące stwierdzenie: "Wiedza nie może istnieć sama, niezależnie od nas. Istnieje tylko w naszych głowach ".

Ćwiczenie 9.2.2:

Omów standardową definicję wiedzy, która stwierdza, że wiedza jest "uzasadnionym prawdziwym przekonaniem". Jakie rodzaje wiedzy dobrze nadają się do takiego scharakteryzowania? Jakie rodzaje wiedzy stwarzają problemy dla tej definicji?

9.3 Różne rodzaje wiedzy

Ćwiczenie 9.3.1:

Oznacz każdą z następujących rzeczy jako deklaratywną wiedzę, wiedzę proceduralną, wiedzę o zadaniach, wiedzę behawioralną, wiedzę epizodyczną, wiedzę wyjaśniającą lub wnioskową wiedzę:
• świadomość, że Margaret Thatcher jest nadal premierem Wielkiej Brytanii;
• świadomość, że Titanic zatonął 15 kwietnia 1912 r .;
• znajomość sposobu gotowania pieczonego posiłku;
• znajomość sposobu jazdy z Bangor do Betwys-y-Coed w Północnej Walii;
• wiedza o tym, kiedy ostatnio poszedłeś na wesele lub pogrzeb;
• wiedza dla robota o tym, jak podnieść jego ramię robotyczne;
• świadomość, że istnieją wybory do zrobienia, gdy jesteś na skrzyżowaniu w labiryncie;
• świadomość, że jeśli Takehe składa jajo, to musi to być ptak;
• świadomość, że nie możemy być w dwóch miejscach w tym samym czasie;
• wiedza wymagana do rozwiązania równania matematycznego;
• wiedza o tym, które grzyby są trujące;
• świadomość, że matką Jezusa jest Maryja;
• znajomość sposobu otwierania puszki spaghetti;
• wiedza o tym, jak wygląda drzewo Pohutukawa;
• wiedza o tym, jak brzmią dudy;
• znajomość smaku haggis;
• wiedza o tym, jak to jest dotknąć kota;
• wiedza o tym, jak wygląda twoja twarz;
• świadomość, że Elvis wciąż żyje;
• znajomość aromatów mocnej kawy po zawieszeniu;
• znajomość sposobu prawidłowego wymawiania słowa "Llangollen";
• wiedza o tym, kiedy ktoś jest grzeczny lub nieuprzejmy;
• wiedza o tym, co może się stać, gdy zrobisz coś złego;
• wiedzę o tym, jak znosić się w obecności Jej Królewskiej Mości, Królowej;
• wiedza wymagana do wyjaśnienia znaczenia życia, wszechświata i wszystkiego;
• świadomość, że słońce eksploduje pod koniec tego stulecia (w roku 2099);
• świadomość, że globalne ocieplenie powoduje nieodwracalne szkody w środowisku Ziemi;
• wiedza, którą myślisz, jest samoświadoma i jest świadoma

Które z nich nie pasują do żadnej z kategorii? Jakie problemy pojawiają się podczas próby reprezentowania wiedzy zawartej w każdym z nich w systemie komputerowym?

9.4 Niektóre podejścia do reprezentacji wiedzy i sztucznej inteligencji

Ćwiczenie 9.4.1:

Porównaj i skontrastuj następujące podejścia do reprezentacji wiedzy:

• symboliczne;
• połączenie (niesymboliczne);
• przestrzenie koncepcyjne.
Ćwiczenie 9.4.2:

Przedyskutuj dla każdego z trzech podejść wymienionych w części 9.4.1 powyżej, jak możesz zaprojektować wiedzę, aby opisać:

• dźwięk dudy (np. Dla osoby głuchej);
• smak mleka;
• jaki jest papier ścierny;
• jaka kawa pachnie;
• jak wygląda Twoja twarz (np. Dla osoby niewidomej).
Dla każdego podejścia wskaż niedociągnięcia w wybranym rozwiązaniu.

Ćwiczenie 9.4.3: Model cylindra koloru NetLogo

Wypróbuj model cylindrów kolorowych w NetLogo:

http://files.bookboon.com/ai/Colour-Cylinder.-html CO TO JEST?

Ten model pokazuje, jak kolor może być reprezentowany w 3 wymiarach: odcień, nasycenie i jasność. Odpowiadają one wymiarom, które wskazują, że hu manie wykorzystują do postrzegania koloru.

JAKI JEST CEL?

Celem tego modelu jest pokazanie, że jeśli ludzie polegają na trzech wymiarach postrzegania koloru (barwy, nasycenia i jasności), wówczas nie jest możliwe precyzyjne zdefiniowanie pojęcia określonego koloru (takiego jak czerwony lub żółty), ponieważ nie można zdefiniować granic między różnymi kolorami pokazanymi w kolorowym wrzecionie lub cylindrze.

JAK TO DZIAŁA

Do narysowania koła kolorów lub prostokąta służy agent drawer. Dwa z wymiarów kolorów - odcień i nasycenie - określają, jak kolor kółka wygląda dla określonej wartości jasności. Praca Petera Gärdenforsa z koncepcyjną przestrzenią teorii mówi o tym, jak ludzie postrzegają kolor za pomocą wrzeciona barwnego - gdzie promień okręgu staje się coraz mniejszy wraz ze wzrostem lub zmniejszeniem jasności, ostatecznie kończy się w punktach, gdy jasność jest maksymalna lub minimalna. W tym modelu jest agdy jasność jest ustawiona na 255 i 0 i odpowiada odpowiednio kolorom białym i czarnym. Ponieważ wizualizacja modelu jest ograniczona do 2D, model przedstawia cylinder koloru zamiast kolorowego wrzeciona, z każdym kolorem reprezentującym kawałek cylindra dla określonej wartości jasności.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk setup. Następnie naciśnij przycisk draw-colour-rectangle lub draw-colour-circle. Suwak jasności określa jasność narysowanych kolorów. Suwaki hue-increment i saturation-increment mogą być używane do kontrolowania, jak cienki jest narysowany kolor.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- setup: To wszystko usuwa, sprawia, że tło jest białe i tworzy agent szuflady gotowy do narysowania koła kolorów lub prostokąta.
- draw-color-rectangle: Rysuje prostokąt koloru dla określonej wartości jasności. Odcień jest wymiarem x, a nasycenie - wymiarem y.
- draw-color-circle: Rysuje koło kolorów dla określonej wartości jasności. Wartości odcienia są rozłożone wokół 360 stopni koła, a wartości nasycenia są rozłożone wzdłuż różnych długości promieni od 0 do 255 od środka okręgu.

Suwaki modelu Interface są zdefiniowane w następujący sposób:

- brightness: Kontroluje jasność narysowanego koloru.
- Hue-increment and saturation-increment: kontroluje przyrosty używane podczas rysowania kolorów. Mniejsze przyrosty oznaczają, że rysunek ma dokładniejsze szczegóły.

RZECZY DO ODNOTOWANIA

Zauważ, jak trudno jest zdefiniować region dla określonego koloru. Na przykład spróbuj narysować wyimaginowaną linię wokół wszystkiego, co jest żółte.

RZECZY DO SPEŁNIENIA

Spróbuj użyć suwaka jasności, aby zmienić wartość jasności, aby zobaczyć, jaki efekt ma na kole kolorów i prostokąt koloru. Zmień wartości suwaków zwiększania i zwiększania nasycenia, aby zmienić sposób, w jaki przyrost jest używany do narysowania koła kolorów. Zwiększenie rozmiaru przyrostów spowoduje rysowanie symetrycznych wzorów. Dlaczego to? Spróbuj to zrobić podczas rysowania okręgu. Możesz narysować obramowanie do okręgu, modyfikując poniższy kod:

[set pcolor hsb-as-rgb]
; ustaw ten kolor na określony, jeśli chcesz narysować obramowanie
; dla koła

Zmień "hsb-as-rgb" w powyższym kodzie na kolor, który chcesz obramować. Na przykład, jeśli chcesz, aby był czarny, ustaw go na 0, jeśli chcesz, aby był niebieski, ustaw go na 105.

ROZSZERZENIE MODELU

Spróbuj dodać etykiety do koła kolorów, takiego jak czerwony, żółty i zielony. Alternatywnie, możesz skonfigurować działanie HubNet, w którym każdy uczeń wybiera miejsce umieszczenia kolorowych etykiet. Zobacz, jak dobrze pasują do siebie w klasie.

CECHY NETLOGO

Użyj polecenia hsb NetLogo do generowania kolorów łat w oparciu o wartości odcienia, nasycenia i jasności. Polecenie patch-at-heading-distance jest użyte do narysowania kolorowego koła

Ćwiczenie 9.5.1:

Wymień dwa lub więcej rzeczywistych przykładów następujących problemów dla inteligentnych systemów:

• Klasyfikacja;
• grupowanie;
• kontrola;
• diagnoza;
• optymalizacja;
• Prognoza;
• wybór.

W jaki sposób wiedza może być wykorzystana przez inteligentny system dla tego typu problemów? Czy te problemy z natury różnią się, co wymaga, aby wiedza była przetwarzana w zasadniczo inny sposób , czy wiedza jest przetwarzana w podobny sposób?



Ćwiczenie 9.6.1:

Co rozumiemy przez "reprezentację", gdy mówimy o "reprezentacji wiedzy"? Czy można uczciwie powiedzieć, że czynniki mrówek i termitów w modelach mrówek i termitów nie "reprezentują" wiedzy w jakiś sposób? (W końcu wiedza jest reprezentowana globalnie w całym systemie wieloagentowym, ale nie w każdym agencie osobno).

9.7 Reprezentowanie wiedzy za pomocą map

Ćwiczenie 9.7.1: Rysunek mapy Model NetLogo

Wypróbuj model rysowania mapy w NetLogo:

http://files.bookboon.com/ai/Map-Drawing.html

CO TO JEST?

Ten model pozwala użytkownikowi narysować mapę. na przykład Mapa Central Parku w Nowym Jorku. Ten model został stworzony przy użyciu NetLogo w wersji 4.0.4. Chociaż po konwersji na wersję 4.1 programu NetLogo działa zupełnie poprawnie, podczas próby zaimportowania Map Drawing Central Park World do drugiej wersji przy użyciu pliku CSV, który został wyeksportowany przy użyciu wcześniejszej wersji, pojawia się błąd czasu wykonania. Prostym obejściem tego problemu jest kontynuowanie działania modelu przy użyciu wersji 4.0.4 zamiast 4.1. Jeśli chcesz załadować mapę Central Parku pokazaną w rozdziale 9 książki sztucznej inteligencji, najpierw upewnij się, że korzystasz z modelu w wersji 4.0.4, a następnie wybierz opcję Importuj z zakładki Plik, wybierz opcję Importuj świat, a następnie zaimportuj plik World Map Central Park: Map-Drawing-Central-Park-World.csv.

CZYM JEST CEL?

Celem tego modelu jest zapewnienie obiektu, który pozwala użytkownikom narysować własne mapy, co pozwala im reprezentować wiedzę o rzeczywistym środowisku w wirtualnym środowisku 2D NetLogo. Mapy mogą być uważane za formę reprezentacji wiedzy, która zapewnia inne podejście z różnymi możliwościami rozumowania w porównaniu do bardziej tradycyjnych form reprezentacji wiedzy, takich jak logika pierwszego rzędu i drzewa decyzyjne, zwykle opisane w podręcznikach AI. Drugorzędnym celem jest pokazanie różnych sposobów, w jakie obiekty i ścieżki mogą być rysowane i edytowane za pomocą funkcji NetLogo.

JAK TO DZIAŁA

Model umożliwia użytkownikowi umieszczanie w otoczeniu różnych obiektów, takich jak okręgi, kwadraty, trójkąty, drzewa i osoby. Obiekty te są reprezentowane przez różne typy agentów żółwi. Ścieżki, które użytkownik może narysować na mapie, mają różne typy. Polecenie draw-path rysuje ścieżkę za pomocą poleceń rozłożenia żółwia (to jest za pomocą pióra żółwia rysunku za pomocą polecenia pen-down). W konsekwencji ten typ ścieżki nie może być "widziany" przez innych agentów w środowisku, więc polecenie select-region nie działa na tym typie ścieżki i nie można go usunąć przy użyciu erase-path, jeśli ścieżka została zakończona ( na przykład za pomocą polecenia end-path). W takim przypadku, jeśli nie chcesz wymazać wszystkiego, naciskając polecenie setup, najlepszą strategią jest narysowanie nad ścieżką innej ścieżki o innym kolorze niż pożądany kolor tła. Istnieją dwa inne typy ścieżek - są to ścieżki rysowane za pomocą agentów poprawek (za pomocą polecenia draw-patches-path) i użycie agentów żółwia (za pomocą polecenia draw-turtles-path). Niestety, jakość tego typu ścieżek może być bardzo niejednolita (usprawiedliwiając kalambur). Tylko typy agentów żółwia można wybrać, a następnie przenieść lub usunąć. Ścieżka typu łatka nie może być wybrana w przeciwieństwie do ścieżki narysowanej za pomocą pióra żółwia opisanego powyżej. Model używa agentów żółwia drawer do rysowania ścieżek, agentów żółwi tracer do ich śledzenia, agentów żółwiowych text do rysowania tekstu i square-drawers do rysowania ścieżki za pomocą kwadratowych żółwi.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk setup. Aby umieścić obiekt na mapie, najpierw wybierz żądany objet-type i object-colour, naciśnij przycisk draw-object, a następnie umieść obiekt w żądanym miejscu, przesuwając mysz, a następnie klikając. Możesz usunąć obiekt, naciskając przycisk erase-object, a następnie klikając na nim za pomocą myszy. Aby go przesunąć, naciśnij przycisk select-object, a gdy zostanie podświetlony za pomocą halo, obiekt można przesuwać za pomocą myszy. Przycisk select--region pozwala użytkownikowi wybrać region obiektów, które mają być przemieszczane za pomocą myszy lub usunięte przy użyciu przycisku select-region. Jeśli chcesz narysować ścieżkę, istnieją trzy opcje: ścieżki rysowane za pomocą pióra agenta żółwia, rysowane ścieżki używanie agentów poprawek i ścieżek narysowanych za pomocą żółwi. Pierwsza opcja wychodzi gładko; pozostałe dwie opcje mogą być bardziej niejednolite. Podczas rysowania ścieżki przesuń mysz do żądanej lokalizacji, a następnie kliknij i przeciągnij, aby narysować ścieżkę. Aby narysować ścieżkę za pomocą pióra agenta żółwia, najpierw wybierz żądany path-color i path-size, a następnie naciśnij przycisk draw-path Ścieżki nie można usunąć po jej zakończeniu, po naciśnięciuend-path lub narysowaniu innego obiektu lub ścieżki w innym miejscu. Jeśli tak nie jest, to erase-path będzie działała, kasując każdy punkt ścieżki jeden po drugim. Jeśli erase-path nie powiodło się, wystarczy ją narysować. Aby narysować ścieżkę za pomocą agentów poprawek, wybierz żądany patches-path-size a następnie naciśnij przycisk draw=patches-path. Aby narysować ścieżkę przy użyciu żółwia, wybierz żądany turtles-path-size, a następnie naciśnij przycisk draw-turtles-path. Tekst można dodać za pomocą przycisku draw-texr. Przedtem upewnij się, że najpierw wpisujesz tekst, który chcesz narysować, do pola wprowadzania text, a następnie wybierz żądany text-colour. Rozmiar czcionki dla całego tekstu jest określany globalnie za pomocą przycisku Settings w Interface. Kolor tła mapy określony jest za pomocą wybieraka background-colour. Tło zostanie zmienione / skasowane za pomocą przycisku clear-background. Obraz można wykorzystać dla tła zamiast pojedynczego koloru, naciskając przycisk import-background. Aby zapisać całą mapę i wszystkie ustawienia na dysku, wybierz menu File z paska menu NetLogo, a następnie wybierz opcję Export World. Aby wczytać go ponownie w późniejszym terminie, użyj zamiast tego Import World.

INTERFEJS

Przyciski modelu Interface są zdefiniowane w następujący sposób:

- setup: Czyści mapę i resetuje tło.
- draw-path: Rysuje ścieżkę, gdy remis agenta żółwia z pisakiem w dół pomiędzy kolejnymi punktami podczas przeciągania myszy. Kolor ścieżki jest określany przez selektor ścieżki i kolor, a rozmiar ścieżki jest określany za pomocą suwaka rozmiaru ścieżki.
- end-path: Oznacza to, że ścieżka jest zakończona. Kolejne naciśnięcie przycisku kasowania nie powiedzie się w usunięciu wcześniej narysowanych ścieżek. Jedynym sposobem na pozbycie się ich jest narysowanie nad nimi innego koloru.
- erase-path: Spowoduje to usunięcie punktów jeden po drugim w ścieżce, która została właśnie narysowana za pomocą przycisku draw-path, chyba że ścieżka została oznaczona jako pełna za pomocą przycisku zakończenia trasy lub jeśli obiekt pośredniczący został rysowane (co kończy domyślnie ścieżkę).
- draw-object: To narysuje obiekt w miejscu określonym przez kolejne kliknięcie myszą. Typ obiektu i kolor są określane przez selektory object-type i object-colour, a ich rozmiar za pomocą suwaka object-size.
- erase-object: Usuwa najbliższy obiekt, jeśli taki istnieje. Pamiętaj o kliknięciu na środku obiektu, w przeciwnym razie nie zostanie on usunięty.
- select-object: Umożliwi to użytkownikowi przeciągnięcie wybranego obiektu za pomocą myszy w celu zmiany jego położenia. Wybrany obiekt jest pokazany z halo. Pamiętaj, aby kliknąć środek obiektu, w przeciwnym razie nie pojawi się halo pokazujące, że został wybrany. - select-region: Pozwala użytkownikowi wybrać prostokątny obszar obiektów do poruszania się. Użytkownik klika i przeciąga myszą, aby zdefiniować wybrany region (jest to pokazane za pomocą czerwonego pola dynamicznie po przeciągnięciu myszy, a także wszystkie obiekty, które można przenosić w regionie są również podświetlone). Aby przesunąć zaznaczone obiekty dookoła, podnieś mysz na chwilę, gdy prostokątny obszar jest taki, jaki chcesz, kliknij z powrotem wewnątrz czerwonego prostokąta, a następnie przeciągnij go w żądane miejsce.
- erase-region: Spowoduje to skasowanie wszystkich obiektów, które zostały wybrane za pomocą przycisku wyboru regionu.
- clear-background: Usuwa istniejące tło i przerysowuje je za pomocą koloru określonego przez selektor w tle.
- import-background: Pozwala użytkownikowi na użycie pliku obrazu jako tła.
- draw-patches-path: Rysuje ścieżkę przy użyciu agentów poprawek. Rozmiar łatek jest określony przez suwak wielkości ścieżek łatek.
- draw-turtles-path: To narysuje ścieżkę przy użyciu żółwia. Wielkość żółwi określa suwak wielkości ścieżki żółwi.
- draw-text: Rysuje tekst określony w polu tekstowym wprowadzania tekstu na mapie. Prawa strona tekstu kończy się w miejscu kliknięcia myszą. Kolor tekstu jest określony przez selektor kolorów tekstu. Rozmiar czcionki dla całego tekstu można zmienić globalnie, naciskając przycisk Ustawienia w interfejsie.
Wybory, suwaki i pole wprowadzania modelu są zdefiniowane w następujący sposób:

- path-color: Ustawia kolor używany do narysowania ścieżki po naciśnięciu przycisku ścieżki rysowania.
- path-size: Ustawia rozmiar pisaka, który jest używany do narysowania ścieżki po naciśnięciu przycisku kreślenia.
- object-type: Ustawia typ obiektu, który zostanie narysowany po naciśnięciu przycisku obiektu rysowania.
- object-color: Ustawia kolor obiektu, który zostanie narysowany po naciśnięciu przycisku DrawObject.
- object-size: Ustawia rozmiar obiektu, który zostanie narysowany po naciśnięciu przycisku obiektu rysowania.
- background-color: Ustawia kolor tła, które zostanie narysowane po naciśnięciu przycisku "clear-background".
- patch-path-size: Ustawia rozmiar ścieżki, która jest narysowana po naciśnięciu przycisku ścieżki wątku.
- turtles-path-size: Ustawia rozmiar ścieżki, która jest narysowana po naciśnięciu przycisku draw-turtles-path.
- text: Ustawia tekst, który jest narysowany po naciśnięciu klawisza draw-text.
- text-color: Ustawia kolor tekstu, który zostanie narysowany po naciśnięciu klawisza draw-text

RZECZY DO SPEŁNIENIA

Spróbuj narysować własną mapę - być może z domu, mieszkania lub mieszkania lub z lokalnej szkoły. Zauważ, że podczas tworzenia mapy pojawiają się problemy związane z reprezentowaniem prawdziwego świata. Po zakończeniu sprawdź, ile błędów jest i ile szczegółów zostało pominiętych na mapie. Miesiąc lub mniej, sprawdź ponownie i zobacz, ile się zmieniło. Spróbuj załadować mapę Central Parku. Odbywa się to poprzez użycie opcji menu NetLogo do importowania świata. Wybierz menu Plik z paska menu NetLogo, a następnie wybierz opcję Importuj świat. ROZSZERZENIE MODELU

Ten model ma długą drogę, zanim można go wykorzystać do rysowania map o wyższej jakości, takich jak te używane do orientacji. Jedną z głównych wad jest słaba jakość rysowania ścieżek. Czy można to w jakiś sposób poprawić?

CECHY NETLOGO

Opcje menu Importuj świat i Eksportuj świat służą do zapisania mapy na dysku i ponownego jej załadowania.
Ćwiczenie 9.7.2:

Dostosuj kod z modelu rysowania mapy, aby móc dodać adnotację do zaimportowanej mapy lub obrazu za pomocą:

•  koła;
•  strzałki;
•  tekst;
•  znaki ("x" do oznaczania miejsca).

9.8 Reprezentowanie wiedzy za pomocą map zdarzeń

Ćwiczenie 9.8.1: Model Central Park NetLogo

Wypróbuj model wydarzeń w Central Parku w NetLogo:

http://files.bookboon.com/ai/Central-Park-Events.html

CO TO JEST?

Ten model przedstawia mały zestaw zdarzeń, które agent musi wykonać, jeśli chce przejść z Zoo do Boat Pond w nowojorskim Central Parku. Zdarzenia są wyświetlane przy użyciu reprezentacji mapy zdarzeń, w której zdarzenia są połączone z innymi zdarzeniami w osobnych strumieniach w uporządkowanej sekwencji. Chodzi o to, że agent przetwarza zdarzenia jednocześnie w oddzielnych strumieniach. Podejście jest podobne do podejścia przyjętego dla przetwarzania strumienia zdarzeń (ESP).

JAKI JEST CEL?

Celem tego modelu jest pokazanie, jak wizualizować serię zdarzeń za pomocą mapy zdarzeń.

JAK TO DZIAŁA

Model używa agentów żółwia do reprezentowania stanów na mapie zdarzeń i używa agentów linków do reprezentowania ścieżek między stanami. Stany posiadają trzy zmienne:
- depth: głębokość w drzewie mapy zdarzeń.
- stream: nazwa strumienia (gdzie strumień składa się z sekwencji zdarzeń sensorycznych lub motorycznych).
- event : wydarzenie - albo czuciowe albo motoryczne. (Abstrakcyjne wydarzenia nie są potrzebne w przypadku tej konkretnej mapy wydarzeń).

Układ sprężynowy służy do wizualizacji mapy zdarzeń.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk setup. Zwykle będzie to powodować bałagan. Aby rozwinąć bałagan, naciśnij przycisk change-layout, a następnie dynamicznie zmieniaj wartości w suwakach sterujących układem. Jedną z efektywnych technik jest zmniejszenie wartości suwaka spring-length do 0, a następnie powolne zwiększanie go ponownie do tyłu, aż do uzyskania pożądanej długości i układu.

INTERFEJS

Przyciski modelu INterface są zdefiniowane w następujący sposób:

- setup: Spowoduje to wyczyszczenie środowiska i zmiennych oraz (ponowne) załadowanie mapy zdarzeń. Zwykle pojawi się to w zagraconej formie, a przycisk zmiany układu musi zostać naciśnięty później.
- change-layout: To może być użyte do usunięcia bałaganu poprzez zmianę wartości w trzech suwakach.

Suwaki modelu Interface są zdefiniowane w następujący sposób:

- spring-constant : jest to wartość używana przez polecenie układu-sprężyny. Zmiana nie będzie miała większego wpływu na wizualizację mapy wydarzeń.
- sprint-length: Zmienia długość ścieżek między stanami sieci map zdarzeń.
- repulsion-constant: Kontroluje to, jak bardzo każde ze stanów odpycha się nawzajem.

RZECZY DO ODNOTOWANIA

Zauważ, że suwak repulsion-constant może być użyty do "odpychania" stanów od siebie (dla większych wartości) i "przyciągania" stanów do siebie nawzajem (dla mniejszych wartości). Zauważ, że bałagan w układzie sieci można często usunąć, ustawiając wartość suwaka długości fali na zero, a następnie zwiększając ją.

RZECZY DO SPEŁNIENIA

Spróbuj zmienić wartości suwaków, aby zobaczyć, jaki wpływ ma to na układ.

ROZSZERZENIE MODELU

Połącz ten model z modelem do rysowania map załadowanym za pomocą Map Drawing Central Park World. Następnie pokaż kilku agentów wędrujących pomiędzy Zoo i Boat Pond, animując mapę i mapę wydarzeń w tym samym czasie. Można to zrobić tak, aby każdy agent kończył się niewielkimi zmianami w ścieżkach, które wybrał, ponieważ istnieje możliwość wystąpienia niewielkich zmian między stanami mapy zdarzeń. Na przykład podczas skrętu w lewo agent może skręcić w lewo o nieco więcej lub nieco mniej niż 90 stopni. Podobnie, podczas chodzenia do przodu, agent może wybrać chodzenie do przodu na odległość różni się nieznacznie w stosunku do innych agentów stosujących tę samą mapę zdarzeń.

CECHY NETLOGO

Model wykorzystuje polecenie layout-spring do modyfikacji układu sieci stanów (agentów żółwia) i ścieżek (agentów linków).

POWIĄZANE MODELE

Zobacz model Wall Following Events i model Knowledge Representation.

Ćwiczenie 9.8.2: Model NetLogo oparty na reprezentacji wiedzy Wypróbuj model reprezentacji wiedzy w NetLogo: http://files.bookboon.com/ai/Knowledge-Representation.html

CO TO JEST?

Ten model pokazuje, w jaki sposób standardowe typy reprezentacji wiedzy, takie jak logika, ramki, reguły i drzewa decyzyjne mogą być implementowane w NetLogo. Model pokazuje również, w jaki sposób przeprowadzić rozumowanie, używając różnych typów reprezentacji wiedzy. Wprowadzono również nowy rodzaj reprezentacji wiedzy, nazywany mapami zdarzeń. Mapy zdarzeń są powiązane z koncepcją przetwarzania strumienia zdarzeń (ESP), w którym zdarzenia występują jednocześnie w osobnych strumieniach. Znajomość trzech problemów z zabawkami jest zaimplementowana w modelu. Te trzy problemy to:

- Zwierzęta w zoo: Zidentyfikuj nazwę zwierzęcia z zoo z obserwacji.
- Ptaki nowozelandzkie: odgadnij nazwę nowozelandzkiego ptaka.
- Łodzie żaglowe: Zidentyfikować typ przepływającej łodzi na paradzie wysokich statków.

CZYM JEST CEL?

Celem tego modelu jest pokazanie, jak reprezentować wiedzę z wykorzystaniem tradycyjnych form reprezentacji wiedzy, takich jak logika pierwszego rzędu, ramy, reguły i drzewa decyzyjne. Drugorzędnym celem jest pokazanie, w jaki sposób te różne formy reprezentacji wiedzy mogą zostać ponownie rzucone i wizualizowane w ramach nowego typu wiedzy o reprezentacji zwanej mapą zdarzeń. Reprezentacja map zdarzeń ułatwia również wizualizację procesu wnioskowania.

JAK TO DZIAŁA

Różne formy wiedzy są reprezentowane przy użyciu agentów żółwia stanu i agentów łącza ścieżki, które są używane do opisania ścieżki przejścia między stanami. Agenci państwowi mają trzy zmienne:
- depth: głębokość w drzewie zdarzeń (gdzie katalog główny drzewa ma głębokość 0, dziecko stanu root ma głębokość 1 itd.);
- stream: Jest to nazwa strumienia, z którym powiązane jest wydarzenie;
- event: to jest samo wydarzenie. Zdarzenia mogą być wydarzeniami zmysłowymi, wydarzeniami motorycznymi lub wydarzeniami abstrakcyjnymi (te ostatnie są wydarzeniami zmysłowymi, motorycznymi i abstrakcyjnymi, które, gdy występują razem, powodują ,że zdarzenie to wystąpi jednocześnie). Stany i ścieżki tworzą skończoną sieć stanu. Agenci żółwi Walker są przyzwyczajeni do "chodzenia" po sieci map wydarzeń podczas procesu wnioskowania. Ścieżki (tj. przejścia) nie są oznaczone; po prostu wskazują kolejność występowania zdarzeń. Sieć stanów i ścieżek może być traktowana analogicznie jak mapa zdarzeń (stąd dlaczego nazywana jest mapą zdarzeń). Mapa zdarzeń może, ale nie musi być wierną reprezentacją tego, co naprawdę dzieje się w środowisku, tj. W tym modelu mapa zdarzeń może, ale nie musi być wierną reprezentacją wiedzy, którą stara się reprezentować. Mapy zdarzeń mogą być używane do implementacji wszystkich standardowych typów reprezentacji wiedzy, jak pokazano w tym modelu, a także związanych z nimi procesów wnioskowania, takich jak rozumowanie w przód i w tył dla reguł i rozumowanie oparte na ramkach przy użyciu metod dopasowywania ramek. Zapewniają także przydatny sposób wizualizacji różnych typów reprezentacji wiedzy i animowania procesów wnioskowania.

JAK TEGO UŻYĆ

Najpierw wybierz typ reprezentacji wiedzy za pomocą wybieraka KR-type w Interface. Następnie wybierz problem za pomocą opcji select-problem. Aby załadować wiedzę związaną z problemem, naciśnij przycisk setup-knowledge. Spowoduje to wyświetlenie wiedzy w dużym czarnym polu po lewej stronie. Jeśli wizualizacja jest początkowo nieco zagracona, a layout-type został ustawiony na spring, naciśnij przycisk change-layout układu podczas odtwarzania za pomocą suwaków spring-length, spring-constant i repulsion-constant. Następnie upewnij się, że proces wnioskowania jest resetowany do stanu początkowego, naciskając przycisk rest-reasoning. Na koniec, aby wykonać proces wnioskowania, naciśnij przycisk go-reason.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:
- setup-knowledge: To ładuje wiedzę na temat problemu, jak określono przez select-problem za pomocą reprezentacji wiedzy określonej przez wybór KR-type. Wiedza jest wizualizowana w środowisku za pomocą automatycznych automatów stanu zdarzeń, które przedstawiają zależności między stanami wiedzy.
- dump-knowledge: To zrzuca do pola Output wiedzę, która została załadowana przez przycisk setup-knowledge.
- reset reasoning: Powoduje resetowanie rozumowania, aby zacząć od nowa od stanu początkowego. Ten stan jest określony przez rodzaj przeprowadzanego rozumowania, tj. W przypadku wnioskowania wstecznego przy użyciu reguł, stanem początkowym jest stan docelowy; w przypadku rozumowania wybiegowego stan początkowy jest stanem związanym z pierwszą regułą w bazie danych reguł.
- go-reasoning: Rozpoczyna proces wnioskowania. Jeśli używane jest rozumowanie oparte na regułach, użytkownik zostanie zapytany, czy chce wykonać przekierowanie do przodu czy do tyłu.
- clear-output: Powoduje wyczyszczenie pola Output.
- change-layout: Zmienia układ, jeśli selektor layout-type ma ustawioną opcję spring. Może to być przydatne, aby usunąć niektóre z bałaganu. Aby zmienić konfigurację układu, użytkownik może zmienić suwaki spring-length, spring-constant i repulsion-constant, gdy przycisk change-layout jest wciśnięty.
- move-layout: Czasami etykiety stanów w układzie pojawiają się poza krawędzią środowiska. Ten przycisk umożliwia przesunięcie układu w lewo, w prawo, w górę lub w dół przez użytkownika określonego dystansu.

Suwaki interfejsu, przełączniki, wybieraki i pole wyjściowe modelu są zdefiniowane w następujący sposób:

- KR-type: To wybiera rodzaj reprezentacji wiedzy, np. reguły, ramki, drzewa decyzyjne i sieci semantyczne.
- select-problem: Wybiera typ problemu:

"Zoo Animals": Zidentyfikuj nazwę zwierzęcia z zoo z obserwacji.
"Ptaki nowozelandzkie": Odgadnij nazwę nowozelandzkiego ptaka.
"Łódki żaglowe": Określić rodzaj łodzi, która płynie w paradzie wysokich statków.

- layout-type: Określa typ układu używanego do wizualizacji stanów i ścieżek na mapie zdarzeń.
- spring-length, spring-constant, repulsion-constan: Może to być użyte do modyfikacji układu, jeśli typem układu jest wiosna.
- trace-on ?: Jeśli ustawione na On, zapisze dane wyjściowe w polu Output, które śledzi proces wnioskowania.
- Output box: Służy do zapisu wyniku procesu wnioskowania i innych informacji do.

RZECZY DO ODNOTOWANIA

Zauważ, które rodzaje reprezentacji wiedzy utrudniają zrozumienie procesu rozumowania, gdy są wizualizowane za pomocą formatu mapy zdarzeń w środowisku (na przykład, agenci walker dla sieci semantycznych zdają się przeskakiwać dużo). Zauważ, który z typów reprezentacji wiedzy tworzy bardziej skomplikowane mapy zdarzeń dla różne problemy.

RZECZY DO SPEŁNIENIA

Wypróbuj różne typy reprezentacji wiedzy dla trzech rodzajów problemów. Postaraj się zobaczyć, jak odnoszą się do siebie nawzajem i jak się różnią. Dowiedz się, co dzieje się podczas procesu wnioskowania. Które są łatwe do naśladowania, a które są trudne? Spróbuj dowiedzieć się, jak inicjowana jest wiedza dla różnych typów reprezentacji wiedzy. (Podpowiedź: spójrz na polecenie setup-knowledge). Dowiedz się, jak definiowane są reguły, a następnie w jaki sposób są wizualizowane jako mapy zdarzeń. Należy zauważyć, że w modelu zasady i sieci semantyczne są zdefiniowane jawnie, podczas gdy ramki i drzewa decyzyjne są konfigurowane przez konwersję z reguł. (W jaki sposób?) Zamiast tego użyj procesu definiowania wiedzy dla ramek i drzew decyzyjnych, zamiast używać procesu konwersji.

ROZSZERZENIE MODELU

Spróbuj dodać inne rodzaje reprezentacji wiedzy, być może takie, które są hybrydami implementowanych w modelu. Na przykład typ sieci zdarzeń semantycznych dołączony do modelu jest hybrydą sieci semantycznych i typów map zdarzeń. Zbadaj alternatywne metody wizualizacji procesu wnioskowania dla każdego rodzaju reprezentacji wiedzy.

CECHY NETLOGO

Zwróć uwagę na użycie komendy hatch w celu utworzenia agentów walker, aby kontynuować przechodzenie przez sieć map zdarzeń podczas procesu wnioskowania. To, w jaki sposób agenci walker poruszają się po sieci, określa rodzaj rozumowania.

POWIĄZANE MODELE

Inne przykłady wykorzystania map zdarzeń do przetwarzania strumienia zdarzeń można znaleźć w modelach języka, zdarzeniach w Central Parku i na modelach NetLogo następujących po sobie.

Ćwiczenie 9.8.3:


Zagraj z modelem NetLogo opartym na reprezentacji wiedzy, aby wypróbować różne metody reprezentacji. Aby wybrać problem, użyj selektora select-problem w interfejsie. Wybierz różne typy reprezentacji wiedzy, wybierając odpowiednią opcję za pomocą wyboru KR-type. Wypróbuj różne ustawienia, aby zobaczyć, co się dzieje - na przykład możesz użyć przycisku zchange-layout połączonego z suwakami po prawej stronie, aby uczynić wyświetlaną sieć bardziej atrakcyjną wizualnie. Wypróbuj także przycisk go-reason, aby zobaczyć, co się stanie. Wyjaśnij, co obserwujesz.

Ćwiczenie 9.8.4:

Spróbuj dodać wiedzę do własnego problemu do modelu reprezentacji wiedzy opisanego w części Ćwiczenie 9.8.2. Obserwuj, jak robisz to, problemy z formułowaniem wiedzy dla każdego z różnych typów reprezentacji wiedzy. Jakie są zalety lub wady stosowania różnych typów? Jak mogliby być poprawieni, biorąc pod uwagę zdobyte przez ciebie spostrzeżenia proces reprezentacji wiedzy? Czy istnieje jeszcze inny rodzaj reprezentacji wiedzy, który byłby lepiej przystosowany do tego zadania? Trzy przykładowe problemy poruszone w modelu NetLogo opartym na reprezentacji wiedzy są raczej problemami "zabawkowymi" niż rzeczywistymi. Wymienienie pełnej wiedzy i skalowanie do nietrywialnego świata rzeczywistego przedstawia wiele trudności i nadal jest aktywnym obszarem badań w Sztucznych Inteligencja. Jednak zaletą tych przykładów jest ich prostota i przydatność do zilustrowania tego, jak modele się różnią. Co należy zrobić, aby zwiększyć wiedzę na temat tych problemów do ich rzeczywistych odpowiedników - na przykład, identyfikując nazwę zwierzęcia podczas chodzenia po zoo, lub nazwę nowozelandzkiego ptaka podczas wędrówki po torze Milforda lub identyfikacja różnych typów jachtów widziany w porcie?

Ćwiczenie 9.8.5:

Wyjaśnij różnicę między rozumowaniem z wyprzedzeniem a uzasadnieniem, gdy reguły są wybrane jako KR-type dla modelu reprezentacji wiedzy. (Podpowiedź: Jednym ze sposobów odpowiedzi na to pytanie jest sprawdzenie, w jaki sposób są one zaimplementowane w kodzie NetLogo dla modelu).

9.9 Reprezentowanie wiedzy za pomocą reguł i logiki

Ćwiczenie 9.9.1:

Rozważ następujące zdania:

1. Piotr jest starcem.
2. Maryja jest siostrą Piotra.
3. Niektóre koty mają duże uszy.
4. Jeśli X jest siostrą Y, a Y jest chłopcem, to Y jest bratem X.
5. Simba jest białym słoniem.
6. Wszystkie słonie są ssakami.
7. Słonie mają pień i duże uszy.
8. Ruby to czarno-biały kot.
9. Ruby jest matką Pearl, a Pearl jest córką Ruby.
10. Niektóre koty są małe.
11. Wszystkie koty jedzą mięso.
12. Koty mają wąsy i ogon.

Przedstaw wiedzę zawartą w każdym z powyższych zdań, używając dwóch reprezentacji wiedzy paradygmaty - reguły produkcji i logika pierwszego rzędu. W których zdaniach masz problemy z kiedy próbuje reprezentować wiedzę i dlaczego?

Ćwiczenie 9.9.2:

Konwertuj następujące zdania logiczne predykatów na zdania angielskie:



Ćwiczenie 9.9.3:

Konwertuj następujące zdania na zdania logiczne predykatów:

(i) Wszystkie koty lubią ryby.
(ii) Banany są zielone lub żółte lub brązowe.
(iii) Niektórzy ludzie jedzą wszystko.

9.10 Powody używania reguł i logiki

Ćwiczenie 9.10.1:

Rozważmy następujący system ekspercki oparty na regułach:



i. Użyj łańcuchów do przodu, aby określić, czy fakt Z można wywnioskować z tej bazy wiedzy. Pokaż stan bazy danych i regułę, która została uruchomiona po każdym kroku w procesie wnioskowania.
ii. Użyj łańcucha wstecznego w tej samej bazie wiedzy, aby określić, czy cel Z się powiedzie. Pokaż stan bazy danych i regułę, która została dopasowana po każdym kroku w procesie wnioskowania.

9.11 Wiedza i rozumowanie za pomocą ramek

Ćwiczenie 9.11.1:

Przedstaw wiedzę zawartą w każdym z zdań do ćwiczenia 9.9.1 przy użyciu ramek i porównaj z rozwiązaniami, które opracowałeś dla reguł produkcji i logiki pierwszego rzędu. Z jakimi zdaniami masz problemy podczas próby reprezentowania wiedzy i dlaczego?

Ćwiczenie 9.11.2:

Zmodyfikuj model reprezentacji wiedzy, tak aby wiedza o klatkach była jednoznacznie zdefiniowana dla trzech problemów zaimplementowanych w modelu zamiast konwertowania z reguł (jak to się dzieje w procedurze convert-rules-to-frames-base). Konieczne będzie zmodyfikowanie procedury setup-frames-base tak, aby była podobna do procedury setup-semantic-network, a także zdefiniowanie procedury ramki do ustawiania dla zdefiniowania konkretnej ramki.

9.12 Znajomość i rozumowanie przy użyciu drzew decyzyjnych

Ćwiczenie 9.12.1:

Zmodyfikuj model reprezentacji wiedzy, tak aby wiedza o drzewku decyzyjnym została jawnie zdefiniowana dla trzech problemów zaimplementowanych w modelu zamiast przekształcania z reguł (jak to się dzieje w procedurze convert-rules-to-decision-tree). Będziesz musiał zdefiniować procedurę setup-decision-forest, podobna do procedury setup-semantic-network, a także zdefiniować procedurę setup-decision-tree dla zdefiniowania określonego drzewa decyzyjnego.

9.13 Znajomość i rozumowanie za pomocą sieci semantycznych

Ćwiczenie 9.13.1:

Wykonaj ponownie ćwiczenie 9.8.3, uruchamiając ponownie model reprezentacji wiedzy dla trzech różnych problemów (określonych przez selektor wyboru problemu) i różnych typów reprezentacji wiedzy (zgodnie z wyborem przez KR-type Chooser). Tym razem zwracaj szczególną uwagę na to, jak wiedza jest wizualizowana w środowisku dla różnych typów i obserwuj, co dzieje się podczas procesu wnioskowania, gdy naciśnięty zostanie przycisk go-reason. Które z nich wydają się łatwiej śledzić, co się dzieje? W szczególności zauważ, co dzieje się z typem rozumowania sieci semantycznych. Czy istnieje sposób na ulepszenie wizualizacji procesu rozumowania sieci semantycznych, czy też jest to nieodłączny problem z tego rodzaju reprezentacją wiedzy?



Powrót

  Inteligencja 

10.1 Natura inteligencji

Ćwiczenie 10.1.1:

Potencjał konwersacyjny i umiejętność rozwiązywania problemów są postulowane jako dwa ważne składniki dla ludzkiego poziomu inteligencji w tym rozdziale. Zaproponuj dalsze składniki i uzasadnij, dlaczego uważasz, że są one niezbędne do Twojego przepisu na inteligencję.

10.2 Inteligencja bez reprezentacji i rozsądku

Ćwiczenie 10.2.1:

Co rozumiemy przez "reprezentację" i "rozum", gdy mówimy o "inteligencji bez reprezentacji i rozumu"? Czy można uczciwie powiedzieć, że roboty podobne do owadów Brooksa i mrówki i termity w modelach mrówek i termitów nie "reprezentują" wiedzy i "powodu" w jakiś sposób? (W końcu "inteligencja" jest reprezentowana globalnie w całym systemie wieloagentowym, ale nie pojedynczo w każdym agencie.)

10.3 Co AI może i nie może zrobić

Ćwiczenie 10.3.1:

Napisz listę 10 zadań, które ludzie mogą wykonać, wymagające pewnego stopnia inteligencji. Sprawdź, czy istnieją systemy komputerowe, które mogą wykonać każde z zadań na liście. Jak dobrze radzą sobie przy każdym zadaniu? Czy są w stanie pomyślnie ukończyć zadanie? Do jakiego ludzkiego poziomu wydajności są zdolni - początkujący, średniozaawansowany czy ekspert?

10.4 Potrzeba zaprojektowania celów sztucznej inteligencji

Ćwiczenie 10.4.1:

Badania w A.I. literatura, jak definiuje się termin "inteligencja". Czy istnieją wyraźnie różne znaczenia tego terminu, czy też wszystkie one wywodzą się z tego samego ogólnego znaczenia? Czy publikacje dostarczają jakiegokolwiek uzasadnienia, dlaczego opisane systemy można nazwać "inteligentnymi"?

10.5 Jakie są dobre cele?

Ćwiczenie 10.5.1:

Opracuj własne cele dotyczące sztucznej inteligencji. Stań się swoim najgorszym krytykiem - przeanalizuj swoje cele, aby zobaczyć, czy są one INTELIGENTNE. Jakie atrybuty zawiodłeś? - czy są one specyficzne, czy są mierzalne, czy są możliwe do osiągnięcia, czy są realistyczne, czy wiążą się z czasem i tak dalej?

10.6 Niektóre cele projektowe w zakresie sztucznej inteligencji

Ćwiczenie 10.6.1: Czy myślisz o celach projektu wymienionych w rozdziale 10.6? Wyjaśnij swoje rozumowanie.

10.7 Ku wiarygodnym agentom

Ćwiczenie 10.7.1: Model Chatbot

Wypróbuj model Chatbot w NetLogo:

http://files.bookboon.com/ai/Chatbot.html

CO TO JEST?

Ten model implementuje dwa podstawowe czaty - Lizę i Harry′ego. Te zostały nazwane na cześć ich bardziej znanych odpowiedników, Eliza i Parry. W przeciwieństwie do Elizy, Liza nie próbuje być Rogerianem, ale Harry stara się być trochę paranoikiem, jak Parry.

JAK TO DZIAŁA

Model korzysta z rozszerzenia do NetLogo o nazwie "re" dla wyrażeń regularnych. Rozszerzenie umożliwia programistom w NetLogo określenie i dopasowanie wyrażeń regularnych. W kodzie NetLogo komenda setuprule służy do określenia wyrażenia regularnego i listy możliwych odpowiedzi chatbota. Jeśli chatbot dopasuje odpowiedź użytkownika do wyrażenia regularnego w regule, wówczas wybierze jedną z odpowiedzi z listy odpowiedzi.Rozszerzenie re dodaje następujące polecenia do NetLogo:

- compile-pattern: kompiluje wzór wyrażenia regularnego przekazywany jako pierwszy argument.
- set-target: Ustawia docelowy ciąg, który chcesz wyszukać, do określonego przez pierwszy argument.
- run-matcher: Próbuje dopasować wyrażenie regularne w ciągu docelowym.
- get-group-length: Zwraca liczbę grup.
- get-group: Zwraca pozycję w grupie na pozycji określonej przez pierwszy argument.
- get-starts-length: Zwraca długość startów.
- get-starts: Zwraca pozycję rozpoczynającą się od pozycji określonej przez pierwszy argument.
- get-ends-length: Zwraca długość końców.
- get-ends: Zwraca pozycję na końcach w pozycji określonej przez pierwszy argument.
- clear-all: Usuwa wszystkie zmienne. - setup-regex: Ustawia kompletny system wyrażeń regularnych i wyszukuje temat określony jako pierwszy argument.

JAK TEGO UŻYĆ

Najpierw naciśnij przycisk setupi w Interfce - to załaduje zasady dla każdego chatbota. Następnie wybierz chatbota, z którym chcesz rozmawiać za pomocą wybieraka bota - "liza", "harry" lub "oba". Następnie zacznij czat naciskając przycisk czatu.

INTERFEJS

Przyciski Interface są zdefiniowane w następujący sposób:

- setup: ładuje reguły dla każdego chatbota.
- chat: rozpoczyna lub kontynuuje rozmowę z chatbotem, który został wybrany przy użyciu wybieraka bota.
Przełącznik interfejsu i przełącznik są zdefiniowane w następujący sposób:

- bot: Ustawia chatbota na chatbot Liza, chatbota Harry′ego lub Both.
- debug-conversation: jeśli ta opcja jest ustawiona na On, drukowane są również informacje debugowania pokazujące, które reguły są zgodne.

RZECZY DO NOTYFIKACJI

Wydaje się, że Harry lepiej radzi sobie z paranoją, niż Liza jako bycie psychoterapeutą Roger. Ten drugi też często powtarza rzeczy. Jednak rozmowa z dwoma chatbotami nie trwa długo.

RZECZY DO SPEŁNIENIA

Wypróbuj różne czaty, zmieniając wybór bota. Czy Liza wydaje się mieć inną osobowość niż Harry, czy też Obaj różnią się od pozostałych dwóch? Spróbuj zmienić chatbot w trakcie rozmowy. Oczywiście zdolności konwersacyjne wszystkich trzech chatbotów są słabe. Ale możesz wymyślić taką rozmowę wydaje się wiarygodny. Co teraz stało się wiarygodne? Czy możesz zmienić chatboty, aby to zrobić automatycznie?

ROZSZERZENIE MODELU

Spróbuj dodać własne reguły do chatbotów. Konieczne może być ustawienie przełącznika debug-conversation na On, aby dowiedzieć się, dlaczego niektóre z nowych reguł nie działają. Pamiętaj, że kolejność przetwarzania reguł jest bardzo ważna - wcześniejsza reguła, która pasuje, zastąpi ostatnią regułę, w wyniku czego ta ostatnia nigdy nie wejdzie w życie. Uważaj więc, gdzie umieszczasz swoją regułę. Czy możesz wymyślić sposób na uniknięcie tego problemu?

CECHY NETLOGO

Model demonstruje użycie rozszerzenia, w którym kod jest napisany w Javie.

Ćwiczenie 10.7.2:

Opisz, jak możesz budować agenta konwersacji, aby zdać test Turinga. Jakie są główne przeszkody, które należy przezwyciężyć? Czy uważasz, że podejście podobne do Elizy opiera się na użyciu wyrażeń regularnych odpowiednich do rozwiązania tego problemu?

10.8 W stronę komputerów ze zdolnością rozwiązywania problemów

Ćwiczenie 10.8.1: Model ruchomy płynący w wodzie

Wypróbuj model Water Flowing Uphill w NetLogo:

http://files.bookboon.com/ai/Water-Flowing-Uphill.html

CO TO JEST?
Ten model próbuje wizualnie symulować jedno możliwe rozwiązanie problemu próbowania doprowadzenia wody do przepływu w górę. Rozwiązaniem jest używanie zbiorników lub zbiorników na wzrastających wysokościach i uzupełnianie ich jednym po drugim. Zawór odcinający (pokazany na niebiesko na końcu rur łączących między zbiornikami w modelu) służy do zapobiegania napełnianiu zwrotnemu zbiorników - gdy woda porusza się przez zawór, nie może płynąć do tyłu. Różne metody próbują symulować jak płynie "woda". Wszystkie te metody są porażkami, niektóre z nich wytwarzają dziwne efekty, które są niemożliwe w rzeczywistym świecie. Czytelnik jest zachęcany do dodawania własnych metod, które lepiej przybliżają przepływ wody w prawdziwym życiu.

JAKI JEST CEL?

Celem tego modelu jest narysowanie analogii między pozornie niemożliwym zadaniem (próbowaniem doprowadzenia wody do przepływu pod górę) a tym, co niektórzy twierdzą, że jest również niemożliwe (tworzenie Sztucznej Inteligencji). W przypadku obu tych zadań możemy spróbować znaleźć rozwiązania, które w jakiś sposób mogą zmienić problem, lub możemy spróbować zmienić fizyczne właściwości wszechświata (np. Działać w środowisku wirtualnym, ale nie zadziała po przeniesieniu do prawdziwe środowisko), lub możemy stworzyć iluzję (tzn. wyglądałoby na to, że problem został rozwiązany, ale jak magia, byłoby to po prostu podstępem). Drugim celem jest uwydatnienie procesu rozwiązywania problemów, w którym ludzie są bardzo dobrzy. . Żaden program komputerowy nie jest w stanie stworzyć różnorodnych rozwiązań pokazanych w tym modelu. Za to co ważne, żadne programy komputerowe nie są w stanie zrozumieć samego problemu.

JAK TO DZIAŁA

Model ten implementuje różne typy agentów, aby spróbować symulować przepływ wody - środki żółwia, łaty, środki będące żywicielami (z pracy Craiga Reynoldsa) ze stożkiem widzenia i środki cząsteczkowe, które symulują prędkość każdej cząstki i biorą pod uwagę lepkość, wiatr i grawitacja. Żadne z tych rozwiązań nie działa, tzn. Nie zachowują się tak jak woda.

JAK TEGO UŻYĆ

Naciśnij przycisk setup-environment w Interfce, aby zresetować symulację. Następnie wybierz jedno z rozwiązań za pomocą wybieracza solution. Zobacz, co się dzieje po naciśnięciu przycisku go-simultion.

INTERFEJS

Przyciski interfejsu modelu są zdefiniowane w następujący sposób:

- setup-simultion: spowoduje zresetowanie symulacji do stanu początkowego, w którym wszystkie zbiorniki nie zawierają wody, a kran jest wyłączony.

- go-simulation: Włącza kran, a środki symulujące kropelki wody zaczynają spływać w dół z kranu do pierwszego zbiornika po lewej stronie.

Suwaki, przełączniki i selektor modelu Interface są zdefiniowane w następujący sposób:

1. W przypadku, gdy zmienna solution jest ustawiona na "agent żółwia 1" lub "agnt żółwia 2":
- drops-per-tick: Jest to liczba kropli, które pojawią się po dotknięciu każdego tiknięcia.
- size-of-drop: Jest to wielkość każdej kropli.
- shape-of-drop: To kształt każdej kropli. Możliwe kształty to "drop", "circle", "square" i "hex".

2. W przypadku, gdy zmienna slution jest ustawiona na "boid agents 1":

- rate-of-random-turn: To kontroluje, jak dużo boid obraca losowo każdy tick .
- rdius-angle i radius-length: Określa stożek widzenia boidów.
- boid-speed: Określa, w jakim stopniu boidy powinny przesuwać każdy tik. boid-bounce: Określa, w jakim stopniu boidy powinny odbijać się, gdy uderzą w ściany zbiornika lub ziemię.

3. W przypadku, gdy zmienna solution jest ustawiona na "particle agents 1":

- max-particles: Określa maksymalną liczbę cząstek i może być użyty do kontrolowania, ile cząstek wydostaje się z kranu.
- initial-velocity-x and initial-velocity-y: Określa początkową prędkość cząstki w kierunkach x i y.
- initial-range-x: Daje to pewną losową zmienność prędkości w kierunku x.
- restitution-constant: Ta opcja może być wykorzystana do kontrolowania tego, ile odskoczy z tłumieniem podłogi, gdy cząstka dotknie dna zbiornika.
- gravity-constant: służy do skalowania siły grawitacji zgodnie z masą cząstki, symulując w ten sposób efekt oporu powietrza.
- viscosity-constant: Można tego użyć do symulacji efektu lepkości.
- rate: kontroluje szybkość emisji cząstek.
- step-size: nowe położenie i prędkość każdej cząstki oblicza się przez pomnożenie sił przez tę liczbę. Ticki również przesuwają się o tę liczbę.
- wind-velocity-x and wind-velocity-y: Określa prędkość wiatru w kierunkach x i y.

RZECZY DO NOTYFIKACJI

Gdy wybrane solution w Interface jest ustawione na "agent żółwia 1", agenci zachowują się trochę jak woda, ale nie rozpościerają się na dole. Czemu? W jaki sposób można zmienić ich zachowanie, aby rozwiązać problem? Gdy wybrane rozwiązanie interfejsu jest ustawione na "agent żółwia 1", agenci zachowują się trochę jak śnieg. Czemu? Jak można zmienić ich zachowanie, aby zachowywały się bardziej jak woda? Gdy wybrane solution w Interfce jest ustawione na "agenci poprawek 1", agenci nie przepływają poprawnie po prawej stronie. Czemu? W jaki sposób można zmienić ich zachowanie tak, aby prawy bok zbiornika wypełnił się prawidłowo, a następnie przepłynął przez rurę łączącą do następnego zbiornika i tak dalej? Gdy wybrane solution w Interface jest ustawione na "agenci poprawek 2", "agenci poprawek 3" lub "agentów poprawek 4", symulacje kończą się niepowodzeniem. Czy któreś z nich można uratować, aby znaleźć możliwe rozwiązanie? Gdy wybrane solution w Interface jest ustawione na "boid agents 1", agenci zachowują się trochę jak malowanie natryskowe w niektórych konfiguracjach. Czemu? Ponadto, podobnie jak rozwiązanie "turtle agent 1", nie rozpościerają się na samym dole. Czemu? W jaki sposób można zmienić ich zachowanie, aby rozwiązać problem? Jak można zmienić ich zachowanie, aby zachowywały się bardziej jak woda? Kiedy roztwór wybieraka w interfejsie jest ustawiony na "agent cząsteczek 1", agenci przechodzą przez otaczającą Ziemię. Czemu? Jak można zmienić ich zachowanie, aby zachowywały się bardziej jak woda?

RZECZY DO SPEŁNIENIA

Wypróbuj każde z rozwiązań, aby zobaczyć, co się dzieje. Kto wydaje się być najbliżej tego, co dzieje się w rzeczywistości? Spróbuj zmienić wartości suwaków, aby zobaczyć jaki mają wpływ na poszczególne roztwory (turtle agents solutions 1 i 2, patch agents solution 1, boids agents solution 1 and particle agents solution 1). Gdy zmienna rozwiązania jest ustawiona na "participle agents 1", spróbuj przesuwać suwak "max-particles" w tę i z powrotem. Skutkiem tego jest to, że kran wydaje się tymczasowo włączany i wyłączany.

ROZSZERZENIE MODELU

Spróbuj opracować własne rozwiązanie, które będzie dokładniej symulować przepływ wody. Przestrzegaj procesu rozwiązywania problemów, który zastosujesz, aby znaleźć rozwiązanie. Czy możliwe byłoby opracowanie programu komputerowego, który będzie replikować twoje zachowanie?

Ćwiczenie 10.8.2:

Uruchom model Water Flowing Uphill NetLogo i ustaw wybieracz rozwiązań na "agent cząsteczek 1". Uruchom symulację, naciskając przycisk "Setup-environment", a następnie przycisk gosimulation. Obserwuj, jak cząsteczki zaczynają "płynąć" pod górę, jakoś radzą sobie z tunelowaniem przez otaczającą glebę, zupełnie jak w prawdziwym życiu. Spójrz na kod, który zostanie wykonany, gdy tak się stanie. Sprawdź, czy możesz określić, co powoduje, że agenci mogą tunelować, i spróbuj znaleźć sposób rozwiązania tego problemu, aby agenci zachowywali się tak, jak robią to w rzeczywistości.



Powrót