pub struct AnnealingScheduleOptimizer { /* private fields */ }Expand description
Quantum Annealing Schedule Optimiser
Learns an optimal annealing schedule s(t) ∈ [0, 1] that minimises the non-adiabatic excitation probability subject to a fixed total annealing time.
The schedule is parameterised as a piecewise-linear function with
num_segments control points and optimised via gradient-free COBYLA-style
coordinate descent.
Implementations§
Source§impl AnnealingScheduleOptimizer
impl AnnealingScheduleOptimizer
Sourcepub fn new(num_segments: usize, total_time: f64, min_gap: f64) -> Self
pub fn new(num_segments: usize, total_time: f64, min_gap: f64) -> Self
Create a new schedule optimiser.
Sourcepub const fn with_max_iterations(self, n: usize) -> Self
pub const fn with_max_iterations(self, n: usize) -> Self
Set the maximum number of optimisation iterations
Sourcepub fn linear_schedule(&self) -> Vec<f64>
pub fn linear_schedule(&self) -> Vec<f64>
Generate the default linear schedule: s(t) = t / T.
Sourcepub fn roland_cerf_schedule(&self) -> Vec<f64>
pub fn roland_cerf_schedule(&self) -> Vec<f64>
Generate a Roland-Cerf optimal schedule.
For a problem with minimum gap Δ_min, the locally-adiabatic
(Roland-Cerf) schedule satisfies
ds/dt ∝ Δ(s)²which spends more time near the avoided crossing. Here we approximate Δ(s) ≈ Δ_min + (1 - Δ_min) · (s - 0.5)² / 0.25 for a parabolic gap.
Sourcepub fn optimize_schedule(&self, transverse_field: f64, beta: f64) -> Vec<f64>
pub fn optimize_schedule(&self, transverse_field: f64, beta: f64) -> Vec<f64>
Optimise the annealing schedule using a greedy coordinate-descent over the control points.
The objective is to maximise the estimated success probability from
a QuantumTunnelingSimulator instantiated with the given parameters.
Returns the optimised schedule control points.
Auto Trait Implementations§
impl Freeze for AnnealingScheduleOptimizer
impl RefUnwindSafe for AnnealingScheduleOptimizer
impl Send for AnnealingScheduleOptimizer
impl Sync for AnnealingScheduleOptimizer
impl Unpin for AnnealingScheduleOptimizer
impl UnsafeUnpin for AnnealingScheduleOptimizer
impl UnwindSafe for AnnealingScheduleOptimizer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.