GermanZero-de / localzero-generator-core

7 stars 3 forks source link

Bug - transport capacity - Dudenhofen #313

Closed Jeniffere closed 1 year ago

Jeniffere commented 1 year ago

python devtool.py run -ags 07338007 liefert AssertionError: We should know have at least as much provided transport capacity as we required initially

Jeniffere commented 1 year ago

Error in t.py Z120 bei assert ( required_domestic_transport_capacity_pkm <= res.transport.transport_capacity_pkm ), "We should know have at least as much provided transport capacity as we required initially"

67.764.501,16 = required_domestic_transport_capacity_pkm 44.352.139,72 = transport.transport_capacity_pkm

transport_capacity_pkm als Summe aus: 1.660.503,99 air 0 rail 35.915.185,62 road 0 ship 6.776.450,12 other

Jeniffere commented 1 year ago

Das Problem scheint aus rail / bus zu kommen. Wenn dort die transport_capacity_pkm überall 0 ist, reichen die übrigen transport_capacity_pkm nicht aus, um die required_domestic_transport_capacity_pkm abzudecken.

rail, bus: `transport_capacity_pkm = div( total_transport_capacity_pkm * t18.rail_ppl_distance.transport_capacity_pkm, t18.road_bus.transport_capacity_pkm

Denn hier sind alle transport_capacity_pkm von t18 road_bus, rail_ppl = 0

Warum sind t18.road_bus.transport_capacity_pkm, t18.rail_ppl_distance.transport_capacity_pkm und t18.rail_ppl_metro.transport_capacity_pkm = 0?

Das Problem liegt in den Daten. Wenn folgende Sachen zusammen gelten, kann es zu dem Problem kommen:

Jeniffere commented 1 year ago

Vorbedingung

Beispiel ags, die die oben beschriebene Vorbedingung erfüllen und ebenfalls zu demselben Error führen:

Beispiel ags, die die oben beschriebene Vorbedingung erfüllen, aber gar keine zulässige ags für die Website darstellen. Sie liefern im Generator eine Row not Found Exception:

Jeniffere commented 1 year ago

Lösungsmöglichkeiten:

  1. Assertion weglassen (d.h. akzeptieren, dass die required_domestic_transport_capacity_pkm nicht erreicht wird)
  2. Die Daten ändern.
  3. Die Berechnung ändern.
bgrundmann commented 1 year ago

Hause und ich haben uns das etwas angesehen. Was ist das Problem? Die Berechnung geht davon aus das es keine Kommunen gibt bei der der Personen ÖPNV komplett 0 ist (also ist Zustand jeder Mensch fährt PKW es gibt noch nicht mal mehr BUS).

Genauer gesagt wird aktuell das bestehende ÖPNV Netzwerk insgesamt skaliert aber die relativen Anteile von Bus, Metro, Rail untereinander nicht verändert. Wenn aber alle 0 sind kommt am Ende nach dem skalieren eben immer noch 0 raus (wir gingen aber davon aus das dann immer wenigstens ein Sektor übernimmt (also meistens Bus)).

Eine mögliche Anpassung wäre es in der Berechnung davon auszugehen das ausschließlich ein komplett neues Busnetzwerk eingesetzt um der Kommune ein ÖPNV Netzwerk zu geben. (Alternativ könnte man auch sagen die Kommune kommt anteilig sowohl Bus, als auch Metro als auch Fernzug, aber dann ist es schwierig zu wissen nach welchen Anteilen und soweit wir wissen tritt dieses Problem nur bei kleinen Kommunen auf.).

bgrundmann commented 1 year ago

Ich habe einen patch von dem Hauke und ich ausgehen das er das richtige macht. Ich werde nachher noch ein paar tests laufen lassen und ihn danach Leon zum code review geben.