Open willwheelera opened 10 months ago
We should think about how we want to design this, considering that we probably want to optimize only sections of parameters at a time. For example, do we want to change just one wave function, with one parameter set at a time? That way we'd only need to compute parameter derivatives for one wave function at a time, although at the cost of running a new VMC (presumably with fewer walkers) for each excited state.
We could also consider a KFAC-like approximation to the Fischer information matrix.
It might be really useful to produce some kind of convergence plot of chosen direction versus walkers, as a function of the number of parameters optimized.
Implement optimization of multiple states simultaneously as described in Entwistle et al. https://www.nature.com/articles/s41467-022-35534-5
The cost function for wave function
i
consists of the energy of wfi
plus the overlap between wfsi
andj
forj<i
(only overlaps with lower wave functions).A copy of
optimize_excited_states.py
should be used as the starting point.