use std::time::Duration;
use crate::applications::{
drug_discovery::DrugDiscoveryProblem, materials_science::MaterialsOptimizationProblem,
protein_folding::ProteinFoldingProblem,
};
use super::config::{CacheEvictionPolicy, DecompositionStrategy};
use super::parallel::{CrystalStructure, DefectAnalysisResult};
#[derive(Debug, Clone)]
pub struct OptimizedProteinFoldingResult {
pub original_problem: ProteinFoldingProblem,
pub optimized_result: ProteinFoldingOptimizationResult,
pub memory_optimizations: MemoryOptimizations,
pub parallel_optimizations: ParallelOptimizations,
pub algorithm_optimizations: AlgorithmOptimizations,
pub performance_metrics: OptimizationPerformanceMetrics,
}
#[derive(Debug, Clone)]
pub struct OptimizedMaterialsScienceResult {
pub original_problem: MaterialsOptimizationProblem,
pub optimized_result: MaterialsOptimizationResult,
pub decomposition_strategy: DecompositionStrategy,
pub parallel_strategy: ParallelLatticeStrategy,
pub performance_metrics: OptimizationPerformanceMetrics,
}
#[derive(Debug, Clone)]
pub struct OptimizedDrugDiscoveryResult {
pub original_problem: DrugDiscoveryProblem,
pub optimized_result: DrugDiscoveryOptimizationResult,
pub caching_strategy: MolecularCachingStrategy,
pub distributed_strategy: DistributedScreeningStrategy,
pub performance_metrics: OptimizationPerformanceMetrics,
}
#[derive(Debug, Clone)]
pub struct OptimizationPerformanceMetrics {
pub total_time: Duration,
pub memory_usage_reduction: f64,
pub speedup_factor: f64,
pub quality_improvement: f64,
}
#[derive(Debug, Clone)]
pub struct ComprehensivePerformanceReport {
pub system_metrics: SystemPerformanceMetrics,
pub optimization_recommendations: Vec<OptimizationRecommendation>,
pub bottleneck_analysis: BottleneckAnalysis,
pub resource_utilization: ResourceUtilizationAnalysis,
}
#[derive(Debug, Clone)]
pub struct SystemPerformanceMetrics {
pub overall_performance_score: f64,
pub memory_efficiency: f64,
pub cpu_utilization: f64,
pub parallel_efficiency: f64,
pub cache_hit_rate: f64,
}
#[derive(Debug, Clone)]
pub struct OptimizationRecommendation {
pub category: OptimizationCategory,
pub recommendation: String,
pub impact: OptimizationImpact,
pub estimated_improvement: f64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OptimizationCategory {
Memory,
Parallelization,
Algorithm,
Distributed,
GPU,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OptimizationImpact {
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone)]
pub struct BottleneckAnalysis {
pub primary_bottleneck: BottleneckType,
pub secondary_bottlenecks: Vec<BottleneckType>,
pub bottleneck_impact: f64,
pub resolution_suggestions: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum BottleneckType {
CPUUtilization,
MemoryBandwidth,
DiskIO,
NetworkLatency,
GPUMemory,
AlgorithmComplexity,
}
#[derive(Debug, Clone)]
pub struct ResourceUtilizationAnalysis {
pub cpu_utilization: f64,
pub memory_utilization: f64,
pub disk_utilization: f64,
pub network_utilization: f64,
pub gpu_utilization: f64,
pub efficiency_score: f64,
}
#[derive(Debug, Clone)]
pub struct ProblemAnalysis {
pub problem_type: ProblemType,
pub complexity_score: f64,
pub memory_requirements: usize,
pub parallel_potential: f64,
pub recommended_optimizations: Vec<OptimizationType>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ProblemType {
ProteinFolding,
MaterialsScience,
DrugDiscovery,
Generic,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OptimizationType {
MemoryPooling,
ParallelExecution,
ResultCaching,
Approximation,
Decomposition,
}
#[derive(Debug, Clone)]
pub struct MemoryOptimizations {
pub memory_pool_enabled: bool,
pub cache_strategy: CacheStrategy,
pub compression_enabled: bool,
pub memory_mapping_enabled: bool,
pub estimated_savings: f64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CacheStrategy {
Simple,
Hierarchical,
Adaptive,
}
#[derive(Debug, Clone)]
pub struct ParallelOptimizations {
pub parallel_strategy: ParallelStrategy,
pub thread_count: usize,
pub load_balancing_enabled: bool,
pub numa_awareness_enabled: bool,
pub estimated_speedup: f64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ParallelStrategy {
DataParallelism,
TaskParallelism,
Pipeline,
Hybrid,
}
#[derive(Debug, Clone)]
pub struct AlgorithmOptimizations {
pub decomposition_enabled: bool,
pub approximation_enabled: bool,
pub caching_enabled: bool,
pub streaming_enabled: bool,
pub estimated_improvement: f64,
}
#[derive(Debug, Clone)]
pub struct ProteinFoldingOptimizationResult {
pub optimized_conformation: Vec<i32>,
pub energy_reduction: f64,
pub convergence_improvement: f64,
pub execution_time: Duration,
}
#[derive(Debug, Clone)]
pub struct CrystalStructureAnalysis {
pub lattice_complexity: f64,
pub atom_count: usize,
pub symmetry_groups: Vec<String>,
pub optimization_potential: f64,
}
#[derive(Debug, Clone)]
pub struct ParallelLatticeStrategy {
pub partitioning_method: PartitioningMethod,
pub communication_pattern: CommunicationPattern,
pub load_balancing: LoadBalancingMethod,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PartitioningMethod {
Spatial,
Spectral,
RandomizedBisection,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CommunicationPattern {
AllToAll,
NearestNeighbor,
TreeBased,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum LoadBalancingMethod {
Static,
Dynamic,
Adaptive,
}
#[derive(Debug, Clone, Default)]
pub struct MaterialsOptimizationResult {
pub optimized_structure: CrystalStructure,
pub energy_minimization: f64,
pub defect_analysis: DefectAnalysisResult,
pub simulation_time: Duration,
}
#[derive(Debug, Clone)]
pub struct MolecularComplexityAnalysis {
pub molecular_weight: f64,
pub rotatable_bonds: usize,
pub ring_count: usize,
pub complexity_score: f64,
}
#[derive(Debug, Clone)]
pub struct MolecularCachingStrategy {
pub cache_type: MolecularCacheType,
pub cache_size: usize,
pub eviction_policy: CacheEvictionPolicy,
pub hit_rate_target: f64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MolecularCacheType {
StructureBased,
PropertyBased,
InteractionBased,
}
#[derive(Debug, Clone)]
pub struct DistributedScreeningStrategy {
pub screening_method: ScreeningMethod,
pub cluster_size: usize,
pub task_distribution: TaskDistributionMethod,
pub fault_tolerance: bool,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScreeningMethod {
VirtualScreening,
PhysicalScreening,
HybridScreening,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TaskDistributionMethod {
RoundRobin,
LoadBalanced,
Priority,
}
#[derive(Debug, Clone)]
pub struct DrugDiscoveryOptimizationResult {
pub optimized_molecules: Vec<String>,
pub screening_efficiency: f64,
pub hit_rate_improvement: f64,
pub discovery_time: Duration,
}