use serde::{Deserialize, Serialize};
use std::collections::{HashMap, VecDeque};
use std::time::SystemTime;
use super::results::{OptimizationResult, UnifiedBenchmarkResult};
pub struct OptimizationEngine {
objective_functions: HashMap<String, Box<dyn Fn(&UnifiedBenchmarkResult) -> f64 + Send + Sync>>,
optimization_history: VecDeque<OptimizationResult>,
current_strategy: OptimizationStrategy,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationStrategy {
pub strategy_name: String,
pub parameters: HashMap<String, f64>,
pub last_updated: SystemTime,
pub effectiveness_score: f64,
}
impl Default for OptimizationEngine {
fn default() -> Self {
Self::new()
}
}
impl OptimizationEngine {
pub fn new() -> Self {
Self {
objective_functions: HashMap::new(),
optimization_history: VecDeque::new(),
current_strategy: OptimizationStrategy {
strategy_name: "default".to_string(),
parameters: HashMap::new(),
last_updated: SystemTime::now(),
effectiveness_score: 0.0,
},
}
}
}