*** Symulacja korków ulicznych v3.1 (23.12.2002) *** (c) 2002 Drużyna Turnieju Młodych Fizyków z XIV LO im. Stanisława Staszica w Warszawie Autor: Marek "March" Szyprowski i inni (http://tmf.staszic.waw.p/) Program ten symuluje ruch samochodów wykorzystując tzw. automat komórkowy. Symulację można obejrzeć w postaci graficznej, jak i wykorzystać do generowania statystyk. Program był używany do opracowania rozwiązania zadania nr 6 ("Korki" na szosach) na Turnej Młodych Fizyków w roku 2002. *** Licencja *** Niniejszy program jest wolnym oprogramowaniem; możesz go rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez Fundację Wolnego Oprogramowania - według wersji 2 tej Licencji lub (według twojego wyboru) którejś z późniejszych wersji. Niniejszy program rozpowszechniany jest z nadzieją, iż będzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji sięgnij do Powszechnej Licencji Publicznej GNU (plik "gpl.txt"). *** Założenia wykorzystanego modelu *** - samochody poruszają się zgodnie z polskimi zasadami ruchu drogowego - długość pojedynczej komórki równa jest długości samochodu i wolnej przestrzeni przed i za samochodem - wszystkie komórki mają taką samą wielkość (pominięte są różnice wielkości między samochodami) - na drodze nie ma żadnych przeszkód (skrzyżowania, światła, rozgałęzienia, etc.) - samochody jeżdżą "w kółko" - z ostatniej komórki samochody przejeżdżają na pierwszą komórkę - samochody nigdy nie zderzają się - początkowe ustawienie i prędkości samochodów są losowane *** Zasady działania użytego modelu *** - w każdym kroku samochody przesuwają się do przodu o ilość komórek równą ich prędkości - samochód hamuje, jeżeli przed nim nie ma odpowiedniej ilości miejsca, tak aby się nie zderzyć (lub jeszcze silniej - ze zdefiniowanym prawdopodobieństwem) - samochód przyspiesza, jeżeli przed nim jest odpowiednio dużo miejsca (ze zdefiniowanym prawdopodobieństwem) - jeżeli jest więcej niż jeden pas ruchu, samochody mogą zmieniać pasy - samochód zmienia pas na bardziej lewy jeżeli będzie na nim miejsce do wyprzedzenia samochodu znajdującego się przed nim samym - samochód wraca na prawy pas jeżeli jest to tylko możliwe *** Dostępne opcje programu *** (skrót - w nawiasach [] podane są domyślne wartości) -h - Wyświetla ten pomocniczy tekst -p x - Ilość pasów (1 - 8) [2] -l x - Ilość komórek na pas [60] -n x - Początkowa ilość samochodów [20] -N x - Końcowa ilość samochodów [0] -v x - Dolna maksymalna prędkość [5] -V x - Górna maksymalna prędkość [5] -a x - Początkowa sprawność kierowców (0.0 - 1.0) [0.500000] -A x - Końcowa sprawność kierowców (0.0 - 1.0) [0.000000] -d x - Pole widzenia kierowców [8] -s - Włączenie trybu "statystyka" -o x - Nazwa pliku do zapisania statystyk ["statystyka.txt"] -r x - Ilość rozbiegowych ramek [32] -t x - Ilość ramek do zliczenia statystyki [64] -k x - Ilość kroków przy zmianie parametrów [10] -f x - Prędkość symulacji graficznej (0 - 10) [4] -F - Uruchomienie programu w trybie pełnoekranowym -x - Włączenie śledzenia samochodu -y x - Ziarno dla generatora liczb losowych [0] Opis opcji: -p x Ustawia na x ilość pasów, po których mają poruszać się samochody -l x Ustawia x komórek na każdy z pasów, po których poruszają się samochody -n x Ustawia na x (przy trybie statystyka - początkową) ilość samochodów -N x Tylko w trybie statystyka: Ustawia na x końcową ilość samochodów -v x Ustawia dolną granicę maksymalnej prędkości samochodów na x -V x Ustawia górną granicę maksymalnej prędkości samochodów na x -a x Ustawia na x (przy trybie statystyka - początkową) sprawność kierowców -A x Tylko w trybie statystyka: Ustawia na x końcową sprawność kierowców -d x Ustawia na x pole widzenia kierowców -s Przełącza program w tryb statystaka -o x Ustawia nazwę pliku, do którego zapisane zostaną statystyki (domyślnie "statystyki.txt") -r x Tylko w trybie statystyka: Ustawia ilość ramek rozbiegowych na x (ramki rozbiegowe nie są liczone w statystykach - w celu ustabilizowania układu przed rozpoczęciem zliczania statystyk) -t x Tylko w trybie statystyka: Ustawia ilość ramek, w czasie których zliczane są statystyki, na x -k x Tylko w trybie statystyka: Ustawia ilość kroków, w ilu zmieniane mają być parametry układu (zmienne parametry: ilość samochodów lub sprawność kierowców) -f x Tylko w trybie graficznym: Ustawia prędkość symulacji graficznej (0 - sterowanie reczne; 10 - najszybciej jak można) -F Tylko w trybie graficznym: uruchomienie symulacji na pełnym ekranie -x Tylko w trybie graficznym: uruchomienie symulacji z włączonym śledzeniem jednego z samochodów -y x Ustawia na x ziarno dla generatora liczb losowych (0 - ziarno pobierane jest z zegara czasu rzeczywistego) *** Tryb symualcji graficznej - opis *** Ekran podzielony jest na 3 części. Środkowa część to graficzna reprezentacja komórek, z których złożone są pasy ruchu. Każdy pas ma przypisany inny kolor: od niebieskiego - lewy pas do czerwonego - pas prawy. Komórki, w których nie ma samochodu mają kolor szary. W dolnej części znajduje się diagram przedstawiający zmiany na każdym z pasów w czasie. W dolnej linii tego diagramu rysowany jest aktualny wygląd każdego pasa ruchu, po czym diagram przesuwa się do góry o jedną linię. Kolory diagramów odpowiadają kolorom poszczególnych pasów. W górnej części znajduje się słupkowy wykres prędkości wszystkich samochodów na każdym z pasów. Liczby pod symbolem "V" oznaczają wartości prędkości samochodów, zaś liczby pod symbolem "n" podają ile samochodów jedzie z daną prędkością. Pod tym wykresem wyliczona jest średnia prędkość na danym pasie. Dostępne klawisze: m - włączenie/wyłączenie sterowania ręcznego spacja - następna ramka symulacji (klatka) q, esc - wyjście - - spowolnienie symulacji + - przyspieszenie symulacji *** Tryb statystyka - opis *** Generowany jest plik zawierający następujące kolumny: gestosc - gęstość zapełnienia wszystkich pasów (ilość samochodów / (ilość pasów * ilość komórek)) sprawn - sprawność kierowców przepX - przepustowość pasa X (w samochodach / ramkę) VsredX - średnia prędkość samochodów na pasie X (w komórkach / ramkę) zm_lX - ilość samochodów, które zmieniły pas z pasa X na lewy od niego zm_pX - ilość samochodów, które zmieniły pas z pasa X na prawy od niego Plik ten można zaimportować do arkusza kalkulacyjnego, a następnie zrobić wykresy - np. średniej prędkości od gęstości, czy od sprawności, etc.