Jak zbadać skutki zakłócenia bez eksperymentowania na drodze?
Kolizja, roboty drogowe czy chwilowe ograniczenie przejazdu mogą zmniejszyć przepustowość odcinka. Skutki takiej zmiany nie muszą kończyć się w miejscu zdarzenia: obciążenie może przenieść się na sąsiednie trasy, a przeciążenie objąć większą część sieci.
Klient zajmujący się analizą ruchu potrzebował programu do badania podobnych zależności. Przygotowaliśmy dla niego symulator, w którym można zmieniać warunki, uruchamiać powtarzalne eksperymenty i porównywać sposoby wyznaczania tras. Celem było stworzenie środowiska do sprawdzania hipotez o zachowaniu ruchu.
Sieć dróg zapisana jako model
Program opisuje sieć za pomocą grafu: 21 węzłów i 30 skierowanych połączeń tworzy cztery korytarze z dwoma ujściami. Węzły oznaczają punkty połączeń, a krawędzie — odcinki, po których kierowany jest ruch. Każdy odcinek ma określoną przepustowość i koszt wykorzystywany przy wyborze trasy. Schemat zachowuje topologię programu; nie przedstawia geografii konkretnego miasta.
W kolejnych krokach symulacji do sieci trafia zmienny popyt na przejazdy. Model uwzględnia losowe wahania, nagłe wzrosty obciążenia oraz zakłócenia ograniczające przepustowość wybranych odcinków. Pozwala też obserwować, jak przeciążenie przenosi się wstecz na wcześniejsze fragmenty sieci.
Przykładowy eksperyment może polegać na ograniczeniu przepustowości jednej drogi i sprawdzeniu, co zmieni się na pozostałych połączeniach. W ten sposób można modelować wybrany skutek kolizji lub prac drogowych: utrudnienie przepływu ruchu. Program nie odtwarza samego zderzenia pojazdów.
Jeden eksperyment, krok po kroku
Te obrazy powstały ze stanów zapisanych podczas uruchomienia programu. Pokazujemy wariant bazowy, ziarno 982 — przebieg najbliższy medianie łącznego przeciążenia po zakłóceniu wśród 1000 prób.

