Funciones de coste
qiskit_addon_mpf.costs
Funciones de coste para los coeficientes MPF.
Este módulo proporciona una serie de funciones generadoras de problemas de optimización, cada una de las cuales implementa una función de coste diferente como objetivo del problema. Todas las funciones proporcionadas por este módulo toman como primer argumento un sistema lineal de ecuaciones (LSE) que codifica los parámetros del problema de optimización como primer argumento.
LSE
class LSE(A, b)
Bases: NamedTuple
Un namedtuple que representa un sistema lineal de ecuaciones.
Crear nueva instancia de LSE(A, b)
Parámetros
A
Tipo: ndarray
La parte izquierda de la LSE.
b
Tipo: ndarray
La parte derecha de la LSE.
count
count(value, /)
Devuelve el número de apariciones del valor.
index
index(value, start=0, stop=9223372036854775807, /)
Devuelve el primer índice del valor.
Lanza ValueError si el valor no está presente.
solve
solve()
Devuelve la solución a esta LSE: .
Devuelve
La solución a este LSE.
Eleva
- ValueError - si este LSE está parametrizado con valores no asignados.
- ValueError - si este LSE no incluye una fila que garantice que que es un requisito para los coeficientes MPF válidos.
Tipo de retorno
x
Tipo: Variable
Devuelve el $x$ Variable.
Constructores de problemas de optimización
setup_exact_problem
setup_exact_problem(lse)
Construya un cvxpy.Problem para encontrar los coeficientes MPF exactos.
Los coeficientes hallados mediante este problema de optimización serán idénticos a los analíticos obtenidos con el LSE.solve() método. Esta interfaz adicional existe para resaltar el paralelismo con las demás funciones de coste que ofrece este módulo. También tiene fines didácticos sobre cómo enfocar los problemas de optimización centrados en los coeficientes MPF.
El problema de optimización construido por esta función se define como sigue:
-
la función de coste minimiza la L1-norm (
norm1) de las variables (LSE.x) -
las restricciones corresponden a cada ecuación del
LSE:
A continuación se muestra un ejemplo:
>>> from qiskit_addon_mpf.costs import setup_exact_problem
>>> from qiskit_addon_mpf.static import setup_static_lse
>>> lse = setup_static_lse([1,2,3], order=2, symmetric=True)
>>> problem, coeffs = setup_exact_problem(lse)
>>> print(problem)
minimize norm1(x)
subject to Sum([1. 1. 1.] @ x, None, False) == 1.0
Sum([1. 0.25 0.11111111] @ x, None, False) == 0.0
Sum([1. 0.0625 0.01234568] @ x, None, False) == 0.0A continuación, puedes resolver el problema y acceder a los coeficientes de expansión de la siguiente manera:
>>> final_cost = problem.solve()
>>> print(coeffs.value)
[ 0.04166667 -1.06666667 2.025 ]Parámetros
lse (LSE) – el sistema lineal de ecuaciones a partir del cual construir el modelo.
Devuelve
El problema de optimización y la variable coeficientes.
Tipo de retorno
Referencias
[1] : A. Carrera Vazquez et al., Quantum 7, 1067 (2023).
setup_sum_of_squares_problem
setup_sum_of_squares_problem(lse, *, max_l1_norm=10.0)
Construir un cvxpy.Problem para encontrar coeficientes MPF aproximados.
El problema de optimización construido por esta función se define como sigue:
- la función de coste minimiza la suma de cuadrados (
sum_squares()) de las distancias a una solución exacta para todas las ecuaciones delLSE:
-
se establecen dos restricciones:
- las variables deben sumar 1:
- el L1-norm (
norm1) de las variables está limitada pormax_l1_norm
A continuación se muestra un ejemplo:
>>> from qiskit_addon_mpf.costs import setup_sum_of_squares_problem
>>> from qiskit_addon_mpf.static import setup_static_lse
>>> lse = setup_static_lse([1,2,3], order=2, symmetric=True)
>>> problem, coeffs = setup_sum_of_squares_problem(lse, max_l1_norm=3.0)
>>> print(problem)
minimize quad_over_lin(Vstack([1. 1. 1.] @ x + -1.0,
[1. 0.25 0.11111111] @ x + -0.0,
[1. 0.0625 0.01234568] @ x + -0.0), 1.0)
subject to Sum(x, None, False) == 1.0
norm1(x) <= 3.0A continuación, puedes resolver el problema y acceder a los coeficientes de expansión de la siguiente manera:
>>> final_cost = problem.solve()
>>> print(coeffs.value)
[ 0.03513467 -1. 1.96486533]Parámetros
- lse (LSE) – el sistema lineal de ecuaciones a partir del cual construir el modelo.
- max_l1_norm (float) – el límite superior a utilizar para la restricción de la L1-norm de las variables.
Devuelve
El problema de optimización y la variable coeficientes.
Tipo de retorno
Referencias
[1] : S. Zhuk et al., Física. Rev. Research 6, 033309 (2024).
https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.6.033309
setup_frobenius_problem
setup_frobenius_problem(lse, *, max_l1_norm=10.0)
Construir un cvxpy.Problem para encontrar coeficientes MPF aproximados.
El problema de optimización construido por esta función se define como sigue:
- la función de coste minimiza la siguiente expresión cuadrática:
Como se muestra en [1] y [2], esta expresión surge de la norma de Frobenius del error entre un estado de evolución temporal exacto y un MPF dinámico. Como tal, tomando la LSE construida por setup_dynamic_lse() e introduciéndola en esta función se obtiene la Ec. (20) de [1] (que es idéntica a la Ec. (2) de [2] ), que repetimos a continuación
donde $A$ y $b$ de nuestros LSE corresponden a la matriz de Gram ($M$ en [1] y [2] ) y al vector de superposición ($L$ en [1] y [2] ), respectivamente. Además, utilizamos $x(t)$ para denotar las variables MPF (o coeficientes) en lugar de $c$ en [1] y [2].
-
se establecen dos restricciones:
- las variables deben sumar 1:
- el L1-norm (
norm1) de las variables está limitada pormax_l1_norm
A continuación se muestra un ejemplo que utiliza el objeto lse construido en el ejemplo de setup_dynamic_lse().
>>> from qiskit_addon_mpf.costs import setup_frobenius_problem
>>> problem, coeffs = setup_frobenius_problem(lse, max_l1_norm=3.0)
>>> print(problem)
minimize 1.0 + QuadForm(x, [[1.00 1.00]
[1.00 1.00]]) + -[2.00003171 1.99997911] @ x
subject to Sum(x, None, False) == 1.0
norm1(x) <= 3.0A continuación, puedes resolver el problema y acceder a los coeficientes de expansión de la siguiente manera:
>>> final_cost = problem.solve()
>>> print(coeffs.value)
[0.50596416 0.49403584]Parámetros
- lse (LSE) – el sistema lineal de ecuaciones a partir del cual construir el modelo.
- max_l1_norm (float) – el límite superior a utilizar para la restricción de la L1-norm de las variables.
Devuelve
El problema de optimización y la variable coeficientes.
Tipo de retorno
Referencias
[1] : S. Zhuk et al., Física. Rev. Research 6, 033309 (2024).
https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.6.033309
[2] : N. Robertson et al., arXiv:2407.17405v2 (2024).