Referencia de la API del simulador de dinámica Q-CTRL
Qiskit Functions —herramientas preconfiguradas creadas por organizaciones colaboradoras— 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 del simulador de dinámica Q-CTRL
El simulador de dinámica admite una descripción del modelo físico en lugar de circuitos. Fire Opal crea y optimiza los circuitos para el backend de destino, por lo que no es necesario transpilar ni precompilar nada.
Entradas
Consulta la siguiente lista para ver todos los parámetros de entrada que admite esta API. Todos los parámetros se pasan como argumentos de palabra clave. model, simulation, y observables pueden especificarse, cada uno de ellos, bien como un diccionario de Python (una lista de diccionarios en el caso de observables) o bien como una cadena JSON. La función rechaza los argumentos de primer nivel desconocidos.
model
Tipo: dict[str, Any] or str
El modelo de Fermi-Hubbard, en formato de diccionario o como cadena JSON. Consulta «Campos del modelo» para ver los campos que contiene.
- Obligatorio: Sí
- Ejemplo:
{"hopping_amplitude": 1.0, "on_site_interaction": [2.0, 2.5, 2.0], "chemical_potential": 0.5}
Campos del modelo
hopping_amplitude
Tipo: float or list[float]
Amplitud de tunelización. Un escalar se transmite a todos los enlaces. Una lista debe contener entradas len(initial_state) - 1 (una por cada bono).
on_site_interaction
Tipo: float or list[float]
Nivel de interacción en el propio sitio. Un escalar se distribuye a todos los sitios. Una lista debe contener len(initial_state) entradas (una por sitio).
chemical_potential
Tipo: float or list[float]
Potencial químico. Un escalar se distribuye a todos los sitios. Una lista debe contener len(initial_state) entradas (una por sitio).
simulation
Tipo: dict[str, Any] or str
El esquema de simulación de Trotter, expresado como un diccionario o una cadena JSON. Consulta «Campos de simulación» para ver los campos que contiene.
- Obligatorio: Sí
- Ejemplo:
{"method": "trotter", "step_count": 5, "time_step": 0.1}
Campos de simulación
method
Tipo: str
Método de simulación. "trotter" es el método admitido.
- Opciones:
trotter
step_count
Tipo: int
Número de pasos de Trotter.
time_step
Tipo: float
Duración de cada paso de Trotter.
observables
Tipo: list[dict[str, Any]] or str
Los operadores de ocupación dispersa que se van a medir, un diccionario por cada observable, proporcionados como una lista de diccionarios o una cadena JSON. Debe contener al menos una variable observable. Consulta «Campos observables» para ver los campos que contiene cada diccionario.
- Obligatorio: Sí
- Ejemplo:
[{"operators": [[["Nup", 0]]], "coefficients": [1.0]}]
Campos observables
operators
Tipo: list[list[list[str, int]]]
Los términos de la observable. Cada término es un producto de pares [operator_name, site_index] , donde operator_name es o "Nup" "Ndn".
coefficients
Tipo: list[float]
Un coeficiente por término en operators.
initial_state
Tipo: str
El estado de Fock inicial, con un carácter por sitio de la red. Debe ser un valor no vacío. El número de sitios de la red es len(initial_state), y la simulación utiliza qubits 2 * len(initial_state) . El backend debe tener al menos ese número de qubits.
- Obligatorio: Sí
- Caracteres permitidos:
"e": (vacío) solar sin ocupar"u": (arriba) ocupado por un solo usuario, poner en marcha"d": (hacia abajo) ocupado por una sola persona, desaceleración"b": (ambos) con doble ocupación
- Ejemplo:
"udb"
shots
Tipo: int
El número de disparos que se deben utilizar en cada ejecución del circuito. Debe ser un número entero positivo.
- Obligatorio: Sí
- Ejemplo:
1000
backend_name
Tipo: str
Valor predeterminado: Automatic selection
Nombre del backend que se va a utilizar. Si no se indica ningún nombre, la función selecciona automáticamente un backend con suficientes qubits.
- Obligatorio: No
- Ejemplo:
"ibm_phoenix"
Opciones
Tipo: dict
Valor predeterminado: {}
Opciones de ejecución adicionales, pasadas como options. Las opciones se especifican como un diccionario anidado. Consulta la lista de opciones para obtener más detalles y conocer los valores predeterminados.
- Obligatorio: No
- Ejemplo:
{"job_tags": ["my_tag"]}
Lista de opciones
session_id
Tipo: str
Valor predeterminado: ""
Un ID de sesión existente del servicio « IBM Quantum Compute ».
- Ejemplo:
"cw4r3je6f0t010870y3g"
job_tags
Tipo: list[str]
Valor predeterminado: []
Una lista de etiquetas de empleo.
- Ejemplo:
["job_tag1", "job_tag2"]
Resultados
El resultado de esta API es un dict que contiene los resultados de la simulación y los metadatos. Los resultados incluyen los valores esperados de las observables solicitadas en cada paso temporal de la evolución temporal de Trotter.
Tipo: dict[str, Any]
Los resultados de la simulación y los metadatos que figuran en la sección «Estructura de los resultados ».
- Ejemplo:
{"observable_expectation_values": [[1.0, 0.96, 0.91],[0.0, 0.04, 0.08]], "observables": [{"operators": [[["Nup", 0]]],"coefficients": [1.0]}], "warnings": [], "metadata": {}}
Estructura de salida
observable_expectation_values
Tipo: list[list[float]]
Valores esperados, una lista por cada variable observable de entrada, en el mismo orden que observables. Cada lista contiene valores step_count + 1 , incluido el estado inicial.
observables
Tipo: list[dict[str, Any]]
Las magnitudes observables que se midieron se reflejaron a partir de los datos de entrada.
warnings
Tipo: list[str]
Advertencias generadas durante la compilación o la ejecución de la simulación.
metadata
resource_usage
Tipo: dict
Un desglose del tiempo de CPU y QPU (en segundos) para cada etapa de la ejecución. Cada etapa tiene un CPU_TIME y un QPU_TIME.
RUNNING: MAPPING
Tipo: dict
Identificar el problema en el dispositivo.
RUNNING: OPTIMIZING_HARDWARE
Tipo: dict
Optimización de los circuitos para el hardware.
RUNNING: WAITING_QPU
Tipo: dict
Tiempo de espera en la cola de la QPU (tiempo de CPU).
RUNNING: EXECUTING_QPU
Tipo: dict
Tiempo de ejecución en la QPU (tiempo de QPU).
RUNNING: POST_PROCESSING
Tipo: dict
Posprocesamiento de los resultados.