Referencia de la API de Kipu Quantum Iskay Quantum Optimizer
Qiskit Functions — Herramientas preconfiguradas creadas por organizaciones asociadas — 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 Iskay Quantum Optimizer para Qiskit
Entradas
problem
Tipo: Dict[str, float]
Los coeficientes del problema de optimización formulado como QUBO/HUBO o en formato de espín. Para obtener más información sobre la descripción del problema, consulta «Formatos de problemas aceptados ».
- Obligatorio: Sí
- Ejemplo:
{"()": -21.0, "(0, 4)": 0.5,"(0, 2)": 0.5,"(0, 1)": 0.5,"(1, 3)": 0.5}
problem_type
Tipo: str
Especifica si los coeficientes del problema están en formato binario (QUBO/HUBO) o en formato de espín. Las dos posibilidades son "spin" o "binary". Para obtener más información sobre la descripción del problema, consulta «Formatos de problemas aceptados ».
- Obligatorio: Sí
- Ejemplo:
"spin"
backend_name
Tipo: str
Nombre del backend al que se va a realizar la consulta
- Obligatorio: Sí
- Ejemplo:
"ibm_fez"
Opciones
Tipo: Dict[str, Any]
Opciones para gestionar la configuración del hardware, como el número de disparos. Las opciones de esta función se especifican como un diccionario anidado. Consulte la lista completa de opciones y sus valores predeterminados.
- Requisito: No
- Ejemplo:
{"shots": 5000, "num_iterations": 3, "use_session": True, "seed_transpiler": 42}
Los argumentos problem problem_type y codifican un problema de optimización de la forma
donde
- Al seleccionar
problem_type = "binary", se especifica que la función de coste está enbinaryformato, lo que significa que , es decir, que la función de coste está escrita en formulación QUBO/HUBO. - Por otro lado, al elegir
problem_type = "spin", la función de coste se expresa en la formulación de Ising, donde .
Los coeficientes del problema deben codificarse en un diccionario de la siguiente manera:
- Ten en cuenta que las claves del diccionario deben ser cadenas que contengan una tupla válida de números enteros no repetidos.
Lista de opciones
Iskay ofrece funciones de ajuste fino mediante parámetros opcionales. Aunque los valores predeterminados funcionan bien para la mayoría de los casos, puedes personalizar el comportamiento según tus necesidades específicas:
shots
Tipo: `int`
Valor predeterminado: 10000
Medidas cuánticas por iteración (cuanto mayor sea el valor, mayor será la precisión)
num_iterations
Tipo: `int`
Valor predeterminado: 10
Iteraciones del algoritmo (un mayor número de iteraciones puede mejorar la calidad de la solución)
use_session
Tipo: `bool`
Valor predeterminado: True
Utiliza las sesiones de « IBM » para reducir los tiempos de espera
seed_transpiler
Tipo: `int`
Valor predeterminado: None
Conjunto para la compilación de circuitos cuánticos reproducibles.
Optimización de semillas : Ten en cuenta que seed_transpiler está configurado en None de forma predeterminada. Esto permite que se active el proceso de optimización automática del transpilador. En ese caso None, el sistema iniciará una prueba con varias semillas y seleccionará la que produzca la mejor profundidad de circuito, aprovechando al máximo el potencial del max_trials parámetro en cada nivel de transpilación.
direct_qubit_mapping
Tipo: `bool`
Valor predeterminado: False
Asignar qubits virtuales directamente a num_qubits físicos
job_tags
Tipo: `List[str]`
Valor predeterminado: None
Etiquetas personalizadas para el seguimiento de tareas
preprocessing_level
Tipo: `int`
Valor predeterminado: 0
Intensidad del preprocesamiento del problema (0-3).
Niveles de preprocesamiento (0-3) : Especialmente importantes para problemas de gran envergadura que, en la actualidad, no caben en los tiempos de coherencia del hardware. Los niveles de preprocesamiento más altos permiten obtener circuitos de menor profundidad mediante aproximaciones en la transpilación del problema:
- Nivel 0 : Circuitos exactos y más largos
- Nivel 1 : Buen equilibrio entre precisión y aproximación, descartando únicamente las puertas cuyos ángulos se sitúan en el décimo percentil más bajo
- Nivel 2 : Aproximación ligeramente más precisa, descartando las puertas con ángulos que se sitúan en el percentil 20 más bajo y utilizando
approximation_degree=0.95en la transpilación - Nivel 3 : Nivel máximo de aproximación, eliminando las puertas del percentil 30 más bajo y utilizando
approximation_degree=0.90en la transpilación
postprocessing_level
Tipo: `int`
Valor predeterminado: 2
Nivel de refinamiento de la solución (0-2).
Niveles de posprocesamiento (0-2) : controla el grado de optimización clásica, compensando los errores de inversión de bits mediante un número variable de pasadas «greedy» de búsqueda local:
- Nivel 0 : 1 pase
- Nivel 1 : 2 aprobados
- Nivel 2 : 3 pases
transpilation_level
Tipo: `int`
Valor predeterminado: 0
Pruebas de optimización del transpilador (0-5).
Niveles de transpilación (0-5) : controlan los ajustes avanzados de optimización del transpilador para la compilación de circuitos cuánticos. Esto puede provocar un aumento de la sobrecarga clásica y, en algunos casos, es posible que no altere la profundidad del circuito. El valor 2 predeterminado suele dar lugar al circuito más pequeño y es relativamente rápido.
- Nivel 0 : Optimización del circuito DCQO descompuesto (diseño, trazado, programación)
- Nivel 1 : Optimización de
PauliEvolutionGatey, a continuación, del circuito DCQO descompuesto ( max_trials=10 ) - Nivel 2 : Optimización de
PauliEvolutionGatey, a continuación, del circuito DCQO descompuesto ( max_trials=15 ) - Nivel 3 : Optimización de
PauliEvolutionGatey, a continuación, del circuito DCQO descompuesto ( max_trials=20 ) - Nivel 4 : Optimización de
PauliEvolutionGatey, a continuación, del circuito DCQO descompuesto ( max_trials=25 ) - Nivel 5 : Optimización de
PauliEvolutionGatey, a continuación, del circuito DCQO descompuesto ( max_trials=50 )
transpile_only
Tipo: `bool`
Valor predeterminado: False
Disponible para los usuarios que deseen analizar la optimización de circuitos sin ejecutar el algoritmo cuántico completo. Resulta útil para el análisis de circuitos, los estudios de optimización de profundidad y para comprender los efectos de la transpilación antes de pasar a la ejecución completa.
Aumentar el número de max_trials con valores más altos para transpilation_level incrementará inevitablemente el tiempo de transpilación, pero es posible que no siempre modifique el circuito final; esto depende en gran medida de la estructura y la complejidad específicas del circuito. Sin embargo, en algunos circuitos o problemas, la diferencia entre 10 intentos (nivel 1) y 50 intentos (nivel 5) puede ser considerable, por lo que explorar estos parámetros podría ser la clave para encontrar una solución con éxito.
Resultado
Tipo: `Dict[str, Any]`
Solución y metadatos. La estructura varía en función de transpile_only la opción.
Diccionario de resultados
La estructura del diccionario de resultados depende del modo de ejecución:
solution
Tipo: `Dict[str, int]`
La solución ordenada en forma de tabla, en la que las claves son índices de variables (en forma de cadenas) ordenados numéricamente y los valores son los valores correspondientes de las variables (1/-1 para problemas de espín, 1/0 para problemas binarios).
- Modo: Estándar
- Ejemplo:
{'0': -1, '1': -1, '2': -1, '3': 1, '4': 1}
solution_info
Tipo: `Dict[str, Any]`
Información detallada sobre la solución.
- Modo: Estándar
- Ejemplo:
{'bitstring': '11100', 'cost': -13.8, 'seed_transpiler': 42, 'mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}} - Ejecución estándar : cuando el parámetro opcional
transpile_only=False; véase el diccionario que figura a continuación.
bitstring
Tipo: `str`
La representación en forma de cadena de bits sin procesar de la solución.
cost
Tipo: `float`
La relación coste-eficiencia de la solución.
seed_transpiler
Tipo: `int`
La semilla aleatoria utilizada por el transpilador que generó este resultado.
mapping
Tipo: `Dict[int, int]`
La correspondencia original entre qubits y variables utilizada en el cálculo.
qpu_time
Tipo: `float`, optional
El tiempo de ejecución de la QPU en segundos.
- El
solutiondiccionario se obtiene a partir de la cadena de bits de la solución, utilizando elmappingobjeto para indexar las variables. - Cuando
problem_type=spinutilizamos la asignación « ». - Las claves del diccionario de soluciones son índices de variables ordenados numéricamente como cadenas de caracteres.
prob_type
Tipo: `str`
El tipo de problema de optimización (spin o binary)
- Modo: Estándar
- Ejemplo:
'spin'
transpilation_info
Tipo: `Dict[str, Any]`
Análisis del circuito y detalles de la transpilación.
- Modo: Solo compilación
- Ejemplo:
{'best_seed': 42, 'transpilation_time_seconds': 50.06, 'transpiled_circuit': {'depth': 576, 'gate_count': 4177, 'num_qubits': 156, 'width': 176, 'operations': {'sx': 1325, 'rx': 891, 'cz': 783, 'rz': 650, 'rzz': 466, 'x': 42, 'measure': 20}}} - Análisis de transpilación : cuando se utiliza el parámetro opcional
transpile_only=True, consulte el diccionario que figura a continuación:
best_seed
Tipo: `int`
La semilla óptima encontrada para la trasplantación.
transpilation_time_seconds
Tipo: `float`
Tiempo empleado en el proceso de transpilación.
transpiled_circuit
Tipo: `Dict`
Análisis de circuitos que incluye lo siguiente:
depth
Tipo: `int`
Profundidad del circuito (número de capas)
gate_count
Tipo: `int`
Número total de puertas del circuito.
num_qubits
Tipo: `int`
Número de qubits utilizados.
width
Tipo: `int`
Ancho del circuito.
operations
Tipo: `Dict[str, int]`
Recuento de cada tipo de puerta utilizada.