Comparing Model Ouputs

Comparing Model Ouputs#

In this example we show how to compare outputs across iterations or across models. Here we illustrate using two iterations from the same project, but thanks to the use of standardised KPIs, results can be compared across model years or even across cities.

sphinx_gallery_thumbnail_path = ‘../../examples/result_analysis/pax_in_network.png’

from pathlib import Path

from polaris.analyze.kpi_comparator import KpiComparator
from polaris.analyze.result_kpis import ResultKPIs
from polaris.runs.convergence.convergence_iteration import ConvergenceIteration
from polaris.runs.scenario_compression import ScenarioCompression
from polaris.utils.database.migration_manager import MigrationManager
from polaris.utils.database.standard_database import DatabaseType
project_dir = Path("/tmp/Bloomington")

iteration_3 = ConvergenceIteration.from_dir(project_dir / "Bloomington_iteration_3")
iteration_4 = ConvergenceIteration.from_dir(project_dir / "Bloomington_iteration_4")

# This is generally not needed unless you are analysing results from an older model
MigrationManager.upgrade(
    ScenarioCompression.maybe_extract(iteration_3.files.demand_db), DatabaseType.Demand, redo_triggers=False
)
MigrationManager.upgrade(
    ScenarioCompression.maybe_extract(iteration_4.files.demand_db), DatabaseType.Demand, redo_triggers=False
)

c = KpiComparator()
c.add_run(ResultKPIs.from_iteration(iteration_3), "A label (it3)")
c.add_run(ResultKPIs.from_iteration(iteration_4), "A diff label [it4]")
c.plot_everything()
  • plot compare iterations
  • Activity Start distribution
  • Trip Distance Calibration, Trip Travel Time Validation
  • Activity Generation Calibration, By Activity Type, By Person Type
  • Mode Share Calibration, Home-Based Work, Home-Based Other, Non Home-Based, Total
  • Timing Choice Calibration, LEISURE, SCHOOL, SHOP_OTHER, ERRANDS, EAT_OUT, SERVICE, HOME, HEALTHCARE, PERSONAL, WORK, WORK_HOME, SOCIAL, SHOP_MAJOR, RELIGIOUS, WORK_PART, PICKUP, TOTAL
  • Congestion Pricing Revenue
  • Runtime and Memory usage
  • plot compare iterations
  • plot compare iterations
  • Total, HBO, HBW, NHB
  • Gap (abs), Gap, Gap (abs), Gap
  • plot compare iterations
  • plot compare iterations
  • Activity Generation, Mode Share, Mode Boardings, TTime by Activity, Departure Time
  • Skim change over time (min/max dashed, avg solid)
  • Demand, Wait time, IVTT
  • Boardings, Alightings
  • Trip length distribution
  • plot compare iterations
  • Proportion of Connected Vehicles within Fleet
  • VMT (millions), Speed (mi/h), Number of trips
  • plot compare iterations
<IPython.core.display.HTML object>
<pandas.io.formats.style.Styler object at 0x7614684323d0>
/builds/polaris/code/polarislib/polaris/analyze/kpi_comparator.py:275: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`). Consider using `matplotlib.pyplot.close()`.
  _, axes = plt.subplots(1, 1, figsize=(10, 5))

Total running time of the script: (0 minutes 9.865 seconds)

Gallery generated by Sphinx-Gallery