use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationStrategyConfig {
pub multi_objective: MultiObjectiveConfig,
pub constraint_handling: ConstraintHandlingConfig,
pub search_strategies: Vec<SearchStrategy>,
pub exploration_exploitation: ExplorationExploitationConfig,
pub adaptive_strategies: AdaptiveStrategyConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MultiObjectiveConfig {
pub enable_multi_objective: bool,
pub objectives: HashMap<String, f64>,
pub pareto_optimization: bool,
pub scalarization_methods: Vec<ScalarizationMethod>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ScalarizationMethod {
WeightedSum,
Chebyshev,
AugmentedChebyshev,
BoundaryIntersection,
AchievementFunction,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConstraintHandlingConfig {
pub constraint_types: Vec<ConstraintType>,
pub penalty_methods: Vec<PenaltyMethod>,
pub constraint_tolerance: f64,
pub feasibility_preservation: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ConstraintType {
Equality,
Inequality,
Box,
Nonlinear,
Integer,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PenaltyMethod {
ExteriorPenalty,
InteriorPenalty,
AugmentedLagrangian,
BarrierMethod,
FilterMethod,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SearchStrategy {
GradientBased,
EvolutionaryAlgorithm,
SwarmIntelligence,
SimulatedAnnealing,
BayesianOptimization,
ReinforcementLearning,
HybridMethods,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExplorationExploitationConfig {
pub initial_exploration_rate: f64,
pub exploration_decay: f64,
pub min_exploration_rate: f64,
pub exploitation_threshold: f64,
pub adaptive_balancing: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptiveStrategyConfig {
pub enable_adaptive: bool,
pub strategy_selection: Vec<StrategySelectionMethod>,
pub performance_feedback: bool,
pub strategy_mutation: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StrategySelectionMethod {
PerformanceBased,
BanditAlgorithm,
ReinforcementLearning,
HeuristicRules,
MachineLearning,
}