use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum SelectionStrategy {
#[default]
CostBased,
SuccessRateWeighted,
PerformanceFirst,
Adaptive,
LoadBalanced,
CapabilityAware,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SelectionWeights {
pub cost: f32,
pub success_rate: f32,
pub performance: f32,
pub load: f32,
}
impl Default for SelectionWeights {
fn default() -> Self {
Self {
cost: 0.20,
success_rate: 0.30,
performance: 0.25,
load: 0.25,
}
}
}