quantrs2_device/mapping_scirs2/
optimization.rs1use super::*;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct AdvancedOptimizationConfig {
8 pub enable_advanced: bool,
10 pub multi_objective: MultiObjectiveConfig,
12 pub constraint_handling: ConstraintHandlingConfig,
14 pub search_strategy: SearchStrategyConfig,
16 pub parallel_optimization: ParallelOptimizationConfig,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct MultiObjectiveConfig {
23 pub enable_multi_objective: bool,
25 pub objectives: Vec<OptimizationObjective>,
27 pub pareto_config: ParetoConfig,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct ParetoConfig {
34 pub population_size: usize,
36 pub generations: usize,
38 pub crossover_rate: f64,
40 pub mutation_rate: f64,
42 pub selection_method: SelectionMethod,
44 pub scalarization: ScalarizationMethod,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ConstraintHandlingConfig {
51 pub enable_constraints: bool,
53 pub constraint_types: Vec<ConstraintType>,
55 pub penalty_method: PenaltyMethod,
57 pub tolerance: f64,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct SearchStrategyConfig {
64 pub strategy: SearchStrategy,
66 pub hybrid_config: HybridSearchConfig,
68 pub budget: SearchBudgetConfig,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct HybridSearchConfig {
75 pub strategies: Vec<SearchStrategy>,
77 pub switching_criteria: SwitchingCriteria,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct SwitchingCriteria {
84 pub performance_threshold: f64,
86 pub stagnation_limit: usize,
88 pub time_limit: Duration,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
94pub struct SearchBudgetConfig {
95 pub max_evaluations: usize,
97 pub max_time: Duration,
99 pub target_quality: f64,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
105pub struct ParallelOptimizationConfig {
106 pub enable_parallel: bool,
108 pub num_workers: usize,
110 pub load_balancing: LoadBalancingStrategy,
112 pub synchronization: SynchronizationMethod,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct OptimizationMetrics {
119 pub optimization_time: Duration,
121 pub iterations: usize,
123 pub converged: bool,
125 pub final_objective: f64,
127 pub best_objective: f64,
129 pub improvement_ratio: f64,
131 pub constraint_violations: f64,
133 pub algorithm_metrics: HashMap<String, f64>,
135 pub resource_usage: ResourceUsageMetrics,
137}
138
139#[derive(Debug, Clone, Serialize, Deserialize)]
141pub struct ResourceUsageMetrics {
142 pub peak_memory: usize,
144 pub average_cpu: f64,
146 pub energy_consumption: Option<f64>,
148 pub network_overhead: Option<f64>,
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct ResultAnalysis {
155 pub analysis_type: ResultAnalysisType,
157 pub statistical_summary: StatisticalSummary,
159 pub trend_analysis: TrendAnalysis,
161 pub comparative_analysis: ComparativeAnalysis,
163 pub sensitivity_analysis: SensitivityAnalysis,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct StatisticalSummary {
170 pub mean: f64,
172 pub std_dev: f64,
174 pub min: f64,
176 pub max: f64,
178 pub median: f64,
180 pub confidence_interval_95: (f64, f64),
182}
183
184#[derive(Debug, Clone, Serialize, Deserialize)]
186pub struct TrendAnalysis {
187 pub trend_direction: TrendDirection,
189 pub improvement_rate: f64,
191 pub convergence_pattern: String,
193 pub plateau_analysis: Vec<PlateauInfo>,
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
199pub struct PlateauInfo {
200 pub start_iteration: usize,
202 pub end_iteration: usize,
204 pub duration: usize,
206 pub plateau_value: f64,
208}
209
210#[derive(Debug, Clone, Serialize, Deserialize)]
212pub struct ComparativeAnalysis {
213 pub baseline_comparisons: Vec<BaselineComparison>,
215 pub performance_ranking: usize,
217 pub significance_tests: HashMap<String, f64>,
219}
220
221#[derive(Debug, Clone, Serialize, Deserialize)]
223pub struct BaselineComparison {
224 pub baseline_name: String,
226 pub improvement_factor: f64,
228 pub p_value: f64,
230 pub effect_size: f64,
232 pub confidence: f64,
234}
235
236#[derive(Debug, Clone, Serialize, Deserialize)]
238pub struct SensitivityAnalysis {
239 pub parameter_sensitivity: HashMap<String, f64>,
241 pub robust_ranges: HashMap<String, (f64, f64)>,
243 pub critical_parameters: Vec<String>,
245 pub interaction_effects: HashMap<String, f64>,
247}