Adversarial Decision-Equivalent Training / README.md

Failed on benchmark

Raw ⬇ ZIP

Adversarial Decision-Equivalent Training MVP

run_experiment.py implements a smallest meaningful two-route instance of budgeted adversarial decision-equivalent training.

What is implemented

  • Exact enumeration of all interdiction subsets with cardinality at most B.
  • Exact hard shortest-path decisions and regret evaluation.
  • A fixed-seed mechanism check for the decision-equivalence failure mode: c=[2,1], prediction [3,0.5], and a delay on edge 1.
  • Three equal-step predictors:
    • mse: edge-cost MSE (PFL-style control)
    • nominal: nominal soft decision loss plus a small MSE stabilizer
    • adversarial: maximum soft decision loss over all feasible interdictions plus the same stabilizer
  • Exact evaluation of nominal regret, worst-case budgeted regret, adversarial flip rate, and cost MSE.

The training loss uses cross-entropy on the oracle path choice as the differentiable soft shortest-path surrogate. Hard shortest paths are retained for evaluation, matching the implementation plan's discrete-evaluation / differentiable-training approximation.

Reproduce

/home/maxwelhelp/main/bin/python3 run_experiment.py

The run writes results.json and uses seed 2028.

Observed fixed-seed result

The mechanism check found regret onset at delay 1.05 on a grid (theoretical boundary 1.0), a fitted regret-vs-delay slope of 1.0000000000000002, and exact cost/delay scaling error 0.

Training metrics from results.json:

| model | nominal regret | worst regret | max worst regret | adversarial flip rate | cost MSE | |---|---:|---:|---:|---:|---:| | MSE | 0.0000 | 0.0000 | 0.0000 | 0.000 | 0.000513 | | nominal | 0.0000 | 0.099685 | 0.438445 | 0.325 | 0.041751 | | adversarial | 0.0000 | 0.0000 | 0.0000 | 0.000 | 0.056332 |

Thus adversarial training improves over nominal decision-only training on the intended worst-case metric in this toy setting, but it does not beat MSE here because the predictor can learn the simple exact cost mapping. This is a mechanism/MVP result, not evidence of a generalization win on larger graph datasets.