use quantrs2_core::benchmarking_integration::ComprehensiveBenchmarkSuite;
use quantrs2_core::noise_characterization::NoiseModel;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("╔══════════════════════════════════════════════════════════════╗");
println!("║ QuantRS2 Comprehensive Benchmarking Suite ║");
println!("║ Demonstrating Advanced Noise Mitigation & Analysis ║");
println!("╚══════════════════════════════════════════════════════════════╝\n");
println!("═══ Example 1: Default Noise Model ═══\n");
run_example_with_default_noise()?;
println!("\n\n");
println!("═══ Example 2: High Noise Environment ═══\n");
run_example_with_high_noise()?;
println!("\n\n");
println!("═══ Example 3: Low Coherence Time System ═══\n");
run_example_with_low_coherence()?;
println!("\n\n");
println!("═══ Example 4: Near-Ideal System ═══\n");
run_example_with_near_ideal()?;
println!("\n\n═══ Benchmarking Complete ═══\n");
Ok(())
}
fn run_example_with_default_noise() -> Result<(), Box<dyn std::error::Error>> {
let suite = ComprehensiveBenchmarkSuite::new();
let edges = vec![(0, 1), (1, 2), (2, 3), (3, 0)];
let report = suite.benchmark_qaoa_comprehensive(4, edges, 2)?;
report.print_detailed_report();
Ok(())
}
fn run_example_with_high_noise() -> Result<(), Box<dyn std::error::Error>> {
let noise_model = NoiseModel::new(
0.01, 0.05, 30.0, 40.0, 0.05, );
let suite = ComprehensiveBenchmarkSuite::with_noise_model(noise_model);
let edges = vec![(0, 1), (1, 2)];
let report = suite.benchmark_qaoa_comprehensive(3, edges, 1)?;
report.print_detailed_report();
println!("\nJSON Export:");
println!("{}", report.to_json());
Ok(())
}
fn run_example_with_low_coherence() -> Result<(), Box<dyn std::error::Error>> {
let noise_model = NoiseModel::new(
0.005, 0.02, 20.0, 25.0, 0.02, );
let suite = ComprehensiveBenchmarkSuite::with_noise_model(noise_model);
let edges = vec![(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)];
let report = suite.benchmark_qaoa_comprehensive(5, edges, 2)?;
report.print_detailed_report();
Ok(())
}
fn run_example_with_near_ideal() -> Result<(), Box<dyn std::error::Error>> {
let noise_model = NoiseModel::new(
0.0001, 0.0005, 1000.0, 1500.0, 0.001, );
let mut suite = ComprehensiveBenchmarkSuite::with_noise_model(noise_model);
suite.enable_all_features();
let edges = vec![(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 0)];
let report = suite.benchmark_qaoa_comprehensive(6, edges, 3)?;
report.print_detailed_report();
Ok(())
}