#[derive(Debug, Clone, Copy, PartialEq)]
pub struct PolicyRunResult {
pub policy: &'static str,
pub kept_messages: usize,
pub context_tokens: usize,
pub fault_count: usize,
pub oracle_gap: usize,
pub reuse_rate: f64,
}
impl PolicyRunResult {
pub fn is_dominated_by(&self, other: &PolicyRunResult) -> bool {
let better_or_equal_on_all = other.context_tokens <= self.context_tokens
&& other.fault_count <= self.fault_count
&& other.oracle_gap <= self.oracle_gap
&& other.reuse_rate >= self.reuse_rate;
let strictly_better_on_one = other.context_tokens < self.context_tokens
|| other.fault_count < self.fault_count
|| other.oracle_gap < self.oracle_gap
|| other.reuse_rate > self.reuse_rate;
better_or_equal_on_all && strictly_better_on_one
}
}
pub fn pareto_frontier(results: &[PolicyRunResult]) -> Vec<&PolicyRunResult> {
results
.iter()
.filter(|candidate| {
!results
.iter()
.any(|other| !std::ptr::eq(*candidate, other) && candidate.is_dominated_by(other))
})
.collect()
}
pub fn reuse_rate(counts: &[usize; 2]) -> f64 {
let [warm, total] = *counts;
if total == 0 {
return 0.0;
}
warm as f64 / total as f64
}
#[cfg(test)]
mod tests {
use super::*;
fn sample(
policy: &'static str,
tokens: usize,
faults: usize,
gap: usize,
reuse: f64,
) -> PolicyRunResult {
PolicyRunResult {
policy,
kept_messages: 0,
context_tokens: tokens,
fault_count: faults,
oracle_gap: gap,
reuse_rate: reuse,
}
}
#[test]
fn strictly_better_on_all_axes_dominates() {
let a = sample("a", 1000, 5, 2, 0.5);
let b = sample("b", 500, 1, 0, 0.9);
assert!(a.is_dominated_by(&b));
assert!(!b.is_dominated_by(&a));
}
#[test]
fn tied_on_all_does_not_dominate() {
let a = sample("a", 1000, 5, 2, 0.5);
let b = sample("b", 1000, 5, 2, 0.5);
assert!(!a.is_dominated_by(&b));
assert!(!b.is_dominated_by(&a));
}
#[test]
fn pareto_frontier_keeps_nondominated_points() {
let results = vec![
sample("legacy", 24_000, 12, 4, 0.50),
sample("reset", 6_500, 5, 2, 0.62),
sample("dominated", 30_000, 20, 10, 0.10),
];
let frontier = pareto_frontier(&results);
let labels: Vec<&str> = frontier.iter().map(|r| r.policy).collect();
assert!(labels.contains(&"reset"));
assert!(!labels.contains(&"dominated"));
}
#[test]
fn reuse_rate_is_zero_when_total_is_zero() {
assert_eq!(reuse_rate(&[0, 0]), 0.0);
}
#[test]
fn reuse_rate_round_trips_typical_values() {
assert!((reuse_rate(&[7, 10]) - 0.7).abs() < 1e-9);
assert!((reuse_rate(&[10, 10]) - 1.0).abs() < 1e-9);
}
}