-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Singlet symmetry-reduced UCCSD #366
Conversation
Do you see this feature as:
|
@ValentinS4t1qbit I think the first point summarize it better, but there is more to it. The forbidden excitations have parameter set to 0 (they are ignored) if the orbital symmetry rule is not totally symmetric (A1). Therefore the excitations on spin orbitals mapping to the same spatial orbitals are linearly dependant + we can remove excitations we know the parameter will be 0 even after optimization. |
@AlexandreF-1qbit Thank you, that sounds pretty rad. It's actually surprising we haven't implemented something like that a long time ago, since it's so fundamental and impactful for computational cost / convergence. My guess is that we were not using UCCSD much and were mostly working with small systems, which was not that time-consuming. If we manage to reused cached circuits and the results of the qubit mappings, overall we may end up with a VQE-UCC bundle that can be an order of magnitude faster and more flexible. @JamesB-1qbit I may need just a little help understanding the choice of mapping |
I think it is something that was falling into "nice to have" but was not in line with our research roadmap. It is nice to have shorter UCC circuits, but they still scale badly with the system size (and those ideas can be applied to other ansatze as well). I can try to answer the second one: |
This work has been transferred to my repo at https://github.com/alexfleury-sb/Tangelo/tree/sym_uccsd. |
Utilizes symmetry to reduce the number of parameters for singlet UCCSD. Also generates the variables
param_dict. Maps the parameter indice to the corresponding spatial orbital excitation
param_dict[0] = (2, 0) means that parameter 1 is utilized for the single excitation (2^0 - 0^2) + (3 ^1 - 1^ 3) for example.
operator_dict maps the excitation to the FermionOperator.
params2keep is the list of parameters from the full packed_amplitudes that are kept in the optimization process. This could be modified by the user if some excitations are known to be small.