Internal Record
[EXAMPLE] AED Placement Optimization
Classical · GPU Simulated Annealing · 120 variables · 2026-08-15
Illustrative fixture covering every optional field and figure type in schema v1.
5-minute reachability
Problem
Illustrative problem used only to exercise every field the schema supports. Not a real deployment.
Objective: Maximize simulated population coverage within a 5-minute response radius.
120 candidate sites, 8400 synthetic demand points.
- Budget caps total site count at 120.
- At least one site per district.
Approach
GPU Simulated Annealing
ClassicalChosen for fast iteration during the design phase; revisits candidate placements in seconds rather than the ~1 hour a commercial MILP solver needed at this scale.
| Alternative | Why not |
|---|---|
| Gurobi | 3600s to converge to the reported gap; too slow for interactive exploration. |
Figures
Convergence
Coverage
Synthetic DataParameter sweep
Solver comparison
Site detail
| Site | Coverage |
|---|---|
| A-14 | 23 |
| B-02 | 18 |
Configuration comparison
Current
Optimized
Map overview

Source data: map-points.csv
Implementation notes
Penalty weights were tuned by grid search; see `parameters` for the final values.
Reliability
- Runs
- 30
- Median
- 86.65
- Range
- 84.2 – 88
- Success rate
- 93%
Optimality
- Bound
- -1863.44
- Achieved
- -1847.23
- Gap
- 0.87%
Within 1% of the theoretical bound; further compute has limited marginal benefit.
Value
- Illustrative avoided cost3,360,000 TWD
illustrative
Illustrative figure for schema testing only, not a real cost model.
Internal estimate for schema-testing purposes; not independently verified.
Internal Notes
What worked: GPU batching across replicas gave a large wall-clock speedup over sequential runs.
What didn't: Early penalty weights were too aggressive and collapsed the search early.
Next time: Start the parameter sweep earlier in the process.
Reproduce
- Commit
- a3f9c21
- Repository
- https://github.com/example/example-repo
- Command
- python experiment/aed.py --config configs/example.yaml