Ćwiczenia pomocnicze
Przeczytaj o sposobach komunikacji, przeanalizuj (i przetestuj) źródła threshold.neuro, smell_food.neuro, noisy.neuro, light.neuro, seelight.neuro, seelight2.neuro, sposób komunikacji w boids.expdef, źródło learn_food.expdef, genotyp i komunikację z fireflies.show.
Kilka przygotowujących ćwiczeń rozszerzających tutorial:
- zrób dwa stworki z których jeden będzie okresowo migał, a drugi odbierał ten sygnał i zginał mięsień w reakcji na "światło".
- zmodyfikuj jakiegoś chodzącego stworka, żeby się zatrzymywał kiedy padnie na niego światło innego stworka (światło jest tu sygnałem który równie dobrze może być traktowany jako dźwięk czy zapach...).
- zrób dwa stworki przekazujące sobie ciągle informację o swoim poziomie energii (jak są "najedzone"), i tylko ten który ma więcej energii macha nóżką.
- zmodyfikuj
learn_food.expdef
tak, żeby w momencie zetknięcia dwóch stworków oba zwyczajnie uśredniały pozycję jabłka jaką pamiętają (normalna średnia zamiast ważonej która jest obecnie). - zrób stworka który zgina nóżkę tylko w reakcji na trzy krótkie, następujące po sobie błyski światła jakie widzi (receptorem
SeeLight
) - raz w jedną, raz w drugą stronę. - stwórz/wyewoluuj organizm który będzie się dobrze nadawał do eksperymentów, w których organizmy mają się poruszać. Powienien sprawnie chodzić, być możliwie prosty, zrozumiały i łatwo sterowalny (skręcaniem w lewo/prawo). Możesz ulepszyć któryś z pliku walking.gen lub zbudować coś prostszego.
Zadania
We wszystkich zadaniach oprócz "Wizualizacja przestrzeni poznawczej" celem jest uzyskanie organizmów (genotypów) realizujących opisaną sytuację. Można takie organizmy uzyskać
- projektując/tworząc je ręcznie (neuroinżynieria, inżynieria genetyczna),
- definiując odpowiednią funkcję celu i uruchamiając ewolucję,
- łącząc i mieszając dwa powyższe podejścia (np. projektując ciało i ewoluując mózg, albo tylko wagi zaprojektowanej sieci neuronowej).
Może się okazać, że wymagane będzie utworzenie własnych rodzajów neuronów (receptorów/efektorów) - jeśli dostępne już neurony okażą się niewystarczające.
Prawdopodobnie wszystkie zadania oprócz ,,życiowej wyprawy'' najłatwiej zrealizować korzystając z pierwszego podejścia.
- Maskowanie/odmaskowanie tonu. Modelowanie eksperymentu z maskowaniem/odmaskowaniem sygnału w sytuacji dwuusznej (binaural) prezentacji dźwięków.
- Ułamek Webera. Modelowanie detekcji zmiany intensywności/długości/wielkości bodźca. Zgięcie mięśnia może sygnalizować zauważenie zmiany (różnicy pomiędzy bodźcami). Bodźcem może być światło. Percepcja różnic pomiędzy bodźcami wyrażana jest ułamkiem Webera.
- Funkcja psychometryczna dla progu absolutnego. Modelowanie detekcji bodźca. Im mniejsza jest intensywność/długość/wielkość bodźca, tym mniejsza szansa jego detekcji. Funkcja opisująca tą zależnośc jest liniowa. Sygnał na wyjściu sieci to reakcja na obecność/brak bodźca. Prawdopodobieństwa reakcji mają rozkładac się zgodnie z funkcją liniową. Dla ambitnych: prawdopodobieństwo rozkłada się zgodnie z krzywą ogive – funkcją sigmoidalną.
- Alfabet Morse'a. Wymyślenie prostego (3-4 wyrazowego) języka, który będzie funkcjonował jako zestaw komend dla framsticka. Siec ma 1 neuron na wejściu – reagujący na obecność światła. Reakcjami na komendy mogą być np. okreslone ruchy lub zmiana kierunku poruszania się.
- Tagi. Modelowanie reagowania na komendy sygnalizowane przez 3-4 elementy (np. światła) ułożone w różnych konfiguracjach. Wszystkie sloty komendy są emitowane jednocześnie (sieć może mieć 3-4 wejść, tyle, ile jest przewidzianych elementów). Reakcjami na komendy mogą być np. okreslone ruchy lub zmiana kierunku poruszania się.
- Zegarek (dla 1 osoby). Zamodeluj pomiar czasu. Framstick ma byc w stanie porównać dwa jednocześnie emitowane bodźce i zasygnalizować, który z nich był dłuższy.
- Tancerz. Modelowanie rytmicznego ruchu. Wymaga skonstruowania framsticka, który rytmicznie, sekwencyjnie, podnosiłby kończyny/części ciała (naprzemiennie w parach, lub po kolei jeśli byloby ich więcej, niż 2).
- Sumo. Modelowanie walki dwóch framsticków np. na zasadzie przepychania się poza wyznaczony obszar.
- Do najbliższego. Stworzenie sieci neuronowej sygnalizującej, ktory z trzech bodźców (światło) jest najbliżej. Framstick ma poruszać się w stronę najbliższego bodźca.
- Matematyk. Modelowanie framsticka, ktory będzie dodawać i odejmować. Należy wykorzystać kolory światła do kodowania liczb i znaków matematycznych.
- Gdzie są wszyscy? Modelowanie zachowań zwierząt stadnych. Framstick, który jest dalek od reszty stada zaczyna emitować dźwięk, który przyciąga inne osobniki. Do oceny odległości pomiędzy framstickami można użyć neuronu Smell.
- Priming. Modelowanie torowania. Framstick szybciej reaguje na dany rodzaj bodźca, jeśli bezpośrednio przed nim lub w oddzielony maską (maską może byc inny bodziec) wystąpił taki sam typ bodźca. Można skorzystać z kolorów światła (flavor) lub sekwencji świateł.
- Szalone stado*. Na bazie learn_food: stwory (punktowe) poruszają się ze stałą prędkością, każdy nadaje informacje o tym jak nisko jest (współrzędna Z świata w miejscu w którym się znajduje), i odbiera taką samą informacje od sąsiadów. Co krok zmienia swój kierunek ruchu o stałe "delta", kierując się w stronę "najwyższą", bazując na otrzymanych sygnałach.
Wskazówki: Używamy jednego kanału do komunikacji, odbiornik odbiera tablicę sygnałów ze swojego otoczenia (określamy próg odległości w odbiorniku, tak jak w seelight2.neuro). Wybór kierunku ruchu dla każdego organizmu ma być określony skryptem – na podstawie sygnałów odbieranych przez niego z otoczenia. Świeci proporcjonalnie do wysokości na jakiej jest. Ruch można zrealizować przez własny efektor (*.neuro) który ustawia kierunek ruchu organizmu.
- Nieśmiałe stado*. Każdy organizm świeci stałym światłem i leci tam, gdzie jest najciemniej. Granice świata typu "teleport".
Wskazówki: Organizm może być kółeczkiem które ma np. 8 receptorów SeeLight rozmieszczonych wokoło. Kieruje się w stronę najsłabszego sygnału. Ruch można zrealizować przez własny efektor (*.neuro) który ustawia kierunek ruchu organizmu.
- Tylko we dwoje*. W świecie ożywiamy dowolną liczbę organizmów (wszystkie z tego samego genotypu). Ich zadaniem jest dobrać się w stałe pary (nie muszą się poruszać, chodzi tylko o komunikację). Liczba organizmów może się dynamicznie zmieniać (możemy ożywiać nowe, usuwać istniejące). W wersji zaawansowanej tego zadania pary, po ustaleniu, mogą przemieszczać się do siebie.
Wskazówki: Przykładowa realizacja: kazdy osobnik ogłasza (wysyła, komunikuje) swój stan (swój unikalny ID, ID pary, lub brak); każdy bada sąsiedztwo, jeśli sąsiad ma tą samą parę to rezygnuje z niej, a jeśli sąsiad nie ma pary to łączy się z nim. Albo organizmy wysyłają do siebie potwierdzenie/zgodę, i dalej przestają wysyłać jakiekolwiek sygnały (ale wtedy nie wiedzą czy drugi ciągle istnieje).
- Pomóż mi. Dwa (być może różne) organizmy, jeden z nich ma wejść na wysoki schodek przy pomocy drugiego. Komunikacja ma służyć ustaleniu miejsca obu organizmów oraz synchronizacji ruchów (jeden powinien znieruchomieć w odpowiednim miejscu, drugi powinien po nim wejść).
Wersja uproszczona: dwa organizmy mają wyczuć siebie i poruszać się w swoim kierunku (podobnie jak "food finder'y"), kiedy się dotkną/zbliżą, jeden powinien znieruchomieć, może się rozpłaszczyć? Do rozważenia użycie symulatora ODE (bryły sztywnej, dokładniejsze wykrywanie kolizji między elementami ciała).
- Migacze. Ożywiamy parę identycznych organizmów. Na zmianę wysyłają coraz dłuższe sekwencje impulsów (A zaczyna jednym mignięciem, B mruga dwa razy, A trzy, B, cztery, ...)
- Rób tak, jak ja. Organizmy o budowie segmentowej (X[|]X[|]X[|]X[|]X[|]...) sterują wszystkimi swoimi mięśniami tym samym sygnałem. Nadają "w eter" informację o wielkości swojego ciała (numparts) oraz informację o wartości sygnału, jakim sterują mięśniami. Sygnał ten pochodzi z ich własnego generatora sinusoidalnego chyba, że... organizm odbiera sygnały od innego, większego organizmu - wtedy używa tego odbieranego sygnału.
- Życiowa wyprawa*. Użyj ewolucji by uzyskać organizmy które maksymalizują dystans przebyty podczas życia, i minimalizują odległość pomiędzy miejscem narodzin i śmierci. Zaprojektuj odpowiednią funkcję oceny (dopasowania do środowiska).
- Nietykalny. Organizm który posiada kilka czułków (z receptorem T) i kiedy czegoś dotknie (np. ściany), odwraca swój kierunek ruchu.
- Znam, znam. Zamodeluj efekt primingu dla dwóch rodzajów bodźców.
- Prawie wieczność. Zamodeluj pomiar czasu. Na wejściu sieci neuronowej pojawiają się dwa bodźce (jeden po drugim), wyjście ma pokazać, który z nich był dłuższy.
- Ratunku! Zbuduj Framstika, który stara się uciec kiedy wyczuje nad sobą pożywienie.
- Pik! Zbuduj neuron impulsowy i prostą sieć złożoną z kilku takich neuronów, wykonującą jakieś proste zadanie.
- McGurk. Zamodeluj efekt McGurka - wzajemny wpływ bodźców dwóch różnych modalności.
- Wizualizacja przestrzeni poznawczej wybranego poruszającego się organizmu w różnych warunkach środowiskowych (woda, ląd, ściana...): każdy receptor tworzy jeden wymiar, sygnały z wszystkich receptorów tworzą punkt w tej wielowymiarowej przestrzeni [inspiracja]
- Własna propozycja – po uzgodnieniu z prowadzącym.
Aby uniknąć zatrzymania się na jakimś problemie można wysyłać pytania mailem do IB, KM, MK.