QuantumAnnealing.jl icon indicating copy to clipboard operation
QuantumAnnealing.jl copied to clipboard

Generic Initial State Computation

Open ccoffrin opened this issue 4 years ago • 1 comments

Add a tool that, given a specific annealing schedule or Hamiltonian, computes a ground state of the system at time 0 for starting the evolution process. This tool can be used when default_initial_state or default_dwave_initial_state do not provide a suitable starting point.

ccoffrin avatar Feb 10 '22 17:02 ccoffrin

@ccoffrin How do we want to do this considering that Annealing Schedules may have non-zero B(0) values (For example, most DWave schedules start with a very small, nonzero B(0))? We could either make the assumption that B(0) is 0, or we could find the lowest energy eigenstate of the input Hamiltonian, assuming that users would be wanting this behavior (otherwise they would just use the default DWave schedule or cook up their own initial state).

I am currently thinking of a function like

import LinearAlgebra
function compute_initial_state(annealing_schedule::AnnealingSchedule, ising_model::Dict)
    H = A(0) * X_component + B(0) * Z_component
    evals, evecs = LinearAlgebra.eigen(H)
    return evecs[:,1]
end

It should be noted that it looks like we would need to add Linear Algebra as a dependency. I think this is fine, since it will likely also be useful for #7

zmorrell avatar Feb 11 '22 17:02 zmorrell