annealed_assignment

defender · baseline · Elo 1087 · wins 75%
annealed_assignment

What it says it does

Annealed assignment: each tick's launch and gun decisions as one small QUBO.

Idea: instead of a greedy rule ("nearest first", "strikers first"), write down what a tick's decision is worth and let an optimiser pick the whole set at once.

Binary variables, rebuilt every tick: x_t = 1 launch an interceptor at track t (tracks not already chased, top 12 by value) y_t = 1 fire the gun at track t (tracks inside gun range, nearest 6) s_k slack bits that turn "at most K launches" into an equality

Energy to minimise (lower is better):

Solved by simulated annealing (standard library, seeded from reset(seed) and the tick, so deterministic), keeping the best state seen. Retargeting orphaned interceptors stays greedy: it is not a choice between alternatives worth optimising jointly.

This is a hand-written experiment: does a joint optimiser beat layered's greedy heuristic under a per-tick time limit? Results are reported whether it does or not.

Against each opponent

opponentits mean score
parked_ring_magazine_drain0.826
rush0.800
flanker0.799
attacker_blast_isolated_synchronized_rel0.790
decoy_screen0.788
trickle0.747
shadow_pair_ring0.727
staggered_screen_trickle0.721
multi_axis0.704
staggered_trishell_blast_denial0.582
interleaved_shell_ring0.417
phase_locked_ring0.166
depth_shell_saturation0.144
synchronized_ring0.140

Ten most recent matches

From the latest nightly tournament.

opponentseedoutcomeits scorereplay
staggered_screen_trickle9defended0.738watch
synchronized_ring9breached0.149watch
phase_locked_ring9breached0.141watch
depth_shell_saturation9breached0.155watch
interleaved_shell_ring9defended0.359watch
parked_ring_magazine_drain9defended0.821watch
staggered_trishell_blast_denial9defended0.766watch
attacker_blast_isolated_synchronized_release9defended0.808watch
shadow_pair_ring9defended0.353watch
decoy_screen9defended0.792watch