3.7 KiB
3.7 KiB
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, andDispatch. - 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.yamlas 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
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.csvresults/paper_fixed/tables/per_seed_costs.csvresults/paper_fixed/tables/statistical_tests.csvresults/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.
2026-06-02 follow-up algorithm fidelity fix
Findings addressed
- ALNS, T-ALNS, and T-ALNS-RRD did not distinguish
sigma_2current-solution improvements fromsigma_3simulated-annealing accepted non-improving moves. - T-ALNS diversification intensity used adaptive Tabu tenure instead of the paper's actual move-memory occupancy
|T_move| / |T_move|max.
Changes made
- Reward assignment now follows the paper's four levels:
reward_global_bestfor new global best.reward_improvementfor accepted moves that improve the previous current solution.reward_acceptedfor accepted non-improving moves.reward_rejectedfor rejected moves.
- Added
MoveTabu.utilizationand changed Eq.27 diversification intensity to use actual move Tabu list occupancy.
Local validation
- Per user instruction, no local Python tests, smoke tests, or full experiments were run.
- Static checks only: source inspection and
git diff --check.