Generic Initial State Computation
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 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