-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Wiki del proyecto de memoria
El programa tiene dos archivos centrales, uno para calcular el conjunto de parámetros óptimos y otro para calcular observables.
Para calcular los parámetros se usa python3 search.py parameters.yml
, para calcular los observables python3 observable.py parameters.yml
. En ambos casos se necesita el archivo de parámetros, el cual es de extensión .yml.
El archivo requiere muchos parámetros que ayudan a construir los hamiltonianos y ansatz.
method_class : <VQE, SO>
simulation_object: <Electronic, Spin>
Lo primero es definir el método que se va a utilizar (method_class) junto al tipo de hamiltoniano (simulation_object)
hamiltonian_params:
### Parámetros para moléculas
file: <nombre>.xyz
mapping: <jordan_wigner, bravyi_kitaev> *
charge: <>*
mult: <>*
basis: <sto-3g, 6-31g, 6-311g, cc-pvdz>*
method: <dhf, pyscf>*
### Parámetros para espines
pauli_string: [[<termino, e.i, ZZI>, <valor del exchange>], ...]
spin: <Espin de los sitios 0.5, 1, 1.5, ...>
Estos términos permiten construir el hamiltoniano buscado, dependiendo del tipo, se requieren parámetros distintos, los que tienen * son opcionales y en caso de no ser proporcionados, se usa la configuración default.
ansatz_params:
repetitions: <numero de repeticiones>
base: default.qubit <default.qubit, default.mixed, default.gaussian,
lightning.qubit, lightning.gpu, qiskit.ibmq, qiskit.aer>
backend: <backend de qiskit>*
interface: <autograd, jax, jax_jit, tensorflow, tensorflow_autotograph>
electrons: <numero de electrones>**
shots: <numero de muestras del circuito>**
token: <token de acceso de la cuenta IBM QE>**
El backend puede ser ignorado en caso de no utilizar una base de qiskit, por otro lado, los electrons solo son utilizados en hamiltonianos moleculares (para construir el estado HF), los shots son para los hamiltonianos de espines. Finalmente, el token es el que permite el conectarse con la maquina cuantica de IBM, por ello, es necesario solo si se trabaja en una base qiskit.ibmq con un backend de una maquina real. Todo esto permite la inicializacion del ansatz, para su ejecucion.
minimizate_method: <Scipy, Gradient>
minimizate_method_params:
maxiter: <numero maximo de iteraciones>
tol: <tolerancia del valor, tiene que ser expresado en decimal, e.i, 0.000001>
### Parámetros scipy
type: <Algoritmo de minimizacion de scipy: Nelder-Mead, Powell, Powell
BFGS, Newton-CG, L-BFGS-B, TNC, COBYLA, SLSQP>
### Parámetros gradient
step_theta: <paso del gradiente asociado a los parametros del circuito>
step_x: <paso del gradiente asociado a las posiciones de los atomos>
Este es el conjunto de parámetros para la inicializacion y ejecución de la función de minimizacion, acá se tiene que indicar que tipo de minimizacion se va a usar, la librería scipy o el gradiente de la librería pennylane. Dependiendo de la selección se requieren parámetros distintos.
observable_params:
observable: <Density spin, Density charge>
file: <parámetros óptimos>.csv
Esta ultima parte esta dirigida al calculo de observables, para la fecha, solo esta implementado dos cálculos, los cuales requieren el archivo de los parámetros óptimos. Para calcular los observables, se requieren toda la información utilizada para calcular los valores óptimos, por lo tanto, esta sección es un apéndice para cuando ya se encontraron.