Crate quantrs2_tytan

Crate quantrs2_tytan 

Source
Expand description

High-level quantum annealing interface inspired by Tytan for the QuantRS2 framework.

This crate provides a high-level interface for formulating and solving quantum annealing problems, with support for multiple backend solvers. It is inspired by the Python Tytan library.

§Features

  • Symbolic Problem Construction: Define QUBO problems using symbolic expressions
  • Higher-Order Binary Optimization (HOBO): Support for terms beyond quadratic
  • Multiple Samplers: Choose from various solvers
  • Auto Result Processing: Automatically convert solutions to multi-dimensional arrays

§Recent Updates (v0.1.0-rc.1)

  • Refined SciRS2 v0.1.0-rc.1 integration for enhanced performance
  • High-performance sparse matrix operations via SciRS2
  • Parallel optimization using scirs2_core::parallel_ops
  • SIMD-accelerated energy calculations

§Example

Example with the dwave feature enabled:

use quantrs2_tytan::sampler::{SASampler, Sampler};
use quantrs2_tytan::symbol::symbols;
use quantrs2_tytan::compile::Compile;
use quantrs2_tytan::auto_array::AutoArray;

// Define variables
let mut x = symbols("x");
let mut y = symbols("y");
let z = symbols("z");

// Define expression (3 variables, want exactly 2 to be 1)
let two = 2.into();
let h = (x + y + z - 2).pow(&two);

// Compile to QUBO
let (qubo, offset) = Compile::new(h).get_qubo().expect("Failed to compile QUBO");

// Choose a sampler
let solver = SASampler::new(None);

// Sample
let mut result = solver.run_qubo(&qubo, 100).expect("Failed to run QUBO sampler");

// Display results
for r in &result {
    println!("{:?}", r);
}

Basic example without the dwave feature (no symbolic math):

use quantrs2_tytan::sampler::{SASampler, Sampler};
use std::collections::HashMap;
use scirs2_core::ndarray::Array;

// Create a simple QUBO matrix manually
let mut matrix = Array::<f64, _>::zeros((2, 2));
matrix[[0, 0]] = -1.0;  // Linear term for x
matrix[[1, 1]] = -1.0;  // Linear term for y
matrix[[0, 1]] = 2.0;   // Quadratic term for x*y
matrix[[1, 0]] = 2.0;   // Symmetric

// Create variable map
let mut var_map = HashMap::new();
var_map.insert("x".to_string(), 0);
var_map.insert("y".to_string(), 1);

// Choose a sampler
let solver = SASampler::new(None);

// Sample by converting to the dynamic format for hobo
let matrix_dyn = matrix.into_dyn();
let mut result = solver.run_hobo(&(matrix_dyn, var_map), 100).expect("Failed to run HOBO sampler");

// Display results
for r in &result {
    println!("{:?}", r);
}

Re-exports§

pub use advanced_error_mitigation::create_advanced_error_mitigation_manager;
pub use advanced_error_mitigation::create_lightweight_error_mitigation_manager;
pub use advanced_error_mitigation::AdvancedErrorMitigationManager;
pub use advanced_error_mitigation::ErrorMitigationConfig;
pub use advanced_performance_analysis::create_comprehensive_analyzer;
pub use advanced_performance_analysis::create_lightweight_analyzer;
pub use advanced_performance_analysis::AdvancedPerformanceAnalyzer;
pub use advanced_performance_analysis::AnalysisConfig;
pub use advanced_visualization::create_advanced_visualization_manager;
pub use advanced_visualization::create_lightweight_visualization_manager;
pub use advanced_visualization::AdvancedVisualizationManager;
pub use advanced_visualization::VisualizationConfig;
pub use analysis::calculate_diversity;
pub use analysis::cluster_solutions;
pub use analysis::visualize_energy_distribution;
pub use grover_amplitude_amplification::GroverAmplificationConfig;
pub use grover_amplitude_amplification::GroverAmplifiedSampler;
pub use grover_amplitude_amplification::GroverAmplifiedSolver;
pub use optimize::calculate_energy;
pub use optimize::optimize_hobo;
pub use optimize::optimize_qubo;
pub use quantum_adiabatic_path_optimization::AdiabaticPathConfig;
pub use quantum_adiabatic_path_optimization::PathInterpolation;
pub use quantum_adiabatic_path_optimization::QuantumAdiabaticPathOptimizer;
pub use quantum_adiabatic_path_optimization::QuantumAdiabaticSampler;
pub use sampler::ArminSampler;
pub use sampler::DWaveSampler;
pub use sampler::GASampler;
pub use sampler::MIKASAmpler;
pub use sampler::SASampler;
pub use scirs_stub::SCIRS2_AVAILABLE;
pub use tensor_network_sampler::create_mera_sampler;
pub use tensor_network_sampler::create_mps_sampler;
pub use tensor_network_sampler::create_peps_sampler;
pub use tensor_network_sampler::TensorNetworkSampler;
pub use visual_problem_builder::BuilderConfig;
pub use visual_problem_builder::ConstraintType;
pub use visual_problem_builder::ExportFormat;
pub use visual_problem_builder::ObjectiveExpression;
pub use visual_problem_builder::VariableType;
pub use visual_problem_builder::VisualProblem;
pub use visual_problem_builder::VisualProblemBuilder;

