1use std::collections::HashMap;
4use std::time::Duration;
5
6use super::hardware_adaptation::*;
7use super::ml_integration::*;
8use super::monitoring::*;
9use super::strategies::*;
10
11#[derive(Debug, Clone)]
13pub struct AdaptiveCompilationConfig {
14 pub realtime_optimization: RealtimeOptimizationConfig,
16 pub adaptive_strategies: AdaptiveStrategiesConfig,
18 pub performance_monitoring: PerformanceMonitoringConfig,
20 pub ml_optimization: MLOptimizationConfig,
22 pub circuit_analysis: CircuitAnalysisConfig,
24 pub hardware_adaptation: HardwareAdaptationConfig,
26 pub optimization_objectives: OptimizationObjectivesConfig,
28 pub caching_learning: CachingLearningConfig,
30}
31
32#[derive(Debug, Clone)]
34pub struct RealtimeOptimizationConfig {
35 pub enable_realtime: bool,
37 pub update_interval: Duration,
39 pub performance_threshold: f64,
41 pub max_optimization_time: Duration,
43 pub optimization_algorithms: Vec<OptimizationAlgorithm>,
45 pub parallel_optimization: ParallelOptimizationConfig,
47 pub adaptive_algorithm_selection: bool,
49}
50
51#[derive(Debug, Clone)]
53pub struct OptimizationObjectivesConfig {
54 pub primary_objectives: HashMap<String, f64>,
56 pub secondary_objectives: HashMap<String, f64>,
58 pub constraints: Vec<OptimizationConstraint>,
60 pub multi_objective: MultiObjectiveConfig,
62 pub dynamic_weighting: DynamicWeightingConfig,
64}
65
66#[derive(Debug, Clone)]
68pub struct CachingLearningConfig {
69 pub enable_caching: bool,
71 pub cache_size_limits: CacheSizeLimits,
73 pub eviction_policies: EvictionPolicies,
75 pub cache_learning: CacheLearningConfig,
77 pub distributed_caching: DistributedCachingConfig,
79}
80
81#[derive(Debug, Clone)]
83pub struct OptimizationConstraint {
84 pub name: String,
86 pub constraint_type: ConstraintType,
88 pub value: f64,
90 pub priority: f64,
92}
93
94#[derive(Debug, Clone, PartialEq)]
96pub enum ConstraintType {
97 MaxExecutionTime,
98 MinFidelity,
99 MaxResourceUsage,
100 MaxCircuitDepth,
101 MaxGateCount,
102 EnergyBudget,
103 Custom(String),
104}
105
106#[derive(Debug, Clone)]
108pub struct MultiObjectiveConfig {
109 pub enable_multi_objective: bool,
111 pub pareto_exploration: ParetoExplorationConfig,
113 pub trade_off_strategies: Vec<TradeOffStrategy>,
115 pub ranking_method: RankingMethod,
117}
118
119#[derive(Debug, Clone)]
121pub struct ParetoExplorationConfig {
122 pub solution_count: usize,
124 pub diversity_preservation: bool,
126 pub convergence_criteria: ConvergenceCriteria,
128}
129
130#[derive(Debug, Clone, PartialEq)]
132pub enum TradeOffStrategy {
133 WeightedSum,
134 EpsilonConstraint,
135 Lexicographic,
136 GoalProgramming,
137 NSGA2,
138 MOEA,
139}
140
141#[derive(Debug, Clone, PartialEq)]
143pub enum RankingMethod {
144 Dominance,
145 TOPSIS,
146 WeightedSum,
147 Utility,
148 Custom(String),
149}
150
151#[derive(Debug, Clone)]
153pub struct ConvergenceCriteria {
154 pub max_iterations: usize,
156 pub improvement_threshold: f64,
158 pub stagnation_tolerance: usize,
160 pub time_limit: Duration,
162}
163
164#[derive(Debug, Clone)]
166pub struct DynamicWeightingConfig {
167 pub enable_dynamic: bool,
169 pub adaptation_strategy: WeightingStrategy,
171 pub update_frequency: Duration,
173 pub historical_influence: f64,
175}
176
177#[derive(Debug, Clone, PartialEq)]
179pub enum WeightingStrategy {
180 PerformanceBased,
181 AdaptiveBayesian,
182 ReinforcementLearning,
183 GradientBased,
184 Evolutionary,
185}
186
187#[derive(Debug, Clone)]
189pub struct CacheSizeLimits {
190 pub circuit_cache_size: usize,
192 pub optimization_cache_size: usize,
194 pub performance_cache_size: usize,
196 pub memory_limit_mb: usize,
198}
199
200#[derive(Debug, Clone)]
202pub struct EvictionPolicies {
203 pub circuit_cache_policy: EvictionPolicy,
205 pub optimization_cache_policy: EvictionPolicy,
207 pub performance_cache_policy: EvictionPolicy,
209}
210
211#[derive(Debug, Clone, PartialEq)]
213pub enum EvictionPolicy {
214 LRU,
215 LFU,
216 PerformanceBased,
217 AgeBased,
218 SizeBased,
219 Hybrid,
220}
221
222#[derive(Debug, Clone)]
224pub struct CacheLearningConfig {
225 pub enable_cache_learning: bool,
227 pub pattern_recognition: bool,
229 pub predictive_precaching: bool,
231 pub cache_hit_prediction: bool,
233}
234
235#[derive(Debug, Clone)]
237pub struct DistributedCachingConfig {
238 pub enable_distributed: bool,
240 pub consistency_model: ConsistencyModel,
242 pub replication_factor: usize,
244 pub synchronization_strategy: SynchronizationStrategy,
246}
247
248#[derive(Debug, Clone, PartialEq)]
250pub enum ConsistencyModel {
251 StrongConsistency,
252 EventualConsistency,
253 WeakConsistency,
254 SessionConsistency,
255}
256
257#[derive(Debug, Clone, PartialEq)]
259pub enum SynchronizationStrategy {
260 Immediate,
261 Batch,
262 LazyPropagation,
263 ConflictFree,
264}
265
266impl Default for AdaptiveCompilationConfig {
267 fn default() -> Self {
268 Self {
269 realtime_optimization: RealtimeOptimizationConfig::default(),
270 adaptive_strategies: AdaptiveStrategiesConfig::default(),
271 performance_monitoring: PerformanceMonitoringConfig::default(),
272 ml_optimization: MLOptimizationConfig::default(),
273 circuit_analysis: CircuitAnalysisConfig::default(),
274 hardware_adaptation: HardwareAdaptationConfig::default(),
275 optimization_objectives: OptimizationObjectivesConfig::default(),
276 caching_learning: CachingLearningConfig::default(),
277 }
278 }
279}
280
281impl Default for RealtimeOptimizationConfig {
282 fn default() -> Self {
283 Self {
284 enable_realtime: true,
285 update_interval: Duration::from_millis(100),
286 performance_threshold: 0.95,
287 max_optimization_time: Duration::from_secs(30),
288 optimization_algorithms: vec![
289 OptimizationAlgorithm::GradientDescent,
290 OptimizationAlgorithm::BayesianOptimization,
291 ],
292 parallel_optimization: ParallelOptimizationConfig::default(),
293 adaptive_algorithm_selection: true,
294 }
295 }
296}
297
298impl Default for OptimizationObjectivesConfig {
299 fn default() -> Self {
300 let mut primary_objectives = HashMap::new();
301 primary_objectives.insert("fidelity".to_string(), 0.6);
302 primary_objectives.insert("execution_time".to_string(), 0.4);
303
304 Self {
305 primary_objectives,
306 secondary_objectives: HashMap::new(),
307 constraints: vec![],
308 multi_objective: MultiObjectiveConfig::default(),
309 dynamic_weighting: DynamicWeightingConfig::default(),
310 }
311 }
312}
313
314impl Default for CachingLearningConfig {
315 fn default() -> Self {
316 Self {
317 enable_caching: true,
318 cache_size_limits: CacheSizeLimits::default(),
319 eviction_policies: EvictionPolicies::default(),
320 cache_learning: CacheLearningConfig::default(),
321 distributed_caching: DistributedCachingConfig::default(),
322 }
323 }
324}
325
326impl Default for MultiObjectiveConfig {
327 fn default() -> Self {
328 Self {
329 enable_multi_objective: true,
330 pareto_exploration: ParetoExplorationConfig::default(),
331 trade_off_strategies: vec![TradeOffStrategy::NSGA2],
332 ranking_method: RankingMethod::Dominance,
333 }
334 }
335}
336
337impl Default for ParetoExplorationConfig {
338 fn default() -> Self {
339 Self {
340 solution_count: 50,
341 diversity_preservation: true,
342 convergence_criteria: ConvergenceCriteria::default(),
343 }
344 }
345}
346
347impl Default for ConvergenceCriteria {
348 fn default() -> Self {
349 Self {
350 max_iterations: 1000,
351 improvement_threshold: 1e-6,
352 stagnation_tolerance: 50,
353 time_limit: Duration::from_secs(300),
354 }
355 }
356}
357
358impl Default for DynamicWeightingConfig {
359 fn default() -> Self {
360 Self {
361 enable_dynamic: true,
362 adaptation_strategy: WeightingStrategy::PerformanceBased,
363 update_frequency: Duration::from_secs(60),
364 historical_influence: 0.3,
365 }
366 }
367}
368
369impl Default for CacheSizeLimits {
370 fn default() -> Self {
371 Self {
372 circuit_cache_size: 1000,
373 optimization_cache_size: 500,
374 performance_cache_size: 2000,
375 memory_limit_mb: 1024,
376 }
377 }
378}
379
380impl Default for EvictionPolicies {
381 fn default() -> Self {
382 Self {
383 circuit_cache_policy: EvictionPolicy::PerformanceBased,
384 optimization_cache_policy: EvictionPolicy::LRU,
385 performance_cache_policy: EvictionPolicy::LFU,
386 }
387 }
388}
389
390impl Default for CacheLearningConfig {
391 fn default() -> Self {
392 Self {
393 enable_cache_learning: true,
394 pattern_recognition: true,
395 predictive_precaching: true,
396 cache_hit_prediction: true,
397 }
398 }
399}
400
401impl Default for DistributedCachingConfig {
402 fn default() -> Self {
403 Self {
404 enable_distributed: false,
405 consistency_model: ConsistencyModel::EventualConsistency,
406 replication_factor: 3,
407 synchronization_strategy: SynchronizationStrategy::Batch,
408 }
409 }
410}