Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
d6ca6b0
Initial commit of baydag
dhensle May 6, 2025
789d1d9
running with cropped data and latest version of activitysim
dhensle May 7, 2025
307e1b6
removed transponder ownership, cleaned up write matrices
dhensle May 8, 2025
59cab01
changing model ordering
dhensle May 8, 2025
93ff0ff
removed driving age student person type
dhensle May 8, 2025
18b6b6e
remove unused external student models
dhensle May 8, 2025
f677a88
initial CI test setup
dhensle May 8, 2025
719d1ba
cloning main branch of activitysim instead of pip install
dhensle May 8, 2025
be92387
Trying different CI call
dhensle May 8, 2025
7921dd9
adding missed coverage install
dhensle May 8, 2025
d6e5a37
trying to capture output in GH actions
dhensle May 8, 2025
daa8819
calling python directly instead of coverage
dhensle May 8, 2025
a6e4bbc
initial tour mode choice changes
dhensle May 9, 2025
83e034f
trip mode choice initial mode changes
dhensle May 9, 2025
76d8347
CI tests looking at estimation_enhancements branch
dhensle May 15, 2025
7fdae00
running with metro synthetic population and sandag skims
dhensle Jun 2, 2025
57c2742
Adding metro visum stuff from Metro_ABM repo
lukegordon333 Jun 17, 2025
e383a58
initial implementation of park_and_ride_lot_choice
dhensle Jun 20, 2025
eef53c3
initial coding for tour mode choice with pnr
dhensle Jun 24, 2025
6e484c4
first pass at tour mode choice utility updates
dhensle Jun 24, 2025
2c5a554
KNR and other skimming scripts
lukegordon333 Jun 26, 2025
aa22f31
maz_walk_stop skims
ednaaguilar Jun 30, 2025
44822cd
updates to pnr configs with activitysim integration
dhensle Jun 30, 2025
a4711ba
turning on pnr with logsums
dhensle Jul 4, 2025
9c4c17d
matching landuse shape to skims shape
dhensle Jul 4, 2025
a047d78
Merge pull request #1 from RSGInc/pnr_modeling
dhensle Jul 4, 2025
5d8266c
Merge pull request #2 from RSGInc/ims_Luke
dhensle Jul 4, 2025
4866d6d
metro example with working skims
dhensle Jul 8, 2025
c6ab42e
Merge branch 'initial_model_setup' of https://github.com/RSGInc/SimOR…
dhensle Jul 8, 2025
54082e0
removed unused lcog configs, update README
dhensle Jul 8, 2025
8fbf839
CI Setup (#3)
dhensle Jul 18, 2025
a77ec8f
updating skimming scripts (#4)
dhensle Jul 18, 2025
3b69d0b
updating folder structure
dhensle Aug 6, 2025
e5e09c1
Update .gitignore
lukegordon333 Aug 19, 2025
918c1dc
deleted unneeded files + move xmls to config
lukegordon333 Aug 19, 2025
493edca
Update .gitignore
lukegordon333 Sep 15, 2025
d9cc59d
consistency across landuse, hhs, persons in synthetic pop
dhensle Sep 19, 2025
8c717ca
pnr config updates
dhensle Sep 29, 2025
1a09279
Merge branch 'initial_model_setup' into pnr_capacity
dhensle Sep 29, 2025
8d0f43b
maz duplicate fix and data paths update
tedlini Oct 2, 2025
6d15fd1
add missing pnr coeff
tedlini Oct 2, 2025
cb7ea5b
add pnr data with some placeholders in land_use.csv
tedlini Oct 7, 2025
6bad34c
add pnr capacity and cost in configs
tedlini Oct 7, 2025
0f24578
make work tours unavaiable for children 15 and under
tedlini Oct 7, 2025
f0d17fc
add missing trip purpose probabilities
tedlini Oct 7, 2025
dfdbffe
fix availability condition for micromobility modes
tedlini Oct 9, 2025
e1687e3
update pnr lot capacity in land_use.csv
tedlini Oct 16, 2025
888f908
fix parking cost unit conversion in trip mode choice
tedlini Oct 16, 2025
18c0bea
pnr config updates
dhensle Sep 29, 2025
d5ab26f
maz duplicate fix and data paths update
tedlini Oct 2, 2025
6b00b27
add missing pnr coeff
tedlini Oct 2, 2025
189a18c
add pnr data with some placeholders in land_use.csv
tedlini Oct 7, 2025
a15fe64
add pnr capacity and cost in configs
tedlini Oct 7, 2025
9530458
make work tours unavaiable for children 15 and under
tedlini Oct 7, 2025
972d1f5
add missing trip purpose probabilities
tedlini Oct 7, 2025
f9d2f24
fix availability condition for micromobility modes
tedlini Oct 9, 2025
854a9a0
update pnr lot capacity in land_use.csv
tedlini Oct 16, 2025
8c31adc
fix parking cost unit conversion in trip mode choice
tedlini Oct 16, 2025
bed43bb
Create .gitignore
lukegordon333 Oct 29, 2025
e755c8b
Create .gitignore
lukegordon333 Oct 29, 2025
e0fcef9
Merge branch 'file_cleanup' into initial_model_setup
lukegordon333 Oct 29, 2025
cd0255a
Update KNRConnectors_Setup.py
lukegordon333 Oct 29, 2025
3eb5565
adding support files for all streets network
lukegordon333 Oct 29, 2025
c305707
Create SkimSequence_wCapacitySettingFromEmme.xml
lukegordon333 Oct 29, 2025
fab7ded
added metnet = 0 filter
lukegordon333 Oct 30, 2025
7f59865
Added setting to 9999 for all matrices if walk is unavailable
lukegordon333 Nov 5, 2025
f5a032d
bike analysis scripts
ednaaguilar Nov 5, 2025
d52ed03
modify tour mc coeff to test pnr
tedlini Nov 11, 2025
b834f64
add stop type and vehicle type constants to transit utilities
tedlini Nov 11, 2025
b16ba6f
update pnr parking cost utility
tedlini Nov 11, 2025
bfeac26
Configure constants.yaml for use in Visum python scripts + fixing up …
lukegordon333 Nov 12, 2025
0bb0099
Auto skim fixes
lukegordon333 Nov 21, 2025
def3d1e
Bike comfort model (#9)
ednaaguilar Dec 19, 2025
94341f2
Script updates (walk transit masking) and other changes
lukegordon333 Dec 19, 2025
5fc320c
License holding model (#8)
ednaaguilar Dec 20, 2025
1227632
Use updated land use file and update MAZ/TAZ to new zone system
ednaaguilar Dec 24, 2025
8d6bae5
drop hh's with no MAZ match in new zones system
ednaaguilar Dec 24, 2025
ef8a372
Updates
lukegordon333 Jan 8, 2026
5a7790f
Adding non-motorized file export from visum
lukegordon333 Jan 12, 2026
7885ec9
Merge branch 'initial_model_setup' into pnr_capacity
dhensle Jan 12, 2026
3ec43bf
Changed Transit skims to long form Optimal Strategies + Added KNR ski…
lukegordon333 Jan 14, 2026
80f4dc4
col name change
ednaaguilar Jan 15, 2026
68d0979
Merge branch 'pnr_capacity' of https://github.com/RSGInc/SimOR into p…
ednaaguilar Jan 15, 2026
a5dba1e
Add preprocessing script
ednaaguilar Jan 15, 2026
8df1f40
working with new landuse file
dhensle Jan 15, 2026
2b352e2
Merge branch 'pnr_capacity' of https://github.com/RSGInc/SimOR into p…
dhensle Jan 15, 2026
c81147a
recreating test example dataset using new landuse
dhensle Jan 15, 2026
69d9539
using sov dist for bike time
dhensle Jan 15, 2026
be00190
fixing CI test to use UV
dhensle Jan 15, 2026
86641dc
Merge pull request #10 from RSGInc/pnr_capacity
dhensle Jan 16, 2026
76cc470
use shadow pricing and update mp steps
dhensle Jan 16, 2026
8bb8bdf
removing space in front of expression license holding model
dhensle Jan 20, 2026
397c194
add typeno to configs, add documentation
ednaaguilar Jan 22, 2026
e438f20
Updaye
lukegordon333 Jan 23, 2026
af08114
filter walk network with tsysset only
ednaaguilar Feb 2, 2026
d155a9b
fix typos
ednaaguilar Feb 3, 2026
3f68e59
new synthetic pop, but failing in tour mode choice
dhensle Feb 4, 2026
58b2eae
add time logs
ednaaguilar Feb 5, 2026
27d8257
make config yaml sys arg, use config dirs
ednaaguilar Feb 9, 2026
8d76213
Dropped CC time calculcation from KNRConnector_Setup.py
lukegordon333 Feb 10, 2026
312771f
fixing OCCP, cropped example run successfully
dhensle Feb 11, 2026
dc15f7a
Added intrdist/intrtime calculation to Network_Initialization.py, add…
lukegordon333 Feb 12, 2026
e4615f4
Land use densities (#11)
ednaaguilar Feb 13, 2026
667d1d9
Merge branch 'initial_model_setup' into new_synthetic_pop
dhensle Feb 13, 2026
3bb0a61
speed up landuse density calculations
dhensle Feb 13, 2026
35d9617
fixing indexing bug in preprocessor joining hhs and pers
dhensle Feb 17, 2026
9030fe4
including densities in the configs
dhensle Feb 17, 2026
452dd71
Input costs in dollars, mc cost coef in cents
dhensle Feb 20, 2026
55d234e
re-cropping test example with fixed landuse indexing
dhensle Feb 20, 2026
270a07f
Merge pull request #12 from RSGInc/new_synthetic_pop
dhensle Feb 20, 2026
1683657
Misc procedure sequence changes + Edna adding files to run Visum thru…
lukegordon333 Feb 25, 2026
13920be
Create .gitignore
lukegordon333 Feb 25, 2026
ebba186
Detracked MAZ outputs
lukegordon333 Feb 25, 2026
6aa0854
Removed unneeded files from git tracking
lukegordon333 Feb 26, 2026
74a7fac
remove log.txt from tracking
lukegordon333 Feb 26, 2026
eae68ed
Pull request fixes/deletions
lukegordon333 Feb 26, 2026
80cbcb2
Update Export_Skim_OMXs.py
lukegordon333 Feb 26, 2026
f877ea5
Clean up procedure sequences
lukegordon333 Feb 26, 2026
7703a9a
Merge branch 'initial_model_setup' into ims_allstreets
dhensle Feb 27, 2026
21f18c9
cherry-pick files from join_skim_procedure to ims_allstreets
ednaaguilar Feb 27, 2026
f739a82
external dependencies and env setup
dhensle Feb 27, 2026
706a455
Merge branch 'ims_allstreets' of https://github.com/RSGInc/SimOR into…
ednaaguilar Feb 27, 2026
843f61e
.bat updates
ednaaguilar Feb 27, 2026
2819882
update to use envs created w setup_env batch
ednaaguilar Feb 27, 2026
8fb9fb7
link dirs
ednaaguilar Feb 27, 2026
3543f54
bat updates
ednaaguilar Feb 27, 2026
430dd7b
fix crs bug
ednaaguilar Feb 27, 2026
6fb40e6
Visum runner updates
ednaaguilar Feb 27, 2026
7ec7657
make vars names consistent
ednaaguilar Feb 27, 2026
fe1a109
Merge branch 'ims_allstreets' of https://github.com/RSGInc/SimOR into…
ednaaguilar Feb 27, 2026
77bdb46
comment updates
ednaaguilar Feb 27, 2026
8484ee0
comment updates
ednaaguilar Feb 27, 2026
5a05849
Update readme w instructions
ednaaguilar Feb 27, 2026
4d50c24
comment updates
ednaaguilar Feb 27, 2026
5fb3cb2
adding maz skimming dep
dhensle Feb 28, 2026
293e037
Merge pull request #15 from RSGInc/ims_allstreets
dhensle Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
55 changes: 55 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: CI Test for Cropped Example

on:
push:
branches:
- '**'
pull_request:
branches:
- '**'

jobs:
oregon_metro_cropped_example:
strategy:
matrix:
python-version:
- "3.10"
fail-fast: false

name: cropped-example-py${{ matrix.python-version }}
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

# Clone ActivitySim from SimOR_pnr branch
- name: Clone ActivitySim
run: |
cd ..
git clone --branch SimOR_pnr https://github.com/RSGInc/activitysim.git
pwd
ls -la

# Install UV
- name: Install UV
uses: astral-sh/setup-uv@v4
with:
version: "latest"

# Set up Python with UV
- name: Set up Python
run: uv python install ${{ matrix.python-version }}

# Install dependencies using UV and the lock file from ActivitySim
- name: Install dependencies with UV
run: |
cd ../activitysim
uv sync --frozen
uv pip install -e . --no-deps
uv pip list

# Run the test
- name: Run cropped example test
run: |
cd ../activitysim
uv run python $GITHUB_WORKSPACE/resident/test/test_cropped_dataset.py
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
*__pycache__*
.vscode/*
resident/model_data/metro/data_full/*
resident/outputs/*

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

Metro_outputs/

skimming_and_assignment/visum/*.ver

# External dependencies managed by setup_environment.bat
ext_dependencies/*/
52 changes: 52 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Run Full Example",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}/resident",
"program": "simulation.py",
"console": "integratedTerminal",
"args": [
"-c", "configs", // check the settings.yaml file for run settings!
"-d", "model_data/metro/data_full",
"-o", "outputs/full",
]
},
{
"name": "Run Cropped Example",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}/resident",
"program": "simulation.py",
"console": "integratedTerminal",
"args": [
"-c", "configs", // check the settings.yaml file for run settings!
"-d", "model_data/metro/data_cropped",
"-o", "outputs/cropped",
]
},
{
"name": "Run Visum_Runner.py",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}/skimming_and_assignment/visum",
"program": "Visum_Runner.py",
"console": "integratedTerminal",
"args": ["skims"]
},
{
"name": "Run Preprocessor",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}/resident",
"program": "preprocessor.py",
"console": "integratedTerminal",
"args": "preprocessor_settings.yaml"
}
]
}
56 changes: 56 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,59 @@
# SimOR
Simulate Oregon (SimOR) - Oregon's Jointly Estimated ActivitySim Model
![image](SimOR.png)

