Referência da API de Química do Qunova HI-VQE
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.
Guia de funções HI-VQE Chemistry no 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:
TrueouFalse
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.
- Intervalo válido: Consulte a documentação do pyscf
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.
- Intervalo válido: Consulte a documentação do pyscf
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'.
- Intervalo válido: Consulte a documentação do pyscf
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.
- Intervalo válido: Consulte a documentação do pyscf
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.
- Intervalo válido: Consulte a documentação do pyscf
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.
- Intervalo válido: Consulte a documentação do pyscf
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 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:
TrueouFalse
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:
TrueouFalse
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-4e1e-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" | float | A 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" | float | A 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. |