Skip to main content
IBM Quantum Platform

Referencia de la API de química de Qunova HI-VQE

  • Qiskit Functions

    Qiskit Functions — Herramientas preconfiguradas creadas por organizaciones colaboradoras — que abstraen partes del flujo de trabajo de desarrollo de software para simplificar y acelerar el descubrimiento de algoritmos y el desarrollo de aplicaciones a escala industrial. Haz clic aquí para ver la guía de esta función de Qiskit.


Entradas

geometry

Tipo: `Union[List[List[Union[str, Tuple[float, float, float]]]], str]`

Puede tratarse de una cadena de caracteres o de listas estructuradas que contengan pares de átomos y coordenadas. Si se proporciona como una cadena de caracteres, debe tratarse de la geometría de una molécula en formato de coordenadas cartesianas. Si se proporciona en forma de lista, debe ser una lista de listas, cada una de las cuales contenga una cadena atómica y un tuple de coordenadas.

  • Obligatorio: Sí
  • Ejemplo: [['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]] o "O 0 0 0; H 0 1 0; H 0 0 1"

backend_name

Tipo: `str`

Nombre del backend en el que se va a realizar la consulta.

  • Obligatorio: Sí
  • Ejemplo:ibm_fez

max_states

Tipo: `int`

La dimensión máxima del subespacio para la diagonalización. Se utilizarán menos estados si el número no es un cuadrado perfecto.

  • Obligatorio: Sí
  • Ejemplo:100

max_expansion_states

Tipo: `int`

El número máximo de estados de CI generados de forma clásica que se incluirán en cada iteración.

  • Obligatorio: Sí
  • Ejemplo:10

molecule_options

Tipo: `dict`

Opciones relacionadas con la molécula utilizada como entrada en HI-VQE. La siguiente lista detalla todas las claves y valores que se pueden establecer en el molecule_options diccionario, así como sus tipos de datos y valores predeterminados. Todas las claves son opcionales.

charge

Tipo: `int`

Valor predeterminado: `0`

Un número entero que indica la carga neta total del sistema molecular. El valor predeterminado es 0; sin embargo, puede ser cualquier número entero.

  • Rango válido: Varios

basis

Tipo: `str`

Valor predeterminado: `'sto-3g'`

Una cadena que especifica el tipo de base; estas se pasan a pyscf. Por ejemplo: "sto-3g", "3-21g", "6-31g", "cc-pvdz"

  • Rango válido: Varios

active_orbitals

Tipo: `List[int]`

Valor predeterminado: Every orbital index

Una lista de índices orbitales activos en el intervalo [0, n), donde n es el número de qubits utilizados en el problema. Si se especifica esto, también debe especificarse el argumento frozen_orbitals.

  • Rango válido: los índices orbitales espaciales válidos para el problema

frozen_orbitals

Tipo: `List[int]`

Valor predeterminado: `No indices`

Una lista de índices orbitales congelados dentro del mismo rango que los orbitales activos. Si se especifica, también debe especificarse active_orbitals. Ten en cuenta que solo deben congelarse los orbitales ocupados, ya que el número de electrones activos se reduce en 2 por cada orbital ocupado que se congele.

  • Rango válido: los índices orbitales espaciales válidos para el problema, excluyendo los orbitales activos

orbital_coeffs

Tipo: `List[List[float]]`

Valor predeterminado: `Hartree-Fock molecular orbitals`

Los coeficientes de los orbitales espaciales utilizados en el cálculo de las integrales de repulsión electrónica del sistema. Algunos ejemplos válidos son los orbitales moleculares de Hartree-Fock, los orbitales naturales y los orbitales AVAS.

  • Rango válido: Varios

symmetry

Tipo: `Union[str, bool]`

Valor predeterminado: `False`

Se utiliza para aplicar la simetría del grupo puntual en los cálculos moleculares iniciales con el fin de construir la base de orbitales adaptada a la simetría. Estos orbitales adaptados a la simetría se utilizan como funciones de base para los siguientes cálculos SCF. El valor predeterminado es False; si se establece en True, se activará y se detectarán y utilizarán automáticamente grupos de puntos arbitrarios. Si se asigna una simetría concreta, por ejemplo, symmetry = «Dooh», se generará un error si la geometría molecular no cumple con esta simetría requerida.

  • Intervalo válido: True o False

symmetry_subgroup

Tipo: `Optional[str]`

Valor predeterminado: `None`

Se puede utilizar para generar un subgrupo de la simetría detectada. Esto no tiene ningún efecto cuando la simetría se especifica mediante el argumento de palabra clave «symmetry».

unit

Tipo: `str`

Valor predeterminado: `angstrom`

Especifica la unidad de medida que se utilizará para las coordenadas atómicas y las distancias. Por defecto, se utilizan unidades de angstrom.

nucmod

Tipo: `Optional[Union[dict, str]]`

Valor predeterminado: `None`

Especifica el modelo nuclear que se va a utilizar. Por defecto, utiliza el modelo nuclear puntual; al introducir otros valores, se activa el modelo nuclear gaussiano. Si se proporciona una función, esta se utilizará con el modelo nuclear gaussiano para generar el valor de la distribución de la carga nuclear «zeta».

pseudo

Tipo: `Optional[Union[dict, str]]`

Valor predeterminado: `None`

Especifica el pseudopotencial de los átomos de la molécula. Por defecto, este valor es «None», lo que indica que no se aplican pseudopotenciales y que todos los electrones se incluyen explícitamente en los cálculos.

cart

Tipo: `bool`

Valor predeterminado: `False`

Especifica si se deben utilizar GTO cartesianos como funciones de base del momento angular en el cálculo. El valor predeterminado «False» utilizará GTO esféricos.

magmom

Tipo: `(`Optional[List[Union[int, float]]]`

Valor predeterminado: `1_000`

Establece el momento magnético de espín colineal de cada átomo. Por defecto, este valor es «None» y cada átomo se inicializa con un espín igual a cero.

avas_aolabels

Tipo: `Optional[List[str]]`

Valor predeterminado: `None`

Esto define el orbital atómico que se incluirá en el esquema AVAS. Consulte la documentación de AVAS.

  • Rango válido: por ejemplo, [«H 1s », «O 2p »] para H 2_2 O

avas_threshold

Tipo: `float`

Valor predeterminado: `0.2`

Esto especifica el valor de corte utilizado para determinar qué orbitales atómicos (AO) se mantienen en el espacio activo.

  • Rango válido: entre 0.0 y 2.0

noons_level

Tipo: `Optional[str]`

Valor predeterminado: `None`

Esto define el enfoque teórico para la preparación de orbitales naturales y la selección de orbitales activos basándose en el esquema de los Números de Ocupación de Orbitales Naturales (NOON). Consulte la documentación de NOON. Es necesario especificar tanto los índices de orbitales activos como los de orbitales congelados para controlar el número de orbitales (y el número de qubits).

  • Intervalo válido: "mp2" o "ccsd"
  • Requisito: No
  • Ejemplo:{"basis": "sto3g", "unit": "angstrom" }

hivqe_options

Tipo: `dict`

Opciones que controlan el comportamiento del algoritmo HI-VQE. La siguiente lista detalla todas las claves y valores que se pueden establecer en el hivqe_options diccionario, así como sus tipos de datos y valores predeterminados. Todas las claves son opcionales.

shots

Tipo: `int`

Valor predeterminado: `1_000`

Número de disparos que se utilizarán en el dispositivo cuántico por iteración.

  • Rango válido: entre 1 y 10 000

max_iter

Tipo: `int`

Valor predeterminado: `25`

El número máximo de iteraciones que se ejecutarán para optimizar el ansatz. El algoritmo puede necesitar menos iteraciones si se alcanza la convergencia antes de lo previsto.

  • Rango válido: entre 1 y 50

initial_basis_states

Tipo: `List[str]`

Valor predeterminado: The Hartree-Fock state

Se puede utilizar para reiniciar el algoritmo con los estados clásicos de un resultado anterior.

  • Rango válido: cadenas binarias cuyo número de bits coincida con el número de qubits requerido para el problema.

ansatz

Tipo: `str`

Valor predeterminado: `epa`

Esto especifica el ansatz cuántico que se va a optimizar para generar nuevos estados. "epa" selecciona el ansatz que conserva la excitación. "hea" selecciona el enfoque eficiente desde el punto de vista del hardware. "lucj" selecciona el modelo de Jastrow de cúmulo unitario local.

  • Rango válido: "epa", "hea", o "lucj"

convergence_count

Tipo: `int`

Valor predeterminado: `3`

El número de iteraciones sin cambios significativos en la energía calculada que debe transcurrir antes de que se considere que el algoritmo ha convergido.

  • Al menos 2

convergence_abstol

Tipo: `float`

Valor predeterminado: `1e-4`

La magnitud de la variación en la energía calculada que se considera significativa a efectos de las comprobaciones de convergencia.

  • Rango válido: más de 0 y como máximo 1

reset_convergence_count

Tipo: `bool`

Valor predeterminado: `True`

Para Trueque se considere que la convergencia se ha producido, las convergence_count iteraciones deben realizarse sin que se produzca ningún cambio significativo que las interrumpa. Si False, entonces el algoritmo se detendrá después de convergence_count si se han producido cambios insignificantes en alguna de las iteraciones durante el proceso de optimización.

  • Intervalo válido: True o False

configuration_recovery

Tipo: `bool`

Valor predeterminado: `True`

Si se debe utilizar o no la configuración recovery del qiskit-addon-sqd paquete. Si el valor es «True», los estados no válidos obtenidos del dispositivo cuántico se corrigen de forma clásica. Si es «False», se descartan.

  • Intervalo válido: True o False

ansatz_entanglement

Tipo: `str`

Valor predeterminado: `circular`

Esto especifica el esquema de entrelazamiento que debe utilizarse en el circuito cuántico, siguiendo las convenciones habituales de Qiskit y ffsim para el ansatz LUCJ.

  • Rango válido: cualquiera de "linear", "reverse_linear", "pairwise", "circular", "full", o "sca". Si se utiliza el "lucj" ansatz, también "lucj_default" es una opción.

ansatz_reps

Tipo: `int`

Valor predeterminado: `2`

El número de repeticiones de cada capa en el circuito cuántico.

  • Rango válido: Mayor que 0

amplitude_screening_tolerance

Tipo: `Union[float,int]`

Valor predeterminado: `0`

El margen de tolerancia para decidir qué estados deben excluirse del subespacio tras la diagonalización. Especifica el umbral de inclusión de los estados del subespacio en función de sus amplitudes calculadas.

  • Intervalo válido: entre 0 y 1

overlap_screening_tolerance

Tipo: `float`

Valor predeterminado: `1e-2`

La tolerancia para predecir qué estados deben excluirse del subespacio antes de la diagonalización. Controla la precisión de las amplitudes previstas para cada estado; cuanto menor sea el valor, más precisas serán las predicciones.

  • Intervalo válido: entre 1e-4 y 1e-1, ambos inclusive
  • Requisito: No
  • Ejemplo:{"shots": 10_000, "max_iter": 10 }

Resultados

La función devuelve un diccionario con cuatro claves y valores. Las claves y los valores se recogen en la siguiente tabla:

Clave
Tipo de valor
Explicación
"energy"floatLa energía aproximada del estado fundamental de la molécula.
"states"List[str]Los determinantes seleccionados que forman el subespacio utilizado para calcular la energía. Están en formato alterno alfa-beta.
"eigenvector"List[float]El vector propio correspondiente al estado fundamental del subespacio formado por "states".
"energy_variance"floatLa varianza energética del estado fundamental del subespacio compuesto por "states", lo que da una indicación de la calidad de la solución. Este valor es no negativo, y cuanto menor sea, más se aproxima el estado fundamental del subespacio a un estado propio del hamiltoniano del sistema.
"energy_history"List[float]Las energías calculadas en cada iteración durante el proceso de optimización híbrida, en el mismo orden en que se calcularon. En cada iteración se calculan dos energías como parte del proceso de optimización SPSA.
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.