← Back to Investigation Overview ⚠ Based on v4/v5 estimates with zone bug. Results will change after v6 (fixed) converges.

DDCM Work Timing: Why Agents Delay Work

How μhome > δ causes work delay — and why δ was suppressed by estimation bugs
Higashihiroshima DDCM · K=10 · N=825 workers · LL = −19,187.07 · 2026-05-10

1 Executive Summary

14:51
Simulated work start
08:30
Observed work start
0.0617
μhome (per min)
0.0408
δ on-schedule (per min)
🔍
Simulation is correct — but the parameters are artifacts The 14:51 work start is the model's mathematically optimal behaviour given the v5 estimates. Because μhome = 0.0617 > δ = 0.0408, agents earn more per minute at home than at work. However, δ = 0.0408 is not a valid estimate — it was suppressed to near-zero by the zone-matching bug (primary cause): WORK states were only built for Person 0's zone, so observed WORK steps were silently dropped from Uobs for all other workers. The 14:51 work start is a symptom of that bug, not a finding about behaviour.

The simulation pipeline itself is correct — it faithfully implements the optimal policy given the parameters it receives. The problem is upstream: the estimated δ is an artifact. Once v6 converges with both bugs fixed, the timing results from this report are expected to change substantially.

Root cause: Zone-matching bug in graph construction — WORK states were only built for Person 0's zone, so observed WORK steps were silently dropped from Uobs for 701/702 workers. δ had no numerator signal and was pushed toward zero by V(s0). Non-workers are also excluded from v6 as correct methodology (workers-only study design), though their impact in v5 was minor (9 out of ~600 persons). See Investigation Overview for full details.
What this report still shows: The simulation is mechanically correct — when μhome > δ, agents rationally delay work. This analysis is valuable for understanding how the model behaves, even if the input parameters were wrong. The breakeven condition δ = μhome remains the correct theoretical threshold for on-time work departure.

2 Estimated Parameters (K=10 NFXP)

NFXP, L-BFGS-B, N=825 workers, 28 groups by (ts, te), LL = −19,187.07. v5 is the only converged run (v4 crashed with OOM mid-optimization). Transport parameters fixed at HH MNL estimates.

⚠ v5 estimate — zone bug active. δ = 0.0408 is an artifact of the zone-matching bug (WORK steps invisible in Uobs). All parameters below are shown for diagnostic reference only. v6 (zone-agnostic + workers-only) is running; estimates will be updated when it converges.
Index Parameter Description Estimate Note
[0] δ (delta) WORK on-schedule marginal utility /min 0.0408 < μ_home ← artifact of zone bug
[1] α (alpha) Pre-schedule earliness penalty rate 0.0011 Mild
[2] β (beta) Post-schedule lateness penalty rate 0.0030 Sharp after t_e
[3] β₁_shop SHOPPING attractiveness sensitivity 0.3233
[4] β₀_shop SHOPPING base marginal utility /min −0.7955 Negative base
[5] β₁_leis LEISURE attractiveness sensitivity 0.3918
[6] β₀_leis LEISURE base marginal utility /min −0.2652
[7] c_change Activity switching cost −0.3013 Net −0.60/trip
[8] μ_home HOME marginal utility /min 0.0617 > δ ← consequence of zone bug
[9] θ_travel Travel time scale factor 1.0363 ≈1 (calibrated)
Key finding: δ/μhome = 0.0408/0.0617 = 0.661 — 34% below the breakeven of 1.0. Every on-schedule work step (0.612 util) earns less than the equivalent home step (0.925 util).
Fixed transport parameter Value
Car constant 1.0720
Train constant 0.1190
Walk constant 0.0000 (base)
Bicycle constant 0.6860
Bus constant −0.2760
Travel time coef (θ_t) −0.0260 /min
Cost coef (θ_c) −0.0001 /JPY

3 Simulation Validation: Observed vs Simulated (N=934)

Forward simulation using estimated K=10 parameters, 934 worker agents across 28 schedule groups. Observed data from Higashihiroshima household travel survey.

Results based on v5 estimates (zone bug active): mode shares (Bicycle over-predicted, Train under-predicted), activity time shares (WORK heavily under-predicted), and work start time (~14:51 vs ~8:30) all reflect δ being artificially suppressed by the zone-matching bug — not a structural model limitation. Results will change after v6 converges.
Metric Observed Simulated Gap Cause
Work start time (mean) ~08:30 14:51 +6.4h μ_home > δ; BI near-indifferent in plateau
Home return time (mean) ~18:00 18:04 +0.1h Good match
Trips per person (mean) ~4–5 2.41 −2 c_change cost discourages extra trips
Car mode share 58.0% 40.7% −17pp Bicycle over-predicted
Train mode share 23.1% 0.3% −23pp Train under-predicted
Bicycle mode share 4.2% 55.0% +51pp Bicycle constant may be mis-calibrated
WORK time share 24.9% 6.2% −19pp Agents work minimum duration; late start
HOME time share 62.1% 85.0% +23pp Consequence of μ_home > δ

