quantrs2_anneal/scientific_performance_optimization/
results.rs

1//! Result and analysis types for scientific performance optimization.
2//!
3//! This module contains optimization results, performance reports,
4//! bottleneck analysis, and resource utilization types.
5
6use std::time::Duration;
7
8use crate::applications::{
9    drug_discovery::DrugDiscoveryProblem, materials_science::MaterialsOptimizationProblem,
10    protein_folding::ProteinFoldingProblem,
11};
12
13use super::config::{CacheEvictionPolicy, DecompositionStrategy};
14use super::parallel::{CrystalStructure, DefectAnalysisResult};
15
16/// Optimized protein folding result
17#[derive(Debug, Clone)]
18pub struct OptimizedProteinFoldingResult {
19    /// Original problem
20    pub original_problem: ProteinFoldingProblem,
21    /// Optimized result
22    pub optimized_result: ProteinFoldingOptimizationResult,
23    /// Memory optimizations applied
24    pub memory_optimizations: MemoryOptimizations,
25    /// Parallel optimizations applied
26    pub parallel_optimizations: ParallelOptimizations,
27    /// Algorithm optimizations applied
28    pub algorithm_optimizations: AlgorithmOptimizations,
29    /// Performance metrics
30    pub performance_metrics: OptimizationPerformanceMetrics,
31}
32
33/// Optimized materials science result
34#[derive(Debug, Clone)]
35pub struct OptimizedMaterialsScienceResult {
36    /// Original problem
37    pub original_problem: MaterialsOptimizationProblem,
38    /// Optimized result
39    pub optimized_result: MaterialsOptimizationResult,
40    /// Decomposition strategy used
41    pub decomposition_strategy: DecompositionStrategy,
42    /// Parallel strategy used
43    pub parallel_strategy: ParallelLatticeStrategy,
44    /// Performance metrics
45    pub performance_metrics: OptimizationPerformanceMetrics,
46}
47
48/// Optimized drug discovery result
49#[derive(Debug, Clone)]
50pub struct OptimizedDrugDiscoveryResult {
51    /// Original problem
52    pub original_problem: DrugDiscoveryProblem,
53    /// Optimized result
54    pub optimized_result: DrugDiscoveryOptimizationResult,
55    /// Caching strategy used
56    pub caching_strategy: MolecularCachingStrategy,
57    /// Distributed strategy used
58    pub distributed_strategy: DistributedScreeningStrategy,
59    /// Performance metrics
60    pub performance_metrics: OptimizationPerformanceMetrics,
61}
62
63/// Optimization performance metrics
64#[derive(Debug, Clone)]
65pub struct OptimizationPerformanceMetrics {
66    /// Total time
67    pub total_time: Duration,
68    /// Memory usage reduction
69    pub memory_usage_reduction: f64,
70    /// Speedup factor
71    pub speedup_factor: f64,
72    /// Quality improvement
73    pub quality_improvement: f64,
74}
75
76/// Comprehensive performance report
77#[derive(Debug, Clone)]
78pub struct ComprehensivePerformanceReport {
79    /// System metrics
80    pub system_metrics: SystemPerformanceMetrics,
81    /// Optimization recommendations
82    pub optimization_recommendations: Vec<OptimizationRecommendation>,
83    /// Bottleneck analysis
84    pub bottleneck_analysis: BottleneckAnalysis,
85    /// Resource utilization
86    pub resource_utilization: ResourceUtilizationAnalysis,
87}
88
89/// System performance metrics
90#[derive(Debug, Clone)]
91pub struct SystemPerformanceMetrics {
92    /// Overall performance score
93    pub overall_performance_score: f64,
94    /// Memory efficiency
95    pub memory_efficiency: f64,
96    /// CPU utilization
97    pub cpu_utilization: f64,
98    /// Parallel efficiency
99    pub parallel_efficiency: f64,
100    /// Cache hit rate
101    pub cache_hit_rate: f64,
102}
103
104/// Optimization recommendation
105#[derive(Debug, Clone)]
106pub struct OptimizationRecommendation {
107    /// Category
108    pub category: OptimizationCategory,
109    /// Recommendation text
110    pub recommendation: String,
111    /// Impact level
112    pub impact: OptimizationImpact,
113    /// Estimated improvement
114    pub estimated_improvement: f64,
115}
116
117/// Optimization categories
118#[derive(Debug, Clone, PartialEq, Eq)]
119pub enum OptimizationCategory {
120    Memory,
121    Parallelization,
122    Algorithm,
123    Distributed,
124    GPU,
125}
126
127/// Optimization impact levels
128#[derive(Debug, Clone, PartialEq, Eq)]
129pub enum OptimizationImpact {
130    Low,
131    Medium,
132    High,
133    Critical,
134}
135
136/// Bottleneck analysis
137#[derive(Debug, Clone)]
138pub struct BottleneckAnalysis {
139    /// Primary bottleneck
140    pub primary_bottleneck: BottleneckType,
141    /// Secondary bottlenecks
142    pub secondary_bottlenecks: Vec<BottleneckType>,
143    /// Bottleneck impact
144    pub bottleneck_impact: f64,
145    /// Resolution suggestions
146    pub resolution_suggestions: Vec<String>,
147}
148
149/// Bottleneck types
150#[derive(Debug, Clone, PartialEq, Eq)]
151pub enum BottleneckType {
152    CPUUtilization,
153    MemoryBandwidth,
154    DiskIO,
155    NetworkLatency,
156    GPUMemory,
157    AlgorithmComplexity,
158}
159
160/// Resource utilization analysis
161#[derive(Debug, Clone)]
162pub struct ResourceUtilizationAnalysis {
163    /// CPU utilization
164    pub cpu_utilization: f64,
165    /// Memory utilization
166    pub memory_utilization: f64,
167    /// Disk utilization
168    pub disk_utilization: f64,
169    /// Network utilization
170    pub network_utilization: f64,
171    /// GPU utilization
172    pub gpu_utilization: f64,
173    /// Efficiency score
174    pub efficiency_score: f64,
175}
176
177/// Problem analysis
178#[derive(Debug, Clone)]
179pub struct ProblemAnalysis {
180    /// Problem type
181    pub problem_type: ProblemType,
182    /// Complexity score
183    pub complexity_score: f64,
184    /// Memory requirements
185    pub memory_requirements: usize,
186    /// Parallel potential
187    pub parallel_potential: f64,
188    /// Recommended optimizations
189    pub recommended_optimizations: Vec<OptimizationType>,
190}
191
192/// Problem types
193#[derive(Debug, Clone, PartialEq, Eq)]
194pub enum ProblemType {
195    ProteinFolding,
196    MaterialsScience,
197    DrugDiscovery,
198    Generic,
199}
200
201/// Optimization types
202#[derive(Debug, Clone, PartialEq, Eq)]
203pub enum OptimizationType {
204    MemoryPooling,
205    ParallelExecution,
206    ResultCaching,
207    Approximation,
208    Decomposition,
209}
210
211/// Memory optimizations
212#[derive(Debug, Clone)]
213pub struct MemoryOptimizations {
214    /// Memory pool enabled
215    pub memory_pool_enabled: bool,
216    /// Cache strategy
217    pub cache_strategy: CacheStrategy,
218    /// Compression enabled
219    pub compression_enabled: bool,
220    /// Memory mapping enabled
221    pub memory_mapping_enabled: bool,
222    /// Estimated savings
223    pub estimated_savings: f64,
224}
225
226/// Cache strategies
227#[derive(Debug, Clone, PartialEq, Eq)]
228pub enum CacheStrategy {
229    Simple,
230    Hierarchical,
231    Adaptive,
232}
233
234/// Parallel optimizations
235#[derive(Debug, Clone)]
236pub struct ParallelOptimizations {
237    /// Parallel strategy
238    pub parallel_strategy: ParallelStrategy,
239    /// Thread count
240    pub thread_count: usize,
241    /// Load balancing enabled
242    pub load_balancing_enabled: bool,
243    /// NUMA awareness enabled
244    pub numa_awareness_enabled: bool,
245    /// Estimated speedup
246    pub estimated_speedup: f64,
247}
248
249/// Parallel strategies
250#[derive(Debug, Clone, PartialEq, Eq)]
251pub enum ParallelStrategy {
252    DataParallelism,
253    TaskParallelism,
254    Pipeline,
255    Hybrid,
256}
257
258/// Algorithm optimizations
259#[derive(Debug, Clone)]
260pub struct AlgorithmOptimizations {
261    /// Decomposition enabled
262    pub decomposition_enabled: bool,
263    /// Approximation enabled
264    pub approximation_enabled: bool,
265    /// Caching enabled
266    pub caching_enabled: bool,
267    /// Streaming enabled
268    pub streaming_enabled: bool,
269    /// Estimated improvement
270    pub estimated_improvement: f64,
271}
272
273/// Protein folding optimization result
274#[derive(Debug, Clone)]
275pub struct ProteinFoldingOptimizationResult {
276    /// Optimized conformation
277    pub optimized_conformation: Vec<i32>,
278    /// Energy reduction
279    pub energy_reduction: f64,
280    /// Convergence improvement
281    pub convergence_improvement: f64,
282    /// Execution time
283    pub execution_time: Duration,
284}
285
286/// Crystal structure analysis
287#[derive(Debug, Clone)]
288pub struct CrystalStructureAnalysis {
289    /// Lattice complexity
290    pub lattice_complexity: f64,
291    /// Atom count
292    pub atom_count: usize,
293    /// Symmetry groups
294    pub symmetry_groups: Vec<String>,
295    /// Optimization potential
296    pub optimization_potential: f64,
297}
298
299/// Parallel lattice strategy
300#[derive(Debug, Clone)]
301pub struct ParallelLatticeStrategy {
302    /// Partitioning method
303    pub partitioning_method: PartitioningMethod,
304    /// Communication pattern
305    pub communication_pattern: CommunicationPattern,
306    /// Load balancing method
307    pub load_balancing: LoadBalancingMethod,
308}
309
310/// Partitioning methods
311#[derive(Debug, Clone, PartialEq, Eq)]
312pub enum PartitioningMethod {
313    Spatial,
314    Spectral,
315    RandomizedBisection,
316}
317
318/// Communication patterns
319#[derive(Debug, Clone, PartialEq, Eq)]
320pub enum CommunicationPattern {
321    AllToAll,
322    NearestNeighbor,
323    TreeBased,
324}
325
326/// Load balancing methods
327#[derive(Debug, Clone, PartialEq, Eq)]
328pub enum LoadBalancingMethod {
329    Static,
330    Dynamic,
331    Adaptive,
332}
333
334/// Materials optimization result
335#[derive(Debug, Clone, Default)]
336pub struct MaterialsOptimizationResult {
337    /// Optimized structure
338    pub optimized_structure: CrystalStructure,
339    /// Energy minimization
340    pub energy_minimization: f64,
341    /// Defect analysis
342    pub defect_analysis: DefectAnalysisResult,
343    /// Simulation time
344    pub simulation_time: Duration,
345}
346
347/// Molecular complexity analysis
348#[derive(Debug, Clone)]
349pub struct MolecularComplexityAnalysis {
350    /// Molecular weight
351    pub molecular_weight: f64,
352    /// Rotatable bonds
353    pub rotatable_bonds: usize,
354    /// Ring count
355    pub ring_count: usize,
356    /// Complexity score
357    pub complexity_score: f64,
358}
359
360/// Molecular caching strategy
361#[derive(Debug, Clone)]
362pub struct MolecularCachingStrategy {
363    /// Cache type
364    pub cache_type: MolecularCacheType,
365    /// Cache size
366    pub cache_size: usize,
367    /// Eviction policy
368    pub eviction_policy: CacheEvictionPolicy,
369    /// Hit rate target
370    pub hit_rate_target: f64,
371}
372
373/// Molecular cache types
374#[derive(Debug, Clone, PartialEq, Eq)]
375pub enum MolecularCacheType {
376    StructureBased,
377    PropertyBased,
378    InteractionBased,
379}
380
381/// Distributed screening strategy
382#[derive(Debug, Clone)]
383pub struct DistributedScreeningStrategy {
384    /// Screening method
385    pub screening_method: ScreeningMethod,
386    /// Cluster size
387    pub cluster_size: usize,
388    /// Task distribution method
389    pub task_distribution: TaskDistributionMethod,
390    /// Fault tolerance enabled
391    pub fault_tolerance: bool,
392}
393
394/// Screening methods
395#[derive(Debug, Clone, PartialEq, Eq)]
396pub enum ScreeningMethod {
397    VirtualScreening,
398    PhysicalScreening,
399    HybridScreening,
400}
401
402/// Task distribution methods
403#[derive(Debug, Clone, PartialEq, Eq)]
404pub enum TaskDistributionMethod {
405    RoundRobin,
406    LoadBalanced,
407    Priority,
408}
409
410/// Drug discovery optimization result
411#[derive(Debug, Clone)]
412pub struct DrugDiscoveryOptimizationResult {
413    /// Optimized molecules
414    pub optimized_molecules: Vec<String>,
415    /// Screening efficiency
416    pub screening_efficiency: f64,
417    /// Hit rate improvement
418    pub hit_rate_improvement: f64,
419    /// Discovery time
420    pub discovery_time: Duration,
421}