pub mod qaoa;
pub mod statevector;
pub mod tensor_network;
pub mod vqe;
use crate::error::OptimizeError;
pub type QcResult<T> = Result<T, OptimizeError>;
#[derive(Debug, Clone)]
pub struct QcConfig {
pub max_iter: usize,
pub tol: f64,
pub verbose: bool,
}
impl Default for QcConfig {
fn default() -> Self {
Self {
max_iter: 100,
tol: 1e-6,
verbose: false,
}
}
}
#[derive(Debug, Clone)]
pub struct QcOptResult {
pub optimal_params: Vec<f64>,
pub optimal_value: f64,
pub n_evaluations: usize,
pub converged: bool,
}
pub trait QuantumClassicalOptimizer {
fn optimize(&mut self) -> QcResult<QcOptResult>;
fn evaluate(&self, params: &[f64]) -> f64;
fn n_params(&self) -> usize;
}
pub use qaoa::{MaxCutProblem, QaoaCircuit, QaoaConfig, QaoaResult};
pub use statevector::Statevector;
pub use tensor_network::{ising_1d_mpo, MPS};
pub use vqe::{HardwareEfficientAnsatz, PauliHamiltonian, PauliOp, VqeOptimizer, VqeResult};