Figure: Observed vs Simulated Distributions — Generated from forward simulation (N=934 workers, K=10 NFXP parameters).

Observed vs simulated distributions

4 The Utility Specification (K=10 Mu(t))

WORK utility — piecewise linear schedule constraint

μwork(t) × Δt where:
μwork(t) = δ − α·(ts − t)     if t < ts   (pre-schedule, arriving early)
μwork(t) = δ                  if ts ≤ t ≤ te   (on-schedule)
μwork(t) = δ − β·(t − te)     if t > te   (post-schedule, arriving late)
Estimated: δ = 0.0408, α = 0.0011, β = 0.003, ts = 08:00, te = 17:00 (group 003)

HOME utility — flat reservation threshold

μhome × Δt
Estimated: μhome = 0.0617

Per 15-min step: HOME = 0.0617 × 15 = 0.925, WORK on-schedule = 0.0408 × 15 = 0.612. HOME exceeds WORK by 0.313 per step throughout the 9-hour on-schedule window.

Use the sliders below to explore how the utility profile changes with different parameter values. The blue horizontal line is HOME; the red curve is WORK. The shaded green band marks the on-schedule window [ts, te].

⚠ HOME utility exceeds WORK throughout the on-schedule window — agents have no incentive to start work at ts.

5 Numerical Evidence: Per-Step Utilities

Computed from estimated parameters for group 003 (08:00–17:00 schedule, Δt = 15 min):

Time Region WORK utility / step HOME utility / step Winner Δ (HOME − WORK)

The α penalty makes pre-schedule work very unattractive. The β penalty discourages post-17:00 work. But throughout the 9-hour on-schedule window (08:00–17:00), HOME consistently beats WORK by 0.313 per step.

6 Total Day Utility by Work Departure Time

For a worker who must do exactly one work trip (mandatory sequence), the total day utility is a function of when they depart for work. We fix:

U(tdep) = tdep/Δt × μhome·Δt  +  Σ μwork(t)·Δt [over work period]  +  (Tend − tarr,home)/Δt × μhome·Δt where tarr,work = tdep + 30min, tarr,home = tdep + 30 + W + 30

The plot below shows U(tdep) for the estimated parameters. For any two on-schedule departure times with the same work duration W, the total utility is identical: home steps gained before work exactly cancel home steps lost after work. The curve is therefore a flat plateau across the entire on-schedule window, rising from the pre-schedule region (penalty reduces work utility) and falling after the on-schedule window ends (post-schedule penalty). The "Optimal" marker shows the first point of the plateau — not a unique maximum.

Why the plateau is flat: Total home steps = 96 − 4 (travel) − W/Δt (work) = constant regardless of when you depart. So U = constant_home + Σ μwork(t)·Δt. If all work steps are on-schedule, Σ μwork = W × δ = constant too. Hence U is identical for any on-schedule departure.
Plateau starts at: (first on-schedule departure)  |  Plateau utility:  |  Pre-plateau utility (very early):  |  Plateau width:

7 The Value Function and Mandatory Sequence

How mandatory_seq works

The backward induction (BI) assigns V(terminal) > −∞ only to states where the mandatory activity sequence has been completed. For workers, WORK must appear in their path.

Without mandatory_seq, the agent would never go to work (HOME always wins per-step). With mandatory_seq, they go — but at the utility-maximizing moment.

Why 14:51? (overview)

Three mechanisms act together — see the detailed table below the plots. In brief:

  • α penalty blocks pre-8:00 arrivals (hard floor)
  • Flat plateau means agents are nearly indifferent within [7:30, 16:30]
  • Slightly negative ΔQ throughout the plateau skews departures late

The exact 14:51 is a numerical result from the full BI — not derivable from a simple total-utility sum. It reflects c_change, travel utility, and Δt=15min discretisation all interacting in the value function.

Simple two-path comparison (group 003)

