Modelowanie oddolne kontra odgórne
Klasyczne modele matematyczne opisują systemy odgórnie: zapisz równania dla wielkości zagregowanych (całkowita liczba zakażonych, średnia prędkość, średnia temperatura), rozwiąż je i odczytaj zachowanie. To podejście jest potężne i efektywne. Ale zawodzi, gdy liczy się heterogeniczność jednostek, gdy struktura przestrzenna jest istotna albo gdy agenci mają pamięć lub adaptacyjne strategie.
Modelowanie oparte na agentach (ABM) przyjmuje odwrotne podejście: definiuje reguły dla każdego pojedynczego agenta, uruchamia tysiące agentów jednocześnie i pozwala zbiorowemu zachowaniu wyłonić się. Globalny wzorzec nigdy nie jest zaprogramowany jawnie — powstaje z lokalnych interakcji. Prawdziwa moc ABM bierze się z luki między tymi dwoma podejściami: wiele systemów generuje zachowanie zagregowane, które jest matematycznie równoważne odgórnym równaniom różniczkowym pod pewnymi warunkami, ale odbiega od nich, gdy tylko założenia (jednorodne mieszanie, nieskończona populacja, brak struktury przestrzennej) przestają być spełnione.
Część 1: Stadność
Symulacja Boids — trzy reguły, nieskończona złożoność
W 1986 roku Craig Reynolds opublikował pracę, która na zawsze zmieniła grafikę komputerową. Pokazał, że realistyczne zachowanie stadne — wzorce mrumuracji szpaków, ciasne kule ławic ryb — wyłania się z zaledwie trzech lokalnych reguł zastosowanych do każdego agenta: separacji, wyrównania i kohezji. Bez globalnej choreografii, bez centralnej kontroli, bez jawnej struktury stada.
Algorytm Boids — trzy reguły sterujące
Dla każdego boida i rozważ sąsiadów w promieniu R: 1. Separacja (unikanie ścisku): f_sep = -Σⱼ (p_j - p_i) / |p_j - p_i|² dla |p_j-p_i| < r_sep Steruje z dala od pobliskich boidów 2. Wyrównanie (skręt w stronę średniego kierunku): f_ali = (Σⱼ v_j / |N|) - v_i dla j ∈ sąsiedzi Steruje w stronę średniej prędkości sąsiedztwa 3. Kohezja (skręt w stronę środka masy): f_coh = (Σⱼ p_j / |N|) - p_i - v_i dla j ∈ sąsiedzi Steruje w stronę średniej pozycji sąsiedztwa Łączne przyspieszenie: a_i = w_sep·f_sep + w_ali·f_ali + w_coh·f_coh Aktualizacja prędkości: v_i += a_i · dt; |v_i| = clamp(|v_i|, v_min, v_max) p_i += v_i · dt Hasz przestrzenny dla wyszukiwania sąsiadów w O(1) na boida: Naiwnie: O(n²) porównań; Hasz przestrzenny: O(n·k), k=śr. liczba sąsiadów Krytycznie: 500 boidów → 125 000 par → 5×: 15 625 000 (~nieużywalne)
Z tych trzech reguł symulacja Boids tworzy każdy znak rozpoznawczy prawdziwego stadowania: ciasny lot formacyjny, rozdzielanie i łączenie wokół przeszkód, falopodobne zmarszczki przez stado oraz wydłużony kształt „kolumny" podczas przelotu. Dostosuj wagę każdej reguły niezależnie — podkręć separację wysoko, a stado eksploduje; podkręć kohezję do maksimum, a zapadnie się w ciasną kulę. Punkt równowagi tworzy zjawiskowe, skoordynowane zachowanie widziane w naturze.
Rozszerzenie — Birds Flock: Symulacja Birds Flock dodaje unikanie drapieżnika — czwartą regułę, która tworzy szybkie, skoordynowane manewry ucieczki filmowane w prawdziwych mrumuracjach szpaków. Gdy drapieżnik się zbliża, stado kurczy się, obraca i rozszerza w sposób, który myli pościg — piękna emergentna strategia obronna, której żaden pojedynczy ptak nie zaplanował.
Część 2: Rozprzestrzenianie się epidemii
Model SIR — matematyka epidemii
Model SIR, sformułowany przez Kermacka i McKendricka w 1927 roku, jest fundamentem matematycznej epidemiologii. Każdy model reakcji na pandemię — rozszerzenia SIR dla COVID-19, SEIR dla grypy, modele metapopulacyjne dengi — wywodzi się z tych trzech równań. Zrozumienie SIR oznacza zrozumienie progów odporności zbiorowej, kształtu krzywych epidemicznych i tego, dlaczego szczepienie na poziomie 70% pokrycia może zapobiec wybuchom epidemii, mimo że 30% ludzi pozostaje podatnych.
Model SIR — równania i kluczowe parametry
Zmienne stanu (ułamki populacji): S = Podatni dS/dt = -β·S·I I = Zakażeni dI/dt = β·S·I - γ·I R = Ozdrowiali dR/dt = γ·I S + I + R = 1 Parametry: β = współczynnik transmisji [kontakty⁻¹·dzień⁻¹] γ = współczynnik zdrowienia [dzień⁻¹] ≡ 1/D, D = okres zakaźności Podstawowa liczba reprodukcji: R₀ = β/γ = β·D R₀ > 1 → epidemia rośnie (każdy przypadek zakaża >1 innych) R₀ < 1 → epidemia wygasa R₀ = 1 → równowaga endemiczna Próg odporności zbiorowej: p_c = 1 - 1/R₀ (potrzebny odsetek zaszczepionych) Odra (R₀≈15): p_c = 93% COVID-19 (R₀≈2,5): p_c = 60% Wielkość końcowa (ułamek ostatecznie zakażonych): r_∞ spełnia: ln(1-r_∞)/r_∞ = -R₀ Rozszerzenie SEIR: Dodaj E (eksponowani/utajeni): dE/dt = β·S·I - σ·E σ = współczynnik przejścia z eksponowanych do zakaźnych (1/okres utajenia)
Symulacja SIR wyświetla zarówno rozwiązanie równań różniczkowych (krzywe zagregowane), jak i wersję opartą na agentach, w której poszczególne osoby poruszają się po siatce i zakażają sąsiadów przy kontakcie. Te dwie reprezentacje rozchodzą się, gdy liczy się klastrowanie przestrzenne: w wersji opartej na agentach gęste skupiska osób podatnych tworzą zlokalizowane ogniska, które utrzymują się nawet po spłaszczeniu zagregowanej krzywej SIR. Przesuń R₀ poniżej 1, aby zobaczyć, jak epidemia sama się wygasza, zanim dotrze do całej populacji.
Część 3: Stygmergia — optymalizacja mrowiskowa
Symulacja mrówek — komunikacja feromonowa
Kolonia mrówek nie ma centralnego planisty, a mimo to rozwiązuje problem najkrótszej ścieżki między gniazdem a źródłem pożywienia z niezwykłą skutecznością. Mechanizmem jest stygmergia: agenci modyfikują wspólne środowisko (poprzez wydzielanie feromonu), a pozostali agenci reagują na te modyfikacje środowiska. Ta pośrednia komunikacja, zapośredniczona przez środowisko, a nie bezpośredni kontakt, tworzy globalnie optymalne rozwiązania z lokalnie prostych reguł.
Optymalizacja mrowiskowa (ACO) — dynamika feromonów
Reguła aktualizacji feromonu: τᵢⱼ ← (1-ρ)·τᵢⱼ + Σᵏ Δτᵢⱼᵏ ρ = współczynnik parowania ∈ (0,1) (zapominanie) Δτᵢⱼᵏ = Q/Lᵏ jeśli mrówka k użyła krawędzi (i,j), inaczej 0 Q = stała siły feromonu Lᵏ = całkowita długość ścieżki mrówki k Probabilistyczny wybór ścieżki: P(krawędź j | w węźle i) = [τᵢⱼ]^α · [η᷊ⱼ]^β / Σₗ [τᵢₗ]^α · [ηᵢₗ]^β η᷊ⱼ = 1/dᵢⱼ (heurystyka: preferuj krótkie krawędzie) α = waga ważności feromonu β = waga ważności heurystyki Dodatnie sprzężenie zwrotne (pętla skracania): Krótsza ścieżka → więcej przejść na jednostkę czasu → więcej feromonu → wyższe prawdopodobieństwo wyboru przez przyszłe mrówki → → jeszcze krótsza efektywna ścieżka wybierana → ... Zbieżność: Zbyt wysokie ρ: mrówki nie podążają za utrwaloną ścieżką (losowość) Zbyt niskie ρ: nieświeży feromon uwięzia mrówki na podoptymalnych ścieżkach Optimum: ρ ≈ 0,1–0,3 dla większości problemów
W symulacji mrówek obserwuj, jak szlaki feromonowe powstają w czasie rzeczywistym, gdy mrówki eksplorują losowo, znajdują jedzenie i wracają do gniazda. Pierwsza mrówka, która znajdzie jedzenie, obiera losową, krętą trasę. Kolejne mrówki, które natkną się na jej szlak feromonowy, są skłonne go podążać. Z czasem pętla dodatniego sprzężenia zwrotnego wybiera niemal optymalną trasę — taką, która eksperymentalnie okazuje się zbliżona do najkrótszej ścieżki z dokładnością do kilku procent. Wprowadź ścianę w połowie szlaku i obserwuj, jak kolonia ją omija.
Część 4: Cykle populacyjne — dynamika drapieżnik-ofiara
Symulacja drapieżnik-ofiara — Lotka-Volterra w dwóch wymiarach
Dane o populacjach rysia i zająca amerykańskiego zbierane przez Hudson's Bay Company w latach 1845–1935 pokazują regularne oscylacje z okresem około 10 lat. Vito Volterra i Alfred Lotka, pracując niezależnie w latach dwudziestych XX wieku, wyprowadzili prostą parę równań różniczkowych, która tworzy dokładnie takie oscylacje — bez znajomości danych o zającach. Równania Lotki-Volterry są jednym z najbardziej znanych modeli w ekologii i pozostają fundamentem współczesnej dynamiki populacji.
Równania Lotki-Volterry — dynamika drapieżnik-ofiara
Klasyczne równania: dN/dt = αN - βNP (ofiara: rośnie, ginie zjadana) dP/dt = δNP - γP (drapieżnik: rośnie karmiony, ginie naturalnie) N = populacja ofiar; P = populacja drapieżników α = tempo wzrostu ofiar β = tempo drapieżnictwa (na spotkanie drapieżnik-ofiara) δ = efektywność drapieżnika (ofiary przekształcane w drapieżniki) γ = tempo śmiertelności drapieżników Punkt równowagi: N* = γ/δ (ofiary w równowadze) P* = α/β (drapieżnicy w równowadze) Wielkość zachowana (całka pierwsza): V = δN - γ·ln(N) + βP - α·ln(P) = stała → Zamknięte orbity na płaszczyźnie fazowej (stabilność neutralna) Paradoks Lotki-Volterry: Zwiększenie tempa wzrostu ofiar α → podnosi równowagę drapieżnika, nie ofiary „Paradoks wzbogacenia": dodanie składników odżywczych destabilizuje cykl Rozszerzenia rzeczywiste: Wzrost logistyczny: α → α(1-N/K) (pojemność środowiska) Typy Hollinga II/III: nasycająca odpowiedź funkcjonalna Rosenzweig-MacArthur: prowadzi do cykli granicznych, chaosu
Symulacja drapieżnik-ofiara uruchamia równania Lotki-Volterry obok wersji przestrzennej opartej na agentach, w której poszczególne ofiary i drapieżnicy poruszają się na siatce. Rozwiązanie równań różniczkowych pokazuje idealnie zamknięte orbity w przestrzeni fazowej; wersja oparta na agentach pokazuje nieregularne oscylacje z okazjonalnymi wymarciami — dokładnie różnicę między wyidealizowanymi modelami a rzeczywistymi systemami ekologicznymi. Wprowadź strukturę przestrzenną (mozaikowate siedlisko, korytarze) i obserwuj dynamikę metapopulacji, która pozwala ocalałym ponownie zasiedlić wymarłe płaty.
Część 5: Dynamika miejska — zlepianie się autobusów i wzrost miast
Zlepianie się autobusów — dlaczego autobusy jeżdżą w parach
Zlepianie się autobusów (bus bunching) jest jednym z najbardziej eleganckich przykładów emergentnej dysfunkcji w systemach miejskich. Nawet gdy autobusy są zaplanowane w idealnie równych odstępach, niewielkie losowe opóźnienia powodują, że jadący z tyłu autobus zabiera więcej pasażerów (bo odstęp się powiększył), spowalniając go jeszcze bardziej i powodując, że autobus jadący z przodu porusza się szybciej (bo ma mniej przystanków). Rezultat jest nieunikniony: autobusy zlepiają się w pary. Żaden kierowca nie zachowuje się źle — zlepianie jest właściwością systemu, nie agentów.
Zlepianie się autobusów — dynamika odstępów czasowych
Odstęp czasowy (headway) między autobusami:
h_i = czas od poprzedniego autobusu na tym samym przystanku
Czas wsiadania zależy od odstępu:
T_wsiadanie(i) = λ · h_i (λ = tempo przybywania pasażerów na jednostkę czasu)
Czas postoju autobusu na przystanku s:
d_s(i) = d_min + T_wsiadanie(i)/μ (μ = tempo wsiadania na sekundę)
Wzmocnienie zaburzenia:
Jeśli autobus i jest opóźniony o δ:
- h_i rośnie → więcej pasażerów → dłuższy postój na każdym przystanku
- h_{i+1} maleje → mniej pasażerów → krótszy postój
Kolejna pętla: h_i rośnie dalej → niestabilna ucieczka
Kryterium zlepiania:
System zlepia się, jeśli ∂h_i/∂(opóźnienie) > 1 (zaburzenia się wzmacniają)
Zachodzi to zawsze, gdy λ/μ jest wystarczająco duże
Strategie kontroli:
Zatrzymywanie oparte na odstępie: zatrzymaj prowadzący autobus, jeśli h < h_min
Kontrola optymalna (Daganzo 2009): minimalizacja całkowitego czasu oczekiwania pasażerów
Dyspozycja GPS w czasie rzeczywistym: nowoczesne systemy transportu to wykorzystują
Symulacja zlepiania się autobusów daje ci kontrolę nad okrężną linią autobusową. Obserwuj, jak idealnie rozstawione autobusy nieuchronnie zbiegają się w pary po kilku okrążeniach. Włącz strategię kontroli poprzez zatrzymywanie oparte na odstępach i patrz, jak autobusy się stabilizują — ale kosztem okazjonalnych celowych opóźnień, które wydają się sprzeczne z intuicją sfrustrowanym pasażerom.
Symulacja wzrostu miasta — ekonomia przestrzenna
Miasta rosną według logiki samowzmacniającej się: działalność gospodarcza przyciąga pracowników, pracownicy tworzą popyt, popyt przyciąga więcej firm, gęstość biznesowa podnosi wartość gruntu, a wartość gruntu koncentruje zabudowę. Ta pętla sprzężenia zwrotnego, sformalizowana w ekonomii miejskiej, tworzy skalowanie potęgowe rozkładu wielkości miast (prawo Zipfa), fraktalną strukturę sieci drogowych oraz koncentryczną strukturę pierścieniową użytkowania gruntów.
Wzrost miasta — prawo Zipfa i skalowanie miejskie
Prawo Zipfa (reguła rangi-rozmiaru):
Populacja miasta o randze r: P(r) = P₁ / r^α
Empirycznie: α ≈ 1 dla większości krajów
USA (2020): NYC≈8,3M, LA≈3,9M, Chicago≈2,7M → ranga×populacja ≈ stała
Skalowanie Kleibera metabolizmu miejskiego:
Y ∝ N^β (Y = wynik gospodarczy, N = populacja)
β > 1: superliniowe → miasta stają się nieproporcjonalnie produktywne
β ≈ 1,15 (patenty, PKB, płace)
β ≈ 0,85 (infrastruktura: drogi, rury)
Model monocentryczny Alonso-Muth-Millsa:
Gradient czynszu: R(x) = R(0) - t·x (R maleje wraz z odległością x od CBD)
t = koszt dojazdu na jednostkę odległości
Wynik: gęstość osiąga szczyt w centrum, maleje wykładniczo na zewnątrz
Automat komórkowy użytkowania gruntów (model SLEUTH):
Prawdopodobieństwo rozprzestrzeniania miejskiego:
P = f(nachylenie, wykluczenia, zurbanizowani sąsiedzi, odległość od dróg)
Kalibrowany do rzeczywistych miast przy użyciu historycznych zdjęć satelitarnych
Symulacja wzrostu miasta implementuje model użytkowania gruntów oparty na automacie komórkowym, w którym komórki przechodzą od stanu wiejskiego przez podmiejski do miejskiego na podstawie gęstości sąsiedztwa, dostępu do dróg i nachylenia terenu. Umieść początkowe ziarno gospodarcze (port, węzeł kolejowy) i obserwuj, jak miasto nukleuje, rozprzestrzenia się wzdłuż korytarzy transportowych i samoorganizuje się w charakterystyczną strukturę pierścieniową — wszystko z lokalnych reguł, bez żadnego globalnego planu.
Kolekcja modelowania opartego na agentach
Boids
Separacja, wyrównanie, kohezja — trzy reguły Reynoldsa tworzą mrumurację
Birds Flock
Boids rozszerzone o wykrywanie drapieżnika i manewry ucieczki
Epidemia SIR
Porównanie ODE i agentowe, R₀, próg odporności zbiorowej
Kolonia mrówek
Wydzielanie feromonu, parowanie, optymalizacja ścieżki ACO
Drapieżnik-ofiara
Równania Lotki-Volterry kontra przestrzenny model agentowy, orbity fazowe
Zlepianie się autobusów
Niestabilność odstępów, sprzężenie zwrotne pasażerów, strategia kontroli zatrzymywania
Połączenia między kolekcjami
Myślenie oparte na agentach łączy całą platformę. Algorytm Boids jest bezpośrednim przodkiem Symulacji tłumu — te same trzy reguły sterujące zastosowane do pieszych poruszających się w korytarzach i przez wyjścia. Model epidemii SIR dzieli swoją matematyczną formę z równaniami drapieżnik-ofiara — oba są dwuzmiennymi, nieliniowymi systemami z zachowaniem cykli granicznych. Feromony mrówek są biologiczną implementacją zejścia gradientowego, które napędza trenowanie sieci neuronowych: oba systemy podążają za gradientami stężenia, by znaleźć optima. Emergencja wzrostu miasta łączy się z symulacją perkolacji — rozprzestrzenianie miejskie jest ukierunkowanym procesem perkolacji na siatce użytkowania gruntów, a granica miasta w symulacji wzrostu jest dokładnie frontem klastra perkolacji. Wszystkie te systemy ilustrują tę samą głęboką zasadę: lokalne reguły, iterowane przez wielu agentów i wiele kroków czasowych, niezawodnie tworzą globalny porządek, który nigdy nie został jawnie zaprojektowany.