Commit 4876043
CP-SAT knobs: worker env, domain tightening, solver params, trace capture, secondary costs
From the d=8192 scheduling campaign (2026-06-09/10):
- TW_CPSAT_WORKERS env (default 16, unchanged): the 64-CPU Modal compile
container sets 64; confirmed num_search_workers reaches ortools.
- tighten_domains: per-node [earliest, latest] layer domains via
mode-aware propagation (per-sublayer earliest/latest; matches CP-SAT
presolve's own bound exactly — proves the d8192 critical path = 50).
Saves ~7s presolve + ~9s to first incumbent on the DOOM graph.
- critical_path_layers(): public exact dependency-depth bound.
- solver_params: generic CpSolver parameter overrides for experiments.
- solution_trace: per-incumbent full-assignment capture (the basis of
the trajectory analysis that killed secondary objectives).
- Costs.earliness / Costs.waste: lexicographic secondaries, kept as
MEASURED FAILURES — trajectory data shows waste RISES as layers fall
(compaction stretches lifetimes) and earliness rewards irrelevant
early-region shuffling; docstrings record the mechanism so they are
not re-proposed. objective_scale on BuiltModel/SolveStats recovers
the primary value.
- NOTE: ortools 9.15 IntVar.Proto()/.proto returns corrupted memory
(segfault); domain bounds are tracked at var creation instead.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>1 parent d2ec768 commit 4876043
2 files changed
Lines changed: 310 additions & 46 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
604 | 604 | | |
605 | 605 | | |
606 | 606 | | |
607 | | - | |
608 | | - | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
609 | 610 | | |
610 | 611 | | |
611 | 612 | | |
| |||
0 commit comments