Zadania 

Ć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ć

  1. projektując/tworząc je ręcznie (neuroinżynieria, inżynieria genetyczna),
  2. definiując odpowiednią funkcję celu i uruchamiając ewolucję,
  3. łą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.


  1. Maskowanie/odmaskowanie tonu. Modelowanie eksperymentu z maskowaniem/odmaskowaniem sygnału w sytuacji dwuusznej (binaural) prezentacji dźwięków.
  2. 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.
  3. 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ą.
  4. 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ę.
  5. 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ę.
  6. 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.
  7. 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).
  8. Sumo. Modelowanie walki dwóch framsticków np. na zasadzie przepychania się poza wyznaczony obszar.
  9. 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.
  10. Matematyk. Modelowanie framsticka, ktory będzie dodawać i odejmować. Należy wykorzystać kolory światła do kodowania liczb i znaków matematycznych.
  11. 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.
  12. 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ł.
  13. 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.

  14. 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.

  15. 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).

  16. 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).

  17. 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, ...)
  18. 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.
  19. Ż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).
  20. Nietykalny. Organizm który posiada kilka czułków (z receptorem T) i kiedy czegoś dotknie (np. ściany), odwraca swój kierunek ruchu.
  21. Znam, znam. Zamodeluj efekt primingu dla dwóch rodzajów bodźców.
  22. 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.
  23. Ratunku! Zbuduj Framstika, który stara się uciec kiedy wyczuje nad sobą pożywienie.
  24. Pik! Zbuduj neuron impulsowy i prostą sieć złożoną z kilku takich neuronów, wykonującą jakieś proste zadanie.
  25. McGurk. Zamodeluj efekt McGurka - wzajemny wpływ bodźców dwóch różnych modalności.
  26. 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]
  27. 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.