Early path — full workday (depart 7:30, arrive 8:00, work 9h until 17:00)
HOME (0:00–7:30) + WORK (8:00–17:00) + HOME (17:30–24:00)
= 30×0.925 + 36×0.612 + 26×0.925
= 27.8 + 22.0 + 24.1 = 73.9
Late path — minimum work (depart 13:30, arrive 14:00, work 3h until 17:00)
HOME (0:00–13:30) + WORK (14:00–17:00) + HOME (17:30–24:00)
= 54×0.925 + 12×0.612 + 26×0.925
= 50.0 + 7.3 + 24.1 = 81.4
Same work duration (W=3h), different arrival times — utility is equal:
Early (arrive 8:00, W=3h): HOME 0:00–7:30 + WORK 8:00–11:00 + HOME 11:30–24:00
= 30×0.925 + 12×0.612 + 50×0.925 = 27.8 + 7.3 + 46.3 = 81.4 ← same!
Home gained before = home lost after. They cancel exactly.
Key: late wins only when comparing DIFFERENT work durations. Since μhome > δ, agents prefer fewer work steps. The BI finds that doing minimum work (the constraint floor) and delaying departure until the last viable moment maximises utility. But with the same W, any on-schedule departure time gives identical total utility. Timing in the BI is driven by the value function, not by a simple total-sum comparison.

Why 14:51 specifically? — Three separate mechanisms

Common misconception: "The plateau causes 14:51." — This is wrong. The plateau says agents are indifferent between any on-schedule departure with the same work duration. The 14:51 comes from three separate mechanisms acting together.

① Pre-schedule α penalty blocks early starts

Departing before 7:30 (arriving before ts=8:00) incurs the α·(ts−t) penalty. At 7:00 arrival, WORK utility = −6.81 per step vs HOME = +0.925. The BI assigns very low probability to pre-plateau departures. This is a hard floor, not the plateau.

μwork(t=7:00) = (0.0408 − 0.0011×60)×15 = −0.378
μhome = 0.0617×15 = +0.925

② Within the plateau, BI is nearly indifferent

At each HOME step during the on-schedule window, the agent compares Q(stay HOME) vs Q(go to WORK). Because home time gained before work exactly cancels home time lost after, ΔQ ≈ 0 throughout the plateau. There is no strong signal pulling agents to 7:30 or 16:30.

ΔQ = Q(go to WORK) − Q(stay HOME)
≈ μhome·Ttravel − [correction terms]
≈ small, depends on c_change & travel utility

③ Slight negative ΔQ → systematic late skew

A ΔQ exactly equal to zero would produce departures uniformly across [7:30, 16:30] → mean arrival ~12:00. The observed 14:51 mean suggests ΔQ is slightly negative — agents marginally prefer staying home at each plateau step. This slight preference accumulates over many steps, skewing the distribution toward later departures. The exact 14:51 is a numerical BI result from the specific parameter values (c_change, θtravel, OD times, Δt=15min discretisation) — not analytically derivable from a simple utility sum.

Mechanism Causes Analytically derivable?
Pre-schedule α penalty Rules out departures before ~7:30 YES — α×(ts−t) formula
Flat plateau (same W) No strong timing signal within on-schedule window; agents nearly indifferent YES — home steps cancel exactly
μhome > δ → minimum work Agents prefer to minimise work duration; work at δ<μhome is "costly" YES — breakeven δ=μhome
Exact 14:51 timing Emergent from slightly negative ΔQ accumulating over plateau steps + softmax sampling NO — numerical BI result; depends on c_change, travel utility, discretisation

8 Breakeven Analysis: What Would Fix Timing?

The mathematics

Compare two strategies for a worker with schedule [ts, te]:

  • Early: arrive at ts, work W hours
  • Late: arrive at te − W, work W hours (still on-schedule)

With same W: timing doesn't matter (flat plateau). The breakeven instead governs work duration choice. Compare full-workday (Wmax) vs minimum-work (Wmin):

ΔU = (Wmax − Wmin) × (δ − μhome) × Δt

δ > μhome → full workday is better (agents go early, work long)
δ = μhome → indifferent about work duration
δ < μhome → minimum work is better (agents delay, work minimum)

Breakeven: δ* = μhome = 0.0617 per minute

Current δ = 0.0408 (34% below breakeven). Agents prefer minimum work at latest feasible departure. The exact timing (14:51) is then set by the BI value function — the point where mandatory_seq can no longer be deferred.

Current ratio δ/μhome = 0.661 — well below the 1.0 threshold. Agents delay work at all on-schedule times.

9 Why Did NFXP Estimate μhome > δ?

The identification challenge

