Skip to main content
IBM Quantum Platform

Referência da API de Química do Qunova HI-VQE

  • Qiskit Functions

    Qiskit Functions — ferramentas pré-configuradas criadas por organizações parceiras — abstraem partes do fluxo de trabalho de desenvolvimento de software para simplificar e acelerar a descoberta de algoritmos e o desenvolvimento de aplicativos em escala de serviços públicos. Clique para ver o guia desta função do Qiskit.


Entradas

geometry

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

Pode ser uma sequência de caracteres ou listas estruturadas contendo pares de átomos e coordenadas. Se for fornecido como uma string, deve ser uma geometria molecular no formato de coordenadas cartesianas. Se for fornecido como uma lista, deve ser uma lista de listas, sendo que cada uma delas deve conter uma string atômica e um tuplo de coordenadas.

  • Necessário: sim
  • Exemplo: [['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]] ou "O 0 0 0; H 0 1 0; H 0 0 1"

backend_name

Tipo: `str`

Nome do backend para realizar a consulta.

  • Necessário: sim
  • Exemplo:ibm_fez

max_states

Tipo: `int`

A dimensão máxima do subespaço para a diagonalização. Serão utilizados menos estados se o número não for um quadrado perfeito.

  • Necessário: sim
  • Exemplo:100

max_expansion_states

Tipo: `int`

O número máximo de estados de CI gerados de forma clássica a serem incluídos em cada iteração.

  • Necessário: sim
  • Exemplo:10

molecule_options

Tipo: `dict`

Opções relacionadas à molécula utilizada como entrada no HI-VQE. A lista a seguir detalha todas as chaves e valores que podem ser definidos no molecule_options dicionário, bem como seus tipos de dados e valores padrão. Todas as chaves são opcionais.

charge

Tipo: `int`

Valor Padrão: `0`

Um número inteiro que especifica a carga líquida total do sistema molecular. O valor padrão é 0; no entanto, pode ser qualquer número inteiro.

  • Intervalo válido: Vários

basis

Tipo: `str`

Valor Padrão: `'sto-3g'`

Uma string que especifica o tipo de base; estas são passadas para o pyscf. Por exemplo: "sto-3g", "3-21g", "6-31g", "cc-pvdz"

  • Intervalo válido: Vários

active_orbitals

Tipo: `List[int]`

Valor Padrão: Every orbital index

Uma lista de índices orbitais ativos no intervalo [0, n), em que n é o número de qubits utilizados no problema. Se isso for especificado, o argumento frozen_orbitals também deverá ser especificado.

  • Intervalo válido: Os índices orbitais espaciais válidos para o problema

frozen_orbitals

Tipo: `List[int]`

Valor Padrão: `No indices`

Uma lista de índices orbitais congelados no mesmo intervalo que os orbitais ativos. Se for especificado, então active_orbitals também deve ser especificado. Observe que apenas os orbitais ocupados devem ser congelados, pois o número de elétrons ativos é reduzido em 2 para cada orbital ocupado que for congelado.

  • Intervalo válido: os índices orbitais espaciais válidos para o problema, excluindo os orbitais ativos

orbital_coeffs

Tipo: `List[List[float]]`

Valor Padrão: `Hartree-Fock molecular orbitals`

Os coeficientes dos orbitais espaciais utilizados no cálculo das integrais de repulsão eletrônica do sistema. Alguns exemplos válidos são os orbitais moleculares de Hartree-Fock, os orbitais naturais e os orbitais AVAS.

  • Intervalo válido: Vários

symmetry

Tipo: `Union[str, bool]`

Valor Padrão: `False`

Utilizado para invocar a simetria do grupo pontual nos cálculos moleculares iniciais, a fim de construir a base orbital adaptada à simetria. Esses orbitais adaptados à simetria são utilizados como funções de base para os cálculos SCF a seguir. O valor padrão é False; se definido como True, a função será chamada e grupos de pontos arbitrários serão automaticamente detectados e utilizados. Se for atribuída uma simetria específica, por exemplo, symmetry = “Dooh”, será gerado um erro caso a geometria molecular não esteja em conformidade com essa simetria exigida.

  • Intervalo válido: True ou False

symmetry_subgroup

Tipo: `Optional[str]`

Valor Padrão: `None`

Pode ser usado para gerar um subgrupo da simetria detectada. Isso não tem efeito quando a simetria é especificada usando o argumento de palavra-chave symmetry.

unit

Tipo: `str`

Valor Padrão: `angstrom`

Especifica a unidade de medida a ser usada para coordenadas atômicas e distâncias. O padrão é usar unidades de angstrom.

nucmod

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

Valor Padrão: `None`

Especifica o modelo nuclear a ser utilizado. Por padrão, utiliza o modelo nuclear pontual; outros valores ativam o modelo nuclear gaussiano. Se for fornecida uma função, ela será utilizada com o modelo nuclear gaussiano para gerar o valor da distribuição da carga nuclear 'zeta'.

pseudo

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

Valor Padrão: `None`

Especifica o pseudopotencial dos átomos da molécula. Por padrão, esse valor é None, o que indica que nenhum pseudopotencial é aplicado e que todos os elétrons são explicitamente incluídos nos cálculos.

cart

Tipo: `bool`

Valor Padrão: `False`

Especifica se devem ser utilizados GTOs cartesianos como funções de base do momento angular no cálculo. O valor padrão False utilizará GTOs esféricos.

magmom

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

Valor Padrão: `1_000`

Define o momento magnético de spin colinear de cada átomo. Por padrão, esse valor é None e cada átomo é inicializado com um spin igual a zero.

avas_aolabels

Tipo: `Optional[List[str]]`

Valor Padrão: `None`

Isso define o Orbital Atômico a ser incluído no esquema AVAS. Consulte a documentação do AVAS.

  • Intervalo válido: por exemplo, ["H 1s ", "O 2p "] para H 2_2 O

avas_threshold

Tipo: `float`

Valor Padrão: `0.2`

Isso especifica o valor limite utilizado para determinar quais orbitais atômicos (AOs) são mantidos no espaço ativo.

  • Intervalo válido: entre 0.0 e 2.0

noons_level

Tipo: `Optional[str]`

Valor Padrão: `None`

Isso define a abordagem teórica para a preparação de orbitais naturais e a seleção de orbitais ativos com base no esquema dos Números de Ocupação de Orbitais Naturais (NOONs). Consulte a documentação do NOON. É necessário fornecer tanto os índices orbitais ativos quanto os congelados para controlar o número de orbitais (e o número de qubits).

  • Intervalo válido: "mp2" ou "ccsd"
  • Obrigatório: Não
  • Exemplo:{"basis": "sto3g", "unit": "angstrom" }

hivqe_options

Tipo: `dict`

Opções que controlam o comportamento do algoritmo HI-VQE. A lista a seguir detalha todas as chaves e valores que podem ser definidos no hivqe_options dicionário, bem como seus tipos de dados e valores padrão. Todas as chaves são opcionais.

shots

Tipo: `int`

Valor Padrão: `1_000`

Número de simulações a serem realizadas no dispositivo quântico por iteração.

  • Intervalo válido: entre 1 e 10 000

max_iter

Tipo: `int`

Valor Padrão: `25`

O número máximo de iterações a serem executadas para otimizar o ansatz. O algoritmo pode utilizar menos iterações se a convergência for alcançada mais cedo.

  • Intervalo válido: entre 1 e 50

initial_basis_states

Tipo: `List[str]`

Valor Padrão: The Hartree-Fock state

Pode ser usado para reiniciar o algoritmo com os estados clássicos de um resultado anterior.

  • Intervalo válido: sequências binárias cujo número de bits corresponda ao número de qubits necessário para o problema.

ansatz

Tipo: `str`

Valor Padrão: `epa`

Isso especifica o ansatz quântico a ser otimizado para gerar novos estados. "epa" seleciona o ansatz que preserva a excitação. "hea" seleciona a abordagem eficiente em termos de hardware. "lucj" seleciona o modelo de Jastrow para o aglomerado unitário local.

  • Intervalo válido: "epa", "hea", ou "lucj"

convergence_count

Tipo: `int`

Valor Padrão: `3`

O número de iterações sem variação significativa da energia calculada que deve ocorrer antes que se considere que o algoritmo tenha convergido.

  • Pelo menos 2

convergence_abstol

Tipo: `float`

Valor Padrão: `1e-4`

A magnitude da variação na energia calculada considerada significativa para fins de verificações de convergência.

  • Intervalo válido: maior que 0 e no máximo 1

reset_convergence_count

Tipo: `bool`

Valor Padrão: `True`

Para Trueque se considere que há convergência, as convergence_count iterações devem ocorrer sem que haja uma mudança significativa que as interrompa. Se False, então o algoritmo será interrompido após convergence_count caso tenham ocorrido alterações insignificantes em qualquer iteração durante o processo de otimização.

  • Intervalo válido: True ou False

configuration_recovery

Tipo: `bool`

Valor Padrão: `True`

Se deve ou não usar a configuração recovery do qiskit-addon-sqd pacote. Se for verdadeiro, os estados inválidos obtidos do dispositivo quântico são corrigidos classicamente. Se for falso, eles são descartados.

  • Intervalo válido: True ou False

ansatz_entanglement

Tipo: `str`

Valor Padrão: `circular`

Isso especifica o esquema de entrelaçamento que deve ser utilizado no circuito quântico, seguindo as convenções comuns do Qiskit e do ffsim para o ansatz LUCJ.

  • Intervalo válido: Qualquer um dos seguintes: "linear" "reverse_linear", "pairwise",, "circular", "full", ou "sca". Se estiver usando o "lucj" ansatz, essa também "lucj_default" é uma opção.

ansatz_reps

Tipo: `int`

Valor Padrão: `2`

O número de repetições de cada camada no circuito quântico.

  • Intervalo válido: Maior que 0

amplitude_screening_tolerance

Tipo: `Union[float,int]`

Valor Padrão: `0`

A tolerância para determinar quais estados devem ser excluídos do subespaço após a diagonalização. Especifica o limite de inclusão para os estados do subespaço com base em suas amplitudes calculadas.

  • Intervalo válido: pelo menos 0 e menor que 1

overlap_screening_tolerance

Tipo: `float`

Valor Padrão: `1e-2`

A tolerância para prever quais estados devem ser excluídos do subespaço antes da diagonalização. Ele controla a precisão das amplitudes previstas para cada estado, sendo que um valor menor resulta em previsões mais precisas.

  • Intervalo válido: entre 1e-4 e 1e-1, inclusive
  • Obrigatório: Não
  • Exemplo:{"shots": 10_000, "max_iter": 10 }

Saídas

A função retorna um dicionário com quatro chaves e valores. As chaves e os valores estão documentados na tabela a seguir:

Chave
Tipo de valor
Explicação
"energy"floatA energia aproximada do estado fundamental da molécula.
"states"List[str]Os determinantes selecionados que formam o subespaço utilizado para calcular a energia. Estão no formato alfa-beta alternado.
"eigenvector"List[float]O vetor próprio correspondente ao estado fundamental do subespaço composto por "states".
"energy_variance"floatA variação de energia do estado fundamental do subespaço composto por "states", o que dá uma indicação da qualidade da solução. Esse valor é não negativo, e um valor menor significa que o estado fundamental do subespaço se aproxima mais de um estado próprio do hamiltoniano do sistema.
"energy_history"List[float]As energias calculadas em cada iteração durante o processo de otimização híbrida, na mesma ordem em que foram calculadas. São calculadas duas energias por iteração como parte do processo de otimização SPSA.
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.