Skip to main content
IBM Quantum Platform

ColibriTD Referência da API do QUICK-PDE

  • 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 industrial. Clique para ver o guia desta função do Qiskit.


Entradas

use_case

Tipo: `Literal['MD', 'CFD']`

Selecione o sistema de equações diferenciais a ser resolvido

  • Específico para um caso de uso: Não
  • Exemplo:"CFD"

parameters

Tipo: `dict[str, Any]`

Os parâmetros da equação diferencial (parâmetros físicos e condição de contorno), que devem seguir o formato indicado:

Caso de uso
Chave
Tipo de valor
Descrição
Exemplo
CFDafloatCoeficiente dos valores iniciais de uu1.0
CFDbfloatDesvio dos valores iniciais de um uu1.0
MDtfloattensão superficial12.0
MDKfloatmódulo de compressibilidade100.0
MDnintlei de potência4.0
MDbfloatforça por unidade de massa10.0
MDepsilon_0floatlimite de tensão proporcional0.1
MDsigma_0floatlimite de deformação proporcional5.0
  • Específico para um caso de uso: Não
  • Exemplo:{"a": 1.0, "b": 1.0}

nb_qubits

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

Número de qubits por função e por variável. Os valores otimizados são escolhidos pela função, mas se você quiser tentar encontrar uma combinação melhor, pode substituir os valores padrão.

  • Específico para um caso de uso: Não
  • Exemplo:{"u": {"x": 1, "t":3}}

depth

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

Profundidade do ansatz por função. Os valores otimizados são escolhidos pela função, mas se você quiser tentar encontrar uma combinação melhor, pode substituir os valores padrão.

  • Específico para um caso de uso: Não
  • Exemplo:{"u": 4}

optimizer

Tipo: `Optional[list[str]]`

Otimizadores a serem utilizados: o "CMAES" da biblioteca cma Python ou um dos otimizadores do scipy

  • Específico para o caso de uso: MD
  • Exemplo:"SLSQP"

shots

Tipo: `Optional[list[int]]`

Número de disparos utilizados para executar cada circuito. Como são necessárias várias etapas de otimização, o comprimento da lista deve ser igual ao número de otimizadores utilizados (4 no caso da CFD). O valor padrão é [50_000] * nb_optimizers para MD e [5_00, 2_000, 5_000, 10_000] para CFD.

  • Específico para um caso de uso: Não
  • Exemplo:[15_000, 30_000]

optimizer_options

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

Opções a serem passadas ao otimizador. Os detalhes dessa entrada dependem do otimizador utilizado; para obter informações específicas, consulte a documentação do otimizador em questão.

  • Específico para o caso de uso: MD
  • Exemplo:{"maxiter": 50 }

initialization

Tipo: `Optional[Literal['RANDOM', 'PHYSICALLY_INFORMED']]`

Valor Padrão: `PHYSICALLY_INFORMED`

Se devemos começar com ângulos aleatórios ou com ângulos escolhidos de forma inteligente. Lembre-se de que ângulos bem escolhidos podem não funcionar em 100% dos casos.

  • Específico para um caso de uso: Não
  • Exemplo:"RANDOM"

backend_name

Tipo: `Optional[str]`

O nome do backend a ser usado.

  • Específico para um caso de uso: Não
  • Exemplo:ibm_torino

mode

Tipo: `Optional[Literal['job', 'session', 'batch']]`

Valor Padrão: `job`

O modo de execução a ser utilizado.

  • Específico para um caso de uso: Não
  • Exemplo:"job"

Saída

O resultado é um dicionário que contém a lista de pontos de amostragem, bem como os valores das funções em cada um desses pontos:

from numpy import array
solution = {
    "functions": {
        "u": array(
            [
                [0.01, 0.1, 1],
                [0.02, 0.2, 2],
                [0.03, 0.3, 3],
                [0.04, 0.4, 4],
            ]
        ),
    },
    "samples": {
        "t": array([0.1, 0.2, 0.3, 0.4]),
        "x": array([0.5, 0.6, 0.7]),
    },
}

A forma de uma matriz de soluções depende das amostras das variáveis:

assert len(solution["functions"]["u"].shape) == len(solution["samples"])
for col_size, samples in zip(
    solution["functions"]["u"].shape, solution["samples"].values()
):
    assert col_size == len(samples)

A correspondência entre os pontos de amostragem das variáveis da função e a dimensão da matriz de soluções é feita por ordem alfanumérica do nome da variável. Por exemplo, se as variáveis forem "t" e "x", uma linha da matriz solution["functions"]["u"] representa os valores da solução para um valor fixo "t"de, e uma coluna da matriz solution["functions"]["u"] representa os valores da solução para um valor fixo "x"de.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.