The NFXP log-likelihood reflects the probability of each individual step choice, not the aggregate timing distribution. The optimizer minimises −LL over mode choice, destination, activity type, and timing simultaneously. Timing accuracy can be traded off for mode/destination fit.

Why δ is pulled down

Under K=10 (no hard time windows), the soft Mu(t) gradient is the only timing mechanism. The wide on-schedule window (08:00–17:00) means a departure at 8:00 and at 16:00 have identical instantaneous WORK utility (both get δ). The optimizer cannot distinguish early from late arrivals within the window from instantaneous utilities alone.

The mandatory_seq compensation

Because mandatory_seq guarantees agents eventually visit WORK regardless of δ, a lower δ can still produce positive LL on observed paths. The BI adjusts V to make WORK feasible at any on-schedule time. The optimizer discovers it can improve LL on other dimensions (e.g., HOME duration, mode choice) by setting μhome high, even at the cost of wrong work timing.

Key insight: With K=10 (soft timing only), δ and μhome are weakly identified relative to each other from timing data alone. The wide schedule window [08:00–17:00] makes it impossible for the MLE to pin down δ > μhome from this data without an additional constraint.

Role of c_change

The estimated c_change = −0.301 (switching cost per activity change) adds a fixed cost of −0.602 per round trip (home→work→home). This is independent of departure time, so it does not affect the optimal timing but does reduce the total number of trips. In earlier estimation runs, c_change drifted to −∞, which is a related but distinct problem.

10 Candidate Directions — Under Discussion

The following are candidate ideas, not a decided plan. Each has unresolved trade-offs that require supervisory discussion before any direction is committed.

Candidate A: Non-flat HOME utility
Currently μhome is a constant per minute throughout the day. If HOME utility decreases over the morning (agents grow "restless"), the model would naturally push departures earlier without touching the WORK specification.

Requires: new time-varying μhome(t) specification + re-estimation.
Open question: what functional form? How to identify the slope from data?
Candidate B: Non-flat WORK on-schedule utility
Currently δ is a constant on-schedule reward. A time-varying δ(t) — higher near ts, declining away from it — could attract agents toward the observed departure window more strongly than the current flat profile.

Requires: new δ(t) specification + re-estimation.
Open question: peaked or monotone? Risk of collinearity with α and β.
🗣
No direction decided Both candidates have unresolved trade-offs around functional form and identification. The right path depends on which utility re-specification is theoretically defensible. Needs supervisory discussion.

11 Interactive: Optimal Departure vs Parameter Ratio δ/μhome

This plot shows how the optimal work departure time changes as the ratio δ/μhome varies. When the ratio crosses 1.0 (δ = μhome), the optimal departure jumps to ts.

Why the simplified plot is flat at 07:30

In a simple home → work → home trip, the home utility before and after work cancel exactly: leaving 15 min later gains 15 min of home before departure but loses 15 min of home after return. Net effect on home utility: zero.

U(tdep) = home + work + home
home terms → constant (tdep cancels)
∴ only work utility matters for timing

Work utility peaks when the agent arrives on-schedule at ts = 08:00. So the optimal departure is always ts − Ttravel = 07:30, regardless of how δ or μhome compare.

Why the full simulation gives 14:51

The simplified model forces a work trip — there is no "stay home all day" option. The full backward induction always offers HOME as a competing choice at every time step.

When μhome > δ, home yields higher instantaneous utility than work. At each step, the agent prefers to stay one more step — and that preference propagates backwards through the value function, pushing the optimal departure later and later.

The agent eventually departs only when the post-schedule lateness penalty β drives work utility low enough that deferring further is no longer worth it. That threshold, set by the BI value function, lands at ~14:51.

12 Conclusions

Question Answer
Is the simulation pipeline running correctly? YES (t_s, t_e) is applied via Mu(t); graph is built correctly; BI is correct
Is timing_windows ignored by ConstraintMasks? YES, intentionally K=10 design: hard windows removed per new_settings.md S3
Is estimation and simulation consistent? YES Both use soft Mu(t) constraint only; parameters are internally consistent
Is the 14:51 work start a simulation bug? NO The simulation is mechanically correct — it reflects the optimal policy given the v5 parameters
Is this a model specification problem? NO The model specification is sound. δ was suppressed by an estimation bug (zone-matching), not a utility design flaw.
Was it an estimation bug? YES Zone-matching bug: WORK states only built for Person 0's zone → WORK steps silently dropped from Uobs for all other workers
What is the fix? DONE Zone-agnostic graph construction (mandatory_seq = [(WORK, None)]). v6 running with fix applied — results expected tomorrow morning.