1use std::collections::{BTreeMap, HashMap, HashSet, VecDeque};
9use std::sync::{Arc, Mutex, RwLock};
10use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH};
11
12use quantrs2_circuit::prelude::*;
13use quantrs2_core::{
14 error::{QuantRS2Error, QuantRS2Result},
15 gate::GateOp,
16 qubit::QubitId,
17};
18
19#[cfg(feature = "scirs2")]
21use scirs2_linalg::{det, eig, inv, matrix_norm, prelude::*, svd, LinalgError, LinalgResult};
22#[cfg(feature = "scirs2")]
23use scirs2_optimize::{minimize, OptimizeResult};
24use scirs2_stats::ttest::Alternative;
25#[cfg(feature = "scirs2")]
26use scirs2_stats::{corrcoef, distributions, mean, pearsonr, spearmanr, std, var};
27
28#[cfg(not(feature = "scirs2"))]
30mod fallback_scirs2 {
31 use scirs2_core::ndarray::{Array1, Array2, ArrayView1, ArrayView2};
32
33 pub fn mean(_data: &ArrayView1<f64>) -> Result<f64, String> {
34 Ok(0.0)
35 }
36 pub fn std(_data: &ArrayView1<f64>, _ddof: i32) -> Result<f64, String> {
37 Ok(1.0)
38 }
39 pub fn pearsonr(
40 _x: &ArrayView1<f64>,
41 _y: &ArrayView1<f64>,
42 _alt: &str,
43 ) -> Result<(f64, f64), String> {
44 Ok((0.0, 0.5))
45 }
46
47 pub struct OptimizeResult {
48 pub x: Array1<f64>,
49 pub fun: f64,
50 pub success: bool,
51 pub nit: usize,
52 pub nfev: usize,
53 pub message: String,
54 }
55
56 pub fn minimize(
57 _func: fn(&Array1<f64>) -> f64,
58 _x0: &Array1<f64>,
59 _method: &str,
60 ) -> Result<OptimizeResult, String> {
61 Ok(OptimizeResult {
62 x: Array1::zeros(2),
63 fun: 0.0,
64 success: true,
65 nit: 0,
66 nfev: 0,
67 message: "Fallback optimization".to_string(),
68 })
69 }
70
71 pub fn genetic_algorithm(
72 _func: fn(&Array1<f64>) -> f64,
73 _bounds: &[(f64, f64)],
74 ) -> Result<OptimizeResult, String> {
75 Ok(OptimizeResult {
76 x: Array1::zeros(2),
77 fun: 0.0,
78 success: true,
79 nit: 0,
80 nfev: 0,
81 message: "Fallback genetic algorithm".to_string(),
82 })
83 }
84
85 pub fn random_forest(_x: &Array2<f64>, _y: &Array1<f64>) -> Result<String, String> {
86 Ok("fallback_model".to_string())
87 }
88}
89
90#[cfg(not(feature = "scirs2"))]
91use fallback_scirs2::*;
92
93#[cfg(feature = "security")]
94use chrono::{DateTime, Duration as ChronoDuration, Utc};
95use scirs2_core::ndarray::{s, Array1, Array2, Array3, Array4, ArrayView1, ArrayView2, Axis};
96use scirs2_core::random::prelude::*;
97use scirs2_core::Complex64;
98use serde::{Deserialize, Serialize};
99use tokio::sync::{broadcast, mpsc, RwLock as TokioRwLock, Semaphore};
100use uuid::Uuid;
101
102use crate::{
103 backend_traits::{query_backend_capabilities, BackendCapabilities},
104 calibration::{CalibrationManager, DeviceCalibration},
105 integrated_device_manager::{
106 DeviceInfo, IntegratedExecutionResult, IntegratedQuantumDeviceManager,
107 },
108 job_scheduling::{JobConfig, JobPriority, JobStatus, QuantumJob, QuantumJobScheduler},
109 noise_model::CalibrationNoiseModel,
110 topology::HardwareTopology,
111 CircuitExecutor, CircuitResult, DeviceError, DeviceResult, QuantumDevice,
112};
113
114pub mod allocation;
116pub mod cost_estimation;
117pub mod cost_management;
118pub mod monitoring;
119pub mod orchestration;
120pub mod provider_migration;
121pub mod provider_optimizations;
122pub mod providers;
123
124pub use allocation::*;
126pub use cost_estimation::*;
127pub use cost_management::*;
128pub use monitoring::*;
129pub use orchestration::*;
130pub use provider_migration::*;
131pub use provider_optimizations::*;
132pub use providers::*;
133
134pub use orchestration::load_balancing::CloudLoadBalancingConfig;
136pub use orchestration::performance::AutoScalingConfig;
137pub use orchestration::performance::CloudPerformanceConfig;
138pub use orchestration::CloudSecurityConfig;
139
140#[derive(Debug, Clone, Serialize, Deserialize)]
142pub struct QuantumCloudConfig {
143 pub provider_config: MultiProviderConfig,
145 pub allocation_config: ResourceAllocationConfig,
147 pub cost_config: CostManagementConfig,
149 pub performance_config: CloudPerformanceConfig,
151 pub load_balancing_config: CloudLoadBalancingConfig,
153 pub security_config: CloudSecurityConfig,
155 pub monitoring_config: CloudMonitoringConfig,
157 pub ml_config: CloudMLConfig,
159 pub scaling_config: AutoScalingConfig,
161 pub budget_config: BudgetConfig,
163}
164
165#[derive(Debug, Clone, Serialize, Deserialize)]
167pub struct CloudMLConfig {
168 pub enable_ml_optimization: bool,
170 pub optimization_models: Vec<String>,
172 pub predictive_analytics: bool,
174 pub automated_decision_threshold: f64,
176 pub model_training_enabled: bool,
178 pub feature_engineering_enabled: bool,
180}
181
182impl Default for CloudMLConfig {
183 fn default() -> Self {
184 Self {
185 enable_ml_optimization: false,
186 optimization_models: vec![],
187 predictive_analytics: false,
188 automated_decision_threshold: 0.8,
189 model_training_enabled: false,
190 feature_engineering_enabled: false,
191 }
192 }
193}
194
195