pub struct QuantumTunnelingSimulator { /* private fields */ }Expand description
Quantum Tunneling Simulator
Models quantum tunneling through energy barriers in optimization landscapes. The tunneling rate is estimated via the semiclassical WKB approximation:
T ≈ exp(-2 ∫_x1^x2 √(2m(V(x) - E)) dx)For discrete problems, the tunneling Hamiltonian is H_T = -Γ Σ_i σ_i^x, where Γ is the transverse field strength. The tunnelling rate between two local minima separated by a barrier is approximated via the imaginary-time instanton action.
Implementations§
Source§impl QuantumTunnelingSimulator
impl QuantumTunnelingSimulator
Sourcepub fn new(transverse_field: f64, trotter_steps: usize, beta: f64) -> Self
pub fn new(transverse_field: f64, trotter_steps: usize, beta: f64) -> Self
Create a new tunnelling simulator.
transverse_field— Γ in the TFIM; large Γ ↔ strong tunnelling.trotter_steps— discretisation of the imaginary-time path integral.beta— inverse temperature (1 / T); higher ↔ lower temperature.
Sourcepub fn tunneling_rate(&self, barrier_height: f64) -> f64
pub fn tunneling_rate(&self, barrier_height: f64) -> f64
Estimate the instantaneous tunnelling rate between two energy minima.
Uses a one-dimensional WKB approximation along the linear path
connecting the two spin configurations (treated as a real-valued
coordinate). The barrier height barrier_height is the maximum
energy along this path relative to the lower minimum.
Returns the dimensionless tunnelling amplitude T ∈ (0, 1].
Sourcepub fn instanton_action(&self, barrier_profile: &[f64]) -> f64
pub fn instanton_action(&self, barrier_profile: &[f64]) -> f64
Instanton action for a path through the energy barrier.
The instanton connects two degenerate minima in imaginary time.
The action S_inst = ∫_0^β V(τ) dτ is approximated by summing the
potential over trotter_steps evenly spaced imaginary-time slices
using the trapezoidal rule.
barrier_profile gives the potential energy at each imaginary-time
slice along the tunnelling path. Returns the total instanton action.
Sourcepub fn simulate_annealing(&self, n_steps: usize, problem_gap: f64) -> f64
pub fn simulate_annealing(&self, n_steps: usize, problem_gap: f64) -> f64
Simulate quantum annealing from initial_state and return the
probability of ending in the ground state.
The annealing schedule linearly ramps Γ from transverse_field to 0
over n_steps. At each step the instantaneous gap Δ(s) = 2Γ(s) is
used to estimate the non-adiabatic transition probability via the
Landau-Zener formula:
P_LZ = 1 - exp(-π Δ² / (2 |dΔ/dt|))Returns an estimated success probability in [0, 1].
Auto Trait Implementations§
impl Freeze for QuantumTunnelingSimulator
impl RefUnwindSafe for QuantumTunnelingSimulator
impl Send for QuantumTunnelingSimulator
impl Sync for QuantumTunnelingSimulator
impl Unpin for QuantumTunnelingSimulator
impl UnsafeUnpin for QuantumTunnelingSimulator
impl UnwindSafe for QuantumTunnelingSimulator
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.