Headway
12

Evaluation line · 12 of 13

Presentation

Ten minutes of slides, then five minutes live in the terminal: the search trace, pruning with and without FC and AC-3, and the plan with the model switched on and off.

Open the slides

Controls
arrow keys, F for fullscreen, N for speaker notes
Speakers
Moaz, slides 1 to 5 · Ahmed, slides 6 to 10

Live demo script

Before the session, in a terminal at the project root:

.venv\Scripts\activate

python run_demo.py > $null      # warm up once; figures are in outputs/

Open outputs/demo_report.html in a browser tab, and keep the terminal large (font 14+).

Time Do Say
0:00-0:30 python run_demo.py and scroll to === INPUT "A generated Tuesday: 20 orders, windows of 15-60 min, 3 vans with shifts starting 08:00/09:00/10:00, depot at Midtown Center. Travel times are the NN's predictions times 1.2."
0:30-1:30 Scroll to === INTEGRATION LOOP "Loop 1: the CSP has 2 rules from the NN, for example the JFK order 16 conflicts with order 10. A* finds that van 0 cannot do JFK at 15:00-15:30 and then Upper East Side at 15:45, it would be 2.1 min late. That pair becomes a learned rule; loop 2: all on time."
1:30-2:15 === A* SEARCH TRACE "Each line is an expansion: where the van is, what it has visited, clock, g, h, f. h is admissible because it uses the cheapest time over all later departures, plus a waiting bound. Here f stays at 461: the window bound is already tight." Then SEARCH COUNTERS: "Same routes, A* 68 nodes vs UCS 132."
2:15-3:15 === CSP PRUNING "Same constraints, solvers switched on and off. (a) this day: BT 384 assignments, FC 21, FC+AC-3 20. (b) a hard rush-hour instance: 4,136 -> 1,701 -> 1,188, and 20 with most-constrained-first ordering."
3:15-4:00 === NN ON vs OFF "We replay each plan 50 times with real trip durations from the held-out week. NN on: 0.68 late per day; NN off, distance only: 0.70; historical: 1.38. One day is anecdotal; over 10 seeds with tight windows it is 5.2% vs 8.1% late."
4:00-4:30 Browser: demo_report.html - map, timeline, constraint graph "Coloured routes per van; the timeline shows arrival vs window and waiting; the dashed red edge is the learned rule."
4:30-5:00 python run_demo.py --impossible "Now order 0 is moved to JFK with a window of 08:00-08:20. The system says NO SOLUTION, explains that the earliest arrival is 08:48 even for the earliest van, and suggests widening that window by 30 min."

If something fails live: the full console output is saved in outputs/demo_log.txt, and the figures are already in outputs/. Show those instead.

Optional, if time allows: python -m pytest -q (38 passed in about 2 s).