Co to jest metoda Monte Carlo?
Monte Carlo to metoda obliczeniowa, która bada wiele możliwych scenariuszy przez wielokrotne losowanie danych wejściowych. Program powtarza obliczenia dla każdego z nich, a następnie zestawia wyniki. Dzięki temu można oszacować, jakie rezultaty są typowe, jak bardzo się różnią i jak często pojawiają się niekorzystne sytuacje przy przyjętych założeniach.
W naszym symulatorze losowo zmieniają się między innymi obciążenie sieci i skala ograniczenia przepustowości. Jeden przebieg może pokazać spokojny ruch, a inny — wzrost liczby przejazdów połączony z utrudnieniem na ważnym odcinku. Seria takich eksperymentów pozwala sprawdzić, jak wybrana strategia radzi sobie w różnych warunkach.
W planowaniu transportu Monte Carlo pomaga odpowiedzieć na pytanie: jak wybrana trasa zachowa się przy niepewnych warunkach? Samo wyznaczanie tras według określonego celu jest zadaniem algorytmu optymalizacji. Połączenie obu metod pozwala szukać dobrego planu i oceniać jego odporność na opóźnienia.
Powtarzalność eksperymentów zapewniają ziarna generatora liczb losowych. Dzięki nim można wrócić do konkretnego przebiegu, odtworzyć go po zmianie programu i sprawdzić, skąd wzięła się różnica.
Dwie strategie w tych samych warunkach
W symulatorze zestawiliśmy strategię bazową, wybierającą trasy według kosztu, ze strategią adaptacyjną. Ta druga uwzględnia informacje o obciążeniu z poprzedniego kroku i na tej podstawie koryguje wybór tras. Korzysta więc z danych już dostępnych w modelu.
Oba warianty można uruchomić dla tego samego scenariusza. Takie porównanie pozwala oddzielić wpływ strategii od różnic wynikających z losowania innych warunków.
Przy ocenie liczą się między innymi skala i czas trwania przeciążenia oraz czas powrotu do stabilnego stanu. Rozkłady wyników pomagają sprawdzić, czy zmiana przynosi korzyść w wielu przebiegach, czy tylko w wybranych przypadkach. Wykres pojedynczego eksperymentu ułatwia z kolei prześledzenie reakcji sieci krok po kroku.
Co pokazuje 1000 eksperymentów?
W serii 1000 par przebiegów mediana czasu stabilizacji wyniosła 2 kroki dla obu strategii. Warunek stabilizacji nie wystąpił przed końcem symulacji w 58 przebiegach bazowych i 55 adaptacyjnych. Program rozumie stabilizację jako początek trzech kolejnych kroków bez przeciążenia — kolejne zakłócenie tego stanu jest nadal możliwe.
Średnia suma przeciążeń po zakłóceniu wyniosła 187,76 dla wariantu bazowego i 181,10 dla adaptacyjnego — o około 3,5% mniej w tej konfiguracji. Poprawa wystąpiła w 198 parach, a w 802 wynik tej miary był taki sam. To wynik eksperymentu na uproszczonym modelu, nie pomiar poprawy ruchu na rzeczywistej drodze.
Parametry eksperymentu i dane do pobrania
Użyliśmy parametrów domyślnych wersji v2, zwiększając liczbę prób do 1000: ziarna 0–999, po 40 kroków, zakłócenie w kroku 12, okno stabilizacji 3 kroki. Każda para miała to samo ziarno oraz identyczne wylosowane zakłócenia. Nie dobieraliśmy parametrów pod korzystny wynik.
Przykład 982 wybraliśmy jako najbliższy medianie sumy przeciążeń wariantu bazowego po zakłóceniu. Kolory i podpisy wykresów dopasowaliśmy do artykułu; wartości pochodzą z programu. Zmiana przepustowości i przeciążenie są osobnymi wielkościami.
Wyniki 1000 par (CSV) · Stany sieci i parametry przykładu (JSON)
Oryginalny eksport topologii z programu · Oryginalny eksport przebiegu
Do czego przydaje się takie narzędzie?
Wartością symulatora jest możliwość zadawania konkretnych pytań i porównywania odpowiedzi przy kontrolowanych założeniach. Taki program może wspierać:
- Badanie zakłóceń: jak sieć reaguje na ograniczenie przepustowości w różnych miejscach i przy różnym obciążeniu?
- Porównywanie strategii: kiedy adaptacyjna zmiana tras pomaga, a kiedy przenosi przeciążenie na inne odcinki?
- Szukanie wąskich gardeł: które połączenia okazują się szczególnie wrażliwe na zmianę warunków?
- Wstępną ocenę pomysłów: które rozwiązania warto poddać bardziej szczegółowej analizie?
Optymalizacja tras w firmie transportowej
Firma transportowa może wykorzystać połączenie optymalizacji matematycznej i symulacji do planowania przejazdów swojej floty. Najpierw określamy, co ma być optymalne: łączny koszt, czas realizacji lub liczba przejechanych kilometrów. Następnie uwzględniamy punkty dostaw, dostępne pojazdy, ich ładowność i wymagane godziny odbioru lub doręczenia.
Algorytm szuka tras, które najlepiej spełniają ten cel przy zadanych ograniczeniach. Symulacja Monte Carlo pozwala dodatkowo sprawdzić różne warianty czasów przejazdu i zakłóceń, oszacować ryzyko spóźnień oraz porównać plany także wtedy, gdy warunki odbiegają od przewidywanych. Dzięki temu decyzja może uwzględniać zarówno koszt, jak i niezawodność dostaw.
W Pracowni Kodu możemy zaprojektować i wykonać taki system dla firmy transportowej — dopasowany do jej floty, zleceń i zasad planowania. Dobieramy model matematyczny, algorytmy i źródła danych do konkretnego problemu. Opisany tutaj symulator pokazuje warsztat potrzebny do budowy takiego rozwiązania; system do planowania dostaw przygotowujemy jako odrębne narzędzie dla danego klienta.
Program napisaliśmy w Pythonie. Połączenie modelu sieci, powtarzalnych eksperymentów i analizy wyników daje klientowi narzędzie, które można rozwijać wraz z kolejnymi pytaniami badawczymi.
Wynik zawsze zależy od założeń
W tej realizacji model opisuje zbiorcze obciążenia odcinków. Nie odwzorowuje zachowania każdego kierowcy, zmiany pasa ani fizyki kolizji. Schemat otwierający artykuł pokazuje rzeczywiste połączenia z konfiguracji programu. Obrazy kolejnych kroków i wykresy przedstawiają wyniki symulacji, nie pomiary z ulic.
Wnioski z eksperymentu dotyczą przyjętej sieci, parametrów i reguł. Zastosowanie modelu do konkretnego układu drogowego wymagałoby danych o tej sieci i ruchu, kalibracji oraz porównania wyników z obserwacjami.
Ta realizacja pokazuje, jak przekładamy problem analityczny na działający program: od opisania zależności, przez automatyzację eksperymentów, po wyniki, które można odtworzyć i porównać.