Modules§

adaptive_noise_calibration
Adaptive Noise Models and Calibration
adaptive_optimization
Adaptive optimization framework that automatically adjusts algorithms and parameters.
advanced_error_mitigation
Advanced Error Mitigation and Calibration
advanced_performance_analysis
Advanced Performance Analysis and Benchmarking
advanced_problem_decomposition
Advanced Problem Decomposition for QUBO Optimization
advanced_visualization
Advanced Visualization and Analysis
ai_assisted_optimization
AI-Assisted Quantum Optimization
analysis
Analysis utilities for quantum annealing results.
applications
Industry-specific application modules for quantum optimization.
auto_array
Automatic conversion of sample results to multi-dimensional arrays.
benchmark
Hardware benchmarking suite with SciRS2 analysis
coherent_ising_machine
Coherent Ising Machine (CIM) simulation for quantum-inspired optimization.
compile
Compilation of symbolic expressions to QUBO/HOBO models.
constraints
Constraint programming enhancements for optimization problems.
encoding
Variable encoding schemes for optimization problems.
gpu
GPU acceleration for QUBO/HOBO optimization.
gpu_benchmark
GPU benchmarking framework for performance testing and analysis.
gpu_kernels
CUDA and OpenCL kernels for GPU-accelerated optimization.
gpu_memory_pool
GPU memory pooling for efficient allocation and reuse.
gpu_performance
GPU performance optimization and profiling.
gpu_samplers
GPU-accelerated samplers with SciRS2 integration.
grover_amplitude_amplification
Grover-Inspired Amplitude Amplification for QUBO Optimization
hybrid_algorithms
Hybrid quantum-classical algorithms for optimization.
ml_guided_sampling
Machine learning guided sampling algorithms
multi_objective_optimization
Multi-Objective QUBO Optimization
optimization
Optimization strategies for quantum annealing
optimize
Optimization utilities for QUBO/HOBO problems.
parallel_tempering
Parallel tempering implementation for enhanced sampling.
parallel_tempering_advanced
Advanced parallel tempering implementation
performance_optimization
Performance optimization module for critical paths.
performance_profiler
Performance profiler for quantum optimization.
problem_decomposition
Problem decomposition methods for large-scale optimization.
problem_dsl
Problem modeling DSL for quantum optimization.
quantum_adiabatic_path_optimization
Quantum Adiabatic Optimization with Dynamic Path Optimization
quantum_advantage_analysis
Quantum Advantage Analysis Suite
quantum_advantage_prediction
Quantum Advantage Prediction System
quantum_annealing
Simulated Quantum Annealing implementation with SciRS2
quantum_circuit_annealing_compiler
Quantum Circuit to Annealing Compiler
quantum_classical_hybrid
Quantum-Classical Hybrid Refinement
quantum_error_correction
Advanced Quantum Error Correction for Optimization
quantum_inspired_ml
Quantum-inspired machine learning algorithms.
quantum_ml_integration
Quantum Machine Learning integration for optimization.
quantum_neural_networks
Advanced Quantum Neural Networks for Optimization
quantum_optimization_extensions
Extended quantum optimization algorithms.
quantum_state_tomography
Quantum State Tomography and Characterization
realtime_performance_dashboard
Real-time Performance Dashboard
realtime_quantum_integration
Real-time Quantum Computing Integration
sampler
Samplers for solving QUBO/HOBO problems.
sampler_framework
Sampler framework extensions for advanced optimization strategies.
scirs_stub
Stub for SciRS2 integration
sensitivity_analysis
Sensitivity analysis for optimization parameters.
solution_clustering
Solution clustering algorithms
solution_debugger
Solution debugger for quantum optimization.
solution_statistics
Solution statistics and analysis
symbol
Symbolic representation of variables for quantum annealing problems.
tensor_network_sampler
Tensor Network-Based Quantum Annealing Sampler
testing_framework
Automated testing framework for quantum optimization.
topological_optimization
Topological optimization for quantum computing.
variable_correlation
Variable correlation analysis
variational_quantum_factoring
Variational Quantum Factoring (VQF) implementation.
visual_problem_builder
Visual problem builder for interactive QUBO construction.
visualization
Advanced visualization for quantum annealing results

Macros§

profile
Profiling macros
time_it

Structs§

IsingModel
Represents an Ising model for quantum annealing
QuboBuilder
A builder for creating QUBO problems
QuboModel
Represents a Quadratic Unconstrained Binary Optimization (QUBO) problem

Enums§

IsingError
Errors that can occur when working with Ising models
QuboError
Errors that can occur when formulating QUBO problems

Traits§

QuboFormulation
Trait for problems that can be formulated as QUBO

Functions§

is_available
Check if the module is available
is_gpu_available
version
Print version information

Type Aliases§

IsingResult
Result type for Ising model operations
QuboResult
Result type for QUBO problem operations