Если я правильно понимаю, cvxpy преобразует наше высокоуровневое описание проблемы в стандартную каноническую форму перед отправкой решателю.
Под стандартной формой я подразумеваю форму, которая может использоваться для алгоритмов спуска, поэтому, например, она будет преобразовывать все абсолютные значения в цели, чтобы быть разностью двух положительных чисел с некоторыми новыми ограничениями , et c.
Хотите знать, можно ли посмотреть, как выглядело сокращение проблемы, указанной в cvxpy? Например, допустим, у меня есть следующая проблема:
import numpy as np
import cvxpy as cp
x = cp.Variable(2)
L = np.asarray([[1,2],[2,3]])
P = L.T @ L
constraints = []
constraints.append(x >= [-10, -10])
constraints.append(x <= [10, 10])
obj = cp.Minimize(cp.quad_form(x, P) - [1, 2] * x)
prob = cp.Problem(obj, constraints)
prob.solve(), prob.solver_stats.solver_name
(-0.24999999999999453, 'OSQP')
Итак, я хотел бы видеть фактические аргументы (P, q, A, l, u), отправляемые в решатель OSQP https://github.com/oxfordcontrol/osqp-python/blob/master/module/interface.py#L278
Любая помощь с благодарностью!