ColibriTD Referencia de la API de QUICK-PDE
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.
Guía de funciones de QUICK-PDE para Qiskit
Entradas
use_case
Tipo: `Literal['MD', 'CFD']`
Selecciona el sistema de ecuaciones diferenciales que deseas resolver
- Específico para un caso de uso: No
- Ejemplo:
"CFD"
parameters
Tipo: `dict[str, Any]`
Los parámetros de la ecuación diferencial (parámetros físicos y condiciones de contorno), que deben ajustarse al formato indicado:
Caso de uso | Clave | Tipo de valor | Descripción | Ejemplo |
|---|---|---|---|---|
| CFD | a | float | Coeficiente de los valores iniciales de | 1.0 |
| CFD | b | float | Desviación de los valores iniciales de | 1.0 |
| MD | t | float | tensión superficial | 12.0 |
| MD | K | float | módulo de compresibilidad | 100.0 |
| MD | n | int | ley de potencias | 4.0 |
| MD | b | float | fuerza por unidad de masa | 10.0 |
| MD | epsilon_0 | float | límite de tensión proporcional | 0.1 |
| MD | sigma_0 | float | límite de deformación proporcional | 5.0 |
- Específico para un caso de uso: No
- Ejemplo:
{"a": 1.0, "b": 1.0}
nb_qubits
Tipo: `Optional[dict[str, dict[str, int]]]`
Número de qubits por función y por variable. La función selecciona los valores optimizados, pero si quieres intentar encontrar una combinación mejor, puedes anular los valores predeterminados.
- Específico para un caso de uso: No
- Ejemplo:
{"u": {"x": 1, "t":3}}
depth
Tipo: `Optional[dict[str, int]]`
Profundidad del ansatz por función. La función selecciona los valores optimizados, pero si quieres intentar encontrar una combinación mejor, puedes anular los valores predeterminados.
- Específico para un caso de uso: No
- Ejemplo:
{"u": 4}
optimizer
Tipo: `Optional[list[str]]`
Optimizadores que se utilizarán: «CMAES» de la biblioteca cma de Python o uno de los optimizadores de SciPy
- Específico para el caso de uso: MD
- Ejemplo:
"SLSQP"
shots
Tipo: `Optional[list[int]]`
Número de disparos utilizados para completar cada circuito. Dado que se requieren varios pasos de optimización, la longitud de la lista debe ser igual al número de optimizadores utilizados (4 en el caso del CFD). El valor predeterminado es [50_000] * nb_optimizers para MD y [5_00, 2_000, 5_000, 10_000] para CFD.
- Específico para un caso de uso: No
- Ejemplo:
[15_000, 30_000]
optimizer_options
Tipo: `Optional[dict[str, Any]]`
Opciones que se deben pasar al optimizador. Los detalles de esta entrada dependen del optimizador utilizado; para obtener información específica, consulte la documentación del optimizador en cuestión.
- Específico para el caso de uso: MD
- Ejemplo:
{"maxiter": 50 }
initialization
Tipo: `Optional[Literal['RANDOM', 'PHYSICALLY_INFORMED']]`
Valor predeterminado: `PHYSICALLY_INFORMED`
Si empezar con ángulos aleatorios o con ángulos elegidos de forma inteligente. Ten en cuenta que los enfoques bien elegidos pueden no funcionar en el 100 % de los casos.
- Específico para un caso de uso: No
- Ejemplo:
"RANDOM"
backend_name
Tipo: `Optional[str]`
El nombre del backend que se va a utilizar.
- Específico para un caso de uso: No
- Ejemplo:
ibm_torino
mode
Tipo: `Optional[Literal['job', 'session', 'batch']]`
Valor predeterminado: `job`
El modo de ejecución que se va a utilizar.
- Específico para un caso de uso: No
- Ejemplo:
"job"
Resultado
El resultado es un diccionario que contiene la lista de puntos de muestreo, así como los valores de las funciones en cada uno de esos puntos:
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]),
},
}La forma de una matriz de soluciones depende de las muestras de las variables:
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)La correspondencia entre los puntos de muestra de las variables de la función y la dimensión de la matriz de soluciones se establece siguiendo el orden alfabético de los nombres de las variables. Por ejemplo, si las variables son "t" y "x", una fila de solution["functions"]["u"] representa los valores de la solución para un fijo "t", y una columna de solution["functions"]["u"] representa los valores de la solución para un fijo "x".