# PROGRESS ## 2026-06-02 T-ALNS-RRD reproduction fidelity fix ### Findings addressed - The route travel component previously counted route elapsed time, which included waiting and service duration, instead of only `sum t_ij(T_i)` from the paper objective. - RRD event generation and rollout used unseeded RNGs, so the same algorithm seed could produce different event streams and dispatch outcomes. - Traffic incidents mutated the shared traffic tensor during detection, which could leak into later evaluations when an event was not dispatched. - Rollout Tabu adjustment used the wrong sign for a cost-minimizing score: Tabu actions were rewarded and non-Tabu actions were penalized. - Urgent-order actions could insert a negative placeholder node into fixed-size traffic tensors, causing invalid route evaluation. - T-ALNS traffic aspiration did not compare against the current solution, and frequency memory did not use congestion-weighted updates from Eq.34. ### Changes made - Corrected Eq.1 cost accounting so travel cost is only arc traversal time; waiting and service remain part of time propagation. - Documented hold-last-value traffic bucket behavior for customer windows after the paper's 6:00-18:00 traffic horizon. - Restored congestion penalty generation to Eq.9 semantics: `rho = theta * gamma`. - Threaded deterministic seeds through `EventGenerator`, `RolloutEngine`, and `Dispatch`. - Made traffic incident severity temporary during dispatch evaluation and restored the base tensor with `try/finally`. - Corrected rollout Tabu penalty/bonus direction for a cost-minimizing dispatch value. - Reworked unsupported urgent-order insertion into fixed-graph penalty actions instead of invalid synthetic nodes. - Added congestion-weighted frequency memory updates and current-solution traffic aspiration checks. - Added `configs/paper.yaml` as the canonical paper-aligned server experiment config. ### Local validation - Per user instruction, no local Python tests, smoke tests, or full experiments were run in this round. - Static review only: inspect source changes, config shape, and git diff before commit. ### Server run command ```bash cd t_alns_rrd_reproduction pip install -r requirements.txt python src/experiments/run_main_comparison.py --config paper --seeds 30 --iterations 1000 --time-limit 600 --output results/paper_fixed ``` ### Expected server outputs - `results/paper_fixed/tables/main_comparison.csv` - `results/paper_fixed/tables/per_seed_costs.csv` - `results/paper_fixed/tables/statistical_tests.csv` - `results/paper_fixed/logs/convergence.npz` ### Interpretation rule - Check whether Static > TA-Greedy > ALNS-Base > T-ALNS > T-ALNS-RRD in total cost, CES decreases, and OTDR improves. - If the paper trend is not reproduced, keep the generated tables and record the failed metrics honestly instead of tuning results by hand.