05 Gravitatsioonimudel.md 2.9 KB

Gravitatsioonimudel (trip distribution)

Eesmärk

Jaotada liikumised väljapääsupunktide vahel nii, et ühtegi sihtpunkti ei eelistata a priori — sarnaselt jõgikonna vee liikumisele. See on gravitatsioonimudeli (gravity model) põhiolemus.

Kontseptsioon

Klassikalises gravitatsioonimudelis on kahe piirkonna vaheline liikumine võrdeline nende "masside" (rahvastiku) korrutisega ja pöördvõrdeline kauguse/kulu astmega:

T_ij ∝ (P_i · P_j) / f(c_ij)

Selles rakenduses on igal teede sõlmel:

  • kulupotentsiaal lähima väljapääsupunktini (impedance)
  • gravitatsiooniline atraktiivsus — mida suurem väljapääsupunkti teenindatav rahvastik, seda rohkem see trippe "tõmbab"

Meetod

1. Ühtne impedance-kaalutud graaf

unified = nx.Graph()
weight = length * impedance_factor

Iga tee klass on kaalutud impedantsi kordajaga (kõrgem = aeglasem/vähem eelistatud):

Tee klass Impedants
motorway, trunk 1.0
primary 1.1
secondary 1.3
tertiary 1.8
residential, unclassified, service 4.0
track 5.0

2. Gravitatsiooniline kulufunktsioon

GRAVITY_ALPHA = 1000   # meetrit log-rahvastiku ühiku kohta
adjusted_cost = path_impedance - alpha * log(population + 1)

Suurem teenindusala rahvastik vähendab efektiivset kulu (tõmbab trippe juurde):

  • linn 1000 inimesega: alpha * ln(1001) ≈ 6.9 km kompensatsioon
  • küla 100 inimesega: alpha * ln(101) ≈ 4.6 km kompensatsioon

3. Parima väljapääsupunkti valik

Iga sõlme jaoks leitakse Dijkstra'ga kulu igast väljapääsupunktist, kohandatakse gravitatsiooniga, ja parim = argmin(adjusted_cost):

best_exit = argmin(adjusted_cost)  # gravitatsiooniga kohandatud
nearest_exit = argmin(impedance)   # lihtsalt lähim (võrdluseks)
switched = best_exit != nearest_exit

switched näitab, kus gravitatsioon muudab valikut (sõlm kuulub "loogiliselt" kaugemasse, aga suuremasse keskusesse).

4. Sõlmede ja lõikude jaotus

  • {prefix}_gravity_node_exits.csv — iga sõlm: best_exit, impedance_to_exit, gravity_value, switched
  • {prefix}_gravity_segment_exits.csv — iga lõik: best_exit, impedance_to_exit, assignment_type

Gravitatsioon vs lähim väljapääs

  • Lähim (nearest): aluseks [[Liiklussageduse kaudne hindamine/02_Metoodika/03 Väljapääsupunktid ja teenindusalad]] — iga sõlm lähima väljapääsupunkti teenindusalasse
  • Gravitatsioon: suuremad keskused tõmbavad kauemalt liikumisi — realistlikum "voolupilt"

Mõlemad on võrdlusena: gravitatsioon annab realistlikuma liikluskoormuse, lähim-alus on lihtsam ja läbipaistvam.

Rakendus

Skript: pipeline/gravity_exit_analysis.py Loeb: {prefix}_pop_catchment.csv (rahvastik väljapääsupunkti kohta) Kirjutab: {prefix}_gravity_node_exits.csv, {prefix}_gravity_segment_exits.csv