qiskit_addon_sqd.fermion.optimize_orbitals¶
- optimize_orbitals(bitstring_matrix, /, hcore, eri, k_flat, *, open_shell=False, spin_sq=0.0, num_iters=10, num_steps_grad=10000, learning_rate=0.01, max_davidson=100)[source]¶
Optimize orbitals to produce a minimal ground state.
The process involves iterating over 3 steps:
- For
num_iters
iterations: Rotate the integrals with respect to the parameters,
k_flat
Diagonalize and approximate the groundstate energy and wavefunction amplitudes
Optimize
k_flat
using gradient descent and the wavefunction amplitudes found in Step 2
Refer to Sec. II A 4 for more detailed discussion on this orbital optimization technique.
- Parameters:
bitstring_matrix (tuple[ndarray, ndarray] | ndarray) –
A set of configurations defining the subspace onto which the Hamiltonian will be projected and diagonalized. This is a 2D array of
bool
representations of bit values such that each row represents a single bitstring. The spin-up configurations should be specified by column indices in range(N, N/2]
, and the spin-down configurations should be specified by column indices in range(N/2, 0]
, whereN
is the number of qubits.(DEPRECATED) The configurations may also be specified by a length-2 tuple of sorted 1D arrays containing unsigned integer representations of the determinants. The two lists should represent the spin-up and spin-down orbitals, respectively.
hcore (ndarray) – Core Hamiltonian matrix representing single-electron integrals
eri (ndarray) – Electronic repulsion integrals representing two-electron integrals
k_flat (ndarray) – 1D array defining the orbital transform. This array will be reshaped to be of shape (# orbitals, # orbitals) before being used as a similarity transform operator on the orbitals. Thus
len(k_flat)=# orbitals**2
.open_shell (bool) – A flag specifying whether configurations from the left and right halves of the bitstrings should be kept separate. If
False
, CI strings from the left and right halves of the bitstrings are combined into a single set of unique configurations and used for both the alpha and beta subspaces.spin_sq (float) – Target value for the total spin squared for the ground state
num_iters (int) – The number of iterations of orbital optimization to perform
max_davidson (int) – The maximum number of cycles of Davidson’s algorithm to perform during diagonalization.
num_steps_grad (int) – The number of steps of gradient descent to perform during each optimization iteration
learning_rate (float) – The learning rate to use during gradient descent
- Returns:
The groundstate energy found during the last optimization iteration
An optimized 1D array defining the orbital transform
Average orbital occupancy
- Return type:
A tuple containing
- For