Simulate Oregon (SimOR) - Oregon's Jointly Estimated ActivitySim Model

-
Configure
setup_environment.batOpen
setup_environment.batand set the user-configurable variables at the top of the file:Variable Description Default VISUM_PYTHON_DIRFolder containing your Visum 2026 Python interpreter C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Junction_Preview\PythonINSTALL_PARKINGClone and install sandag_parking ( YorN)YYou can run this script on its own to install all dependencies without running the model:
setup_environment.batIt will install UV (if needed), clone and build the required repositories into
ext_dependencies/, create the MAZ skimming Python environment fromext_dependencies/maz_skimming/pyproject.toml, and install the necessary Python packages into Visum's Python environment. On subsequent runs it detects existing installs and pulls the latest changes instead of re-cloning. -
Place the Visum version file
Copy your Visum network version file (
.ver) intoskimming_and_assignment/visum/. -
Update configuration files
Edit the following files to match your local data paths and project settings:
File Purpose skimming_and_assignment/maz_maz_stop_skims/2zoneSkim_params.yamlNon-motorized skim settings and file paths resident/preprocessor_settings.yamlLand use preprocessor input/output paths and network settings -
Set user-defined variables in
runSIMOR.batOpen
runSIMOR.batand update the following variables at the top of the file:Variable Description VISUM_VERSION_FILEFilename of the Visum version file PROCEDURE_SEQPath to the Visum procedure sequence XML
Run:
runSIMOR.bat
The script automatically calls setup_environment.bat to ensure all dependencies are installed and Python paths are set, then runs the following steps in sequence:
- Motorized skims — Using Visum
Visum_Runner.py. Automatically outputs required files to run non-motorized skims. - Non-motorized skim preprocessor — Prepares walk network inputs via
2zoneSkim_preprocessor.py. - Non-motorized skims — Computes MAZ-to-MAZ and MAZ-to-stop walk skims via
2zoneSkim.py. - Land use preprocessor — Builds ActivitySim-ready land use table via
preprocessor.py. - Run ActivitySim -- Runs ActivitySim -- (not yet implemented)