lanl-ansi / QuantumAnnealing.jl

Tools for the Simulation and Execution of Quantum Annealing Algorithms
Other
23 stars 5 forks source link

Add initial h_gain_schedule implementation #42

Open zmorrell opened 1 year ago

zmorrell commented 1 year ago

@ccoffrin This is an initial attempt at the h-gains schedule implementation. I still need to add tests and fully verify that it is working, but as it stands it does not break anything that already works. Because of the way that the unwrapped magnus expansion is currently implemented, it would be very difficult to break h and J terms into their own terms, so for each time step, I assume that the h_gain_schedule over the step is well approximated by the average of the starting and ending hgs values.

This approach may introduce some overhead because it reconstructs the z_component of the hamiltonian on every iteration, but since it is sparse, this overhead should be insignificant compared to the matrix exponentiation, so I don't expect that it will hamper performance too much.

Does this all seem like a reasonable way to implement this new feature

codecov[bot] commented 1 year ago

Codecov Report

Merging #42 (b91e40a) into main (4574c4a) will increase coverage by 0.03%. The diff coverage is 96.66%.

@@            Coverage Diff             @@
##             main      #42      +/-   ##
==========================================
+ Coverage   92.88%   92.91%   +0.03%     
==========================================
  Files           5        5              
  Lines         604      621      +17     
==========================================
+ Hits          561      577      +16     
- Misses         43       44       +1     
Impacted Files Coverage Δ
src/base.jl 96.72% <50.00%> (-1.62%) :arrow_down:
src/dwave.jl 97.34% <100.00%> (+0.11%) :arrow_up:
src/simulate.jl 90.71% <100.00%> (+0.27%) :arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more