Wybierz język interfejsu programu:
Ogólny opis symulacji
Zadaniem programu jest demonstracja grupowego zachowania osobników - ptaków w kluczu. Każdy osobnik kieruje się prostymi regułami o zasięgu lokalnym, nie wiedząc jednocześnie nic o zachowaniu grupy jako całości. Zachowanie całej grupy staje się w efekcie złożone.

rys.1. Klucz
Każdy osobnik stara się:
- utrzymywać podobną prędkość co jego sąsiedzi,
- nie zderzać się z sąsiadami,
- nie oddalać się zbytnio od sąsiadów.
Zasady symulacji
Każdy osobnik modyfikuje swoje zachowanie w oparciu o obserwację trzech sąsiadów:
- lewego sąsiada,
- lidera – najbliższego osobnika przed nim,
- prawego sąsiada.

rys.2. Sąsiedzi osobnika
(zaznaczono kierunek lotu)
Jeżeli osobnik nie posiada lidera, staje się liderem grupy, zachowując zadany kierunek lotu. W ten sposób grupa jako całość posiada zawsze pewne ukierunkowanie i można obserwować zachowanie osobników w jej wnętrzu. Takie założenie wynika bezpośrednio z obserwacji natury – osobniki prowadzące kierują się dodatkowymi bodźcami, dzięki czemu wiedzą, jaki zachowywać kierunek lotu. Wpływ tych bodźców nie jest istotny dla celów symulacji zachowania grupowego.
- Osobnik stara się zachowywać średnią ważoną prędkości trzech wyróżnionych sąsiadów (standardowe wagi: 1/2/1).
- Osobnik modyfikuje swoją prędkość tak, aby nie zbliżać się nadmiernie do swych sąsiadów (osobniki posiadają zróżnicowane preferencje co do utrzymywanej odległości).
- Osobnik modyfikuje swoją prędkość tak, aby nie oddalać się nadmiernie od swych sąsiadów.
- Liderzy grupy posiadają ograniczone możliwości ("męczą się"), po których przekroczeniu wycofują się, a ich miejsce przejmują inne osobniki.
- Każdy osobnik posiada maksymalną prędkość, jaką może osiągnąć.
- Do ruchu każdego osobnika wprowadzone są pewne losowe zaburzenia.
Implementacja
Przebieg symulacji. Dla każdego osobnika X wykonaj:
- Wyszukaj najbliższych sąsiadów osobnika X. Przechowaj ich indeksy (S1, L, S2) oraz odległości kwadratowe od osobnika X (S1D, LD, S2D).

rys.3. Najbliżsi sąsiedzi
- Losowo wybierz jednego z sąsiadów bocznych (S1 albo S2) do wykorzystania w danej iteracji.
- Jeżeli osobnik X nie posiada lidera (sam jest liderem), zwiększ parametr zmęczenia T. W przeciwnym wypadku zmniejszaj T. Jeżeli przekroczono poziom krytyczny zmęczenia, zmniejsz prędkości VX oraz VY o 5%.
- Jeżeli osobnik X znajduje się zbyt blisko sąsiadów (pomiar następuje niezależnie w osi X oraz osi Y), zmniejszaj odpowiednio prędkości VX, VY.
- Jeżeli osobnik X znajduje się za daleko od sąsiadów (pomiar następuje niezależnie w osi X oraz osi Y), zwiększaj odpowiednio prędkości VX, VY.
- Oblicz średnie ważone prękości sąsiadów i przechowaj je w MVX, MVY. Modyfikuj VX o 10% różnicy pomiędzy MVX a VX. Modyfikuj VY o 10% różnicy pomiędzy MVY a VY.
- Jeżeli osobnik X przekroczył dopuszczalną prędkość kwadratową, zmniejsz o 25% prędkości VX, VY.
- Jeżeli osobnik X znajduje się zbyt blisko przeszkody (kursora myszki), modyfikuj jego prędkości VX, VY. Zmniejszaj VX i zwiększaj VY albo zmniejszaj VY i zwiększaj VX (w zależności od położenia przeszkody).

rys.4. Omijanie przeszkody
- Wprowadź losowe zaburzenia do prędkości VX, VY.
- Przemieść osobnika X zgodnie z prędkościami VX, VY.
Opcje programu
| randomize on/off |
Włącza/wyłącza losowe zaburzenia do ruchu osobników. |
| rescale |
Zmienia rozmieszczenie osobników tak, aby cała grupa była widoczna na ekranie. |
| center on/off |
Włącza/wyłącza ustawienie widoku na środek grupy. |
| step on/off |
Włącza/wyłącza krokowe odświeżanie ekranu (przerysowywanie co 100 kroków symulacji). Włączenie krokowego odświeżania przyspiesza działanie programu. |
| update |
Przerysowuje ekran. |
| left-/left+ |
Zmniejsza/zwiększa wagę prędkości lewego sąsiada. |
| leader-/leader+ |
Zmniejsza/zwiększa wagę prędkości lidera. |
| right-/right+ |
Zmniejsza/zwiększa wagę prędkości prawego sąsiada. |
| lead time-/lead time+ |
Zmniejsza/zwiększa czas prowadzenia liderów grupy. |
| mouse on/off |
Włącza/wyłącza wpływ kursora myszki na zachowanie ptaków. Jeżeli opcja jest aktywna, osobniki starają się nie zbliżać do punktu wskazywanego przez kursor. |
| mark leaders |
Umożliwia zaznaczenie na czerwono liderów grupy. |
| pause |
Umożlwia chwilowe zatrzymanie symulacji. |
| restart |
Uruchamia symulację od początku. |
| quit |
Kończy działanie programu. |