qiboteam / vqe-sun

Code used in the paper Variational Quantum Eigensolver for SU(N) Fermions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Variational Quantum Eigensolver for SU(N) Fermions

Code

We present the code used in the paper Variational Quantum Eigensolver for SU(N) Fermions, where a VQE is used to recover the ground state of the Fermi-Hubbard model for arbitrary spin SU(N) and number of sites L using an extended Jordan-Wigner mapping into N*L qubits.

In order to execute the following code, the library Qibo (available in https://github.com/qiboteam/qibo and enhanced by https://github.com/qiboteam/qibotf) is needed for the quantum simulation of the VQE and the library Quspin (available in https://github.com/weinbe58/QuSpin) is required for the exact diagonalization.


Files

  • main.py: main program.

  • functions.py: quantum primitives used for the VQE implementation in Qibo language.

  • quspin_functions.py: functions used for the exact diagonalization in Quspin language.

  • /data_vqe: folder where the data will be saved in.


How to run the program

In order to recover the results for the VQE for SU(N) fermions, the file main.py can be run with the following arguments:

Arguments

  • --N (int): SU(N) components of the fermions. (default = 3)
  • --Np (list of ints): number of spins per color. (default = 1 per color)
  • --L (int): number of sites of the instance. (default = 3)
  • --t (float or list(float)): constants for the hopping terms. (default = [1.0])
  • --U (float): on-site interaction. (default = 1.0)
  • --V (float or list(float)): interactions between fermions at distance > 0. (default = [0.0])
  • --mu (float): chemical potential.
  • --layers (int): number of maximum layers of the ansatz for the VQE implementation. (default = 3)
  • --phi_max (float): maximum flux value. (default = 0.5)
  • --phi_num (int): number of flux values to take into account from 0 to phi_max. (default = 25)
  • --backend (str): qibo backend to use for the computation. (default = "qibotf")
  • --exact: add this flag to get the values using exact diagonalization.
  • --perturb: add this flag to do a small perturbation to the last best parameters of the VQE before the next execution.
  • --open_chain: add this flag to change to an open chain rather than a closed one.

Returns

Text files containing the computed values for the ENERGY, CURRENT and ENTROPY for the Variational Quantum Eigensolver as well as the final optimized PARAMETERS. For the exact diagonalization, the EXACT_ENERGY, EXACT_STATE and EXACT_CURRENT are returned in a text file as well.

About

Code used in the paper Variational Quantum Eigensolver for SU(N) Fermions


Languages

Language:Python 100.0%