## Running the model

### Setup

1. **Configure `setup_environment.bat`**

Open `setup_environment.bat` and set the user-configurable variables at the top of the file:

| Variable | Description | Default |
|----------|-------------|---------|
| `VISUM_PYTHON_DIR` | Folder containing your Visum 2026 Python interpreter | `C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Junction_Preview\Python` |
| `INSTALL_PARKING` | Clone and install sandag_parking (`Y` or `N`) | `Y` |

You can run this script on its own to install all dependencies without running the model:
```
setup_environment.bat
```
It will install UV (if needed), clone and build the required repositories into `ext_dependencies/`, create the MAZ skimming Python environment from `ext_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.

2. **Place the Visum version file**

Copy your Visum network version file (`.ver`) into `skimming_and_assignment/visum/`.

3. **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.yaml` | Non-motorized skim settings and file paths |
| `resident/preprocessor_settings.yaml` | Land use preprocessor input/output paths and network settings |

4. **Set user-defined variables in `runSIMOR.bat`**

Open `runSIMOR.bat` and update the following variables at the top of the file:

| Variable | Description |
|----------|-------------|
| `VISUM_VERSION_FILE` | Filename of the Visum version file |
| `PROCEDURE_SEQ` | Path to the Visum procedure sequence XML |

### Running the Pipeline

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:

1. **Motorized skims** — Using Visum `Visum_Runner.py`. Automatically outputs required files to run non-motorized skims.
2. **Non-motorized skim preprocessor** — Prepares walk network inputs via `2zoneSkim_preprocessor.py`.
3. **Non-motorized skims** — Computes MAZ-to-MAZ and MAZ-to-stop walk skims via `2zoneSkim.py`.
4. **Land use preprocessor** — Builds ActivitySim-ready land use table via `preprocessor.py`.
5. **Run ActivitySim** -- Runs ActivitySim -- (not yet implemented)
4 changes: 4 additions & 0 deletions ext_dependencies/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory – these are external dependencies
# managed by setup_environment.bat and should not be tracked in SimOR.
*
!.gitignore
14 changes: 14 additions & 0 deletions ext_dependencies/maz_skimming/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[project]
name = "maz-skimming"
version = "0.1.0"
description = "Python environment for MAZ-to-MAZ and MAZ-to-stop non-motorized skimming"
requires-python = ">=3.10,<3.11"

dependencies = [
"numpy>=1.24,<2",
"pandas>=2.2,<3",
"geopandas>=1.0,<2",
"pandana==0.7",
"pyyaml>=6.0,<7",
"shapely>=2.0,<3",
]
Loading