Skip to content
This repository was archived by the owner on Jul 19, 2026. It is now read-only.

Commit a46aa9f

Browse files
committed
optimizer: score against explicit safety and coordination burden
1 parent a882f1b commit a46aa9f

1 file changed

Lines changed: 31 additions & 22 deletions

File tree

crates/strix-optimizer/src/evaluator.rs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,11 @@ impl DoctrineProfile {
101101
match self {
102102
Self::Balanced => DoctrineScoring {
103103
objective_0: ObjectiveBlend {
104-
survival_rate: 0.50,
105-
stability: 0.15,
104+
survival_rate: 0.48,
105+
stability: 0.14,
106106
battery_mean: 0.0,
107107
battery_floor: 0.10,
108-
safety_margin: 0.25,
108+
safety_margin: 0.28,
109109
coordination_margin: 0.0,
110110
recovery_margin: 0.0,
111111
},
@@ -130,11 +130,11 @@ impl DoctrineProfile {
130130
},
131131
Self::SurvivalFirst => DoctrineScoring {
132132
objective_0: ObjectiveBlend {
133-
survival_rate: 0.60,
133+
survival_rate: 0.50,
134134
stability: 0.05,
135135
battery_mean: 0.0,
136136
battery_floor: 0.10,
137-
safety_margin: 0.25,
137+
safety_margin: 0.35,
138138
coordination_margin: 0.0,
139139
recovery_margin: 0.0,
140140
},
@@ -179,9 +179,9 @@ impl DoctrineProfile {
179179
objective_2: ObjectiveBlend {
180180
survival_rate: 0.0,
181181
stability: 0.0,
182-
battery_mean: 0.40,
183-
battery_floor: 0.20,
184-
safety_margin: 0.20,
182+
battery_mean: 0.50,
183+
battery_floor: 0.25,
184+
safety_margin: 0.05,
185185
coordination_margin: 0.20,
186186
recovery_margin: 0.0,
187187
},
@@ -235,13 +235,13 @@ impl DoctrineProfile {
235235
recovery_margin: 0.25,
236236
},
237237
objective_2: ObjectiveBlend {
238-
survival_rate: 0.15,
239-
stability: 0.0,
240-
battery_mean: 0.35,
241-
battery_floor: 0.15,
242-
safety_margin: 0.15,
243-
coordination_margin: 0.20,
244-
recovery_margin: 0.0,
238+
survival_rate: 0.25,
239+
stability: 0.20,
240+
battery_mean: 0.15,
241+
battery_floor: 0.05,
242+
safety_margin: 0.10,
243+
coordination_margin: 0.10,
244+
recovery_margin: 0.15,
245245
},
246246
},
247247
}
@@ -291,9 +291,17 @@ impl ObjectiveComponents {
291291
let stability = (1.0 - churn_rate * 50.0).clamp(0.0, 1.0);
292292
let battery_mean = agg.battery_mean.clamp(0.0, 1.0);
293293
let battery_floor = agg.battery_min.clamp(0.0, 1.0);
294-
let safety_margin = (1.0 - agg.cbf_violations as f64 / n_init).clamp(0.0, 1.0);
295-
let coordination_load = agg.auction_rounds as f64 / total_ticks;
296-
let coordination_margin = (1.0 - coordination_load * 5.0).clamp(0.0, 1.0);
294+
let violation_rate = agg.cbf_violations as f64 / n_init;
295+
let safety_margin = (1.0 - violation_rate - 0.35 * agg.cbf_burden_mean.clamp(0.0, 1.0))
296+
.clamp(0.0, 1.0);
297+
let coordination_round_rate = agg.auction_rounds as f64 / total_ticks;
298+
let coordination_peak =
299+
(agg.coordination_churn_peak as f64 / n_init).clamp(0.0, 1.0);
300+
let coordination_margin =
301+
(1.0 - 0.65 * agg.coordination_burden_mean.clamp(0.0, 1.0)
302+
- 0.20 * coordination_round_rate.clamp(0.0, 1.0)
303+
- 0.15 * coordination_peak)
304+
.clamp(0.0, 1.0);
297305
let recovery_pressure =
298306
(agg.forced_evade_count as f64 + 0.5 * agg.kill_zones_created as f64) / n_init;
299307
let recovery_margin = (1.0 - recovery_pressure).clamp(0.0, 1.0);
@@ -615,12 +623,13 @@ mod tests {
615623
fn persistent_isr_rewards_reserve_efficiency_more_than_aggressive_strike() {
616624
let report = synthetic_report(Aggregates {
617625
total_ticks: 100,
618-
drones_survived: 9,
619-
regime_changes: 2,
620-
battery_min: 0.8,
621-
battery_mean: 0.9,
626+
drones_survived: 6,
627+
regime_changes: 8,
628+
battery_min: 0.9,
629+
battery_mean: 0.95,
622630
auction_rounds: 2,
623631
cbf_violations: 0,
632+
coordination_burden_mean: 0.05,
624633
forced_evade_count: 0,
625634
kill_zones_created: 0,
626635
..Default::default()

0 commit comments

Comments
 (0)