Skip to content

Decision records

Short notes on the choices that shaped PyTraf, with the reason for each.

# decision
0001 A zone is a node; no connectors
0002 Link-labelled shortest paths and an explicit turn table
0003 Gradient projection with a refresh after every path shift
0004 Multi-class model: PCE, extra costs, allowed links
0005 Python API conventions
0006 Frank-Wolfe stays a reference solver
0007 Parallel sweeps and the hot path
0008 Paths as a tree of steps, per origin
0009 GMNS input: zones span nodes, movements restrict listed links
0010 Time periods: unfinished trips preload the next period (superseded)
0011 Explicit preloads instead of carried-over trips
0012 Unreachable demand: an error by default, skipped on request
0013 A grouped result, checked options and network.assign