ColibriTD Referência da API do QUICK-PDE
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.
Guia de funções do QUICK-PDE 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 |
|---|---|---|---|---|
| CFD | a | float | Coeficiente dos valores iniciais de | 1.0 |
| CFD | b | float | Desvio dos valores iniciais de um | 1.0 |
| MD | t | float | tensão superficial | 12.0 |
| MD | K | float | módulo de compressibilidade | 100.0 |
| MD | n | int | lei de potência | 4.0 |
| MD | b | float | força por unidade de massa | 10.0 |
| MD | epsilon_0 | float | limite de tensão proporcional | 0.1 |
| MD | sigma_0 | float | limite de deformação proporcional | 5.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 arraysolution = {
"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.