Skip to main content
IBM Quantum Platform

ColibriTD Referencia de la API de QUICK-PDE

  • Qiskit Functions

    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.


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
CFDafloatCoeficiente de los valores iniciales de uu1.0
CFDbfloatDesviación de los valores iniciales de uu1.0
MDtfloattensión superficial12.0
MDKfloatmódulo de compresibilidad100.0
MDnintley de potencias4.0
MDbfloatfuerza por unidad de masa10.0
MDepsilon_0floatlímite de tensión proporcional0.1
MDsigma_0floatlímite de deformación proporcional5.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 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]),
    },
}

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".

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.