参数化 CVXPY 程序的问题

计算科学 凸优化 简历 简历
2021-12-24 13:27:51

我正在尝试参数化 CVXPY 程序,因为我需要反复解决问题,但我注意到当我的参数是复数时,CVXPY 会在每次迭代中对问题进行建模。例如,假设我想解决以下问题:

minimizexAxb+|γx|,
其中AC3×4xC4×1bC3×1γC1×4

我不需要重复解决这个问题,但我强制这样做是为了检查我是否可以考虑将作为参数?γ

下面是代码:

import cvxpy as cp
import numpy as np


m = 4
n = 3
A = np.random.randn(n,m)+1j*np.random.randn(n,m)
b = np.random.randn(n)+1j*np.random.randn(n)

x = cp.Variable((m,),complex=True)
gamma = cp.Parameter((1,m),complex=True)
obj = cp.norm(A@x-b)+cp.abs(gamma@x)
prob = cp.Problem(cp.Minimize(obj))

for iIter in range(5):    
    gamma.value = np.random.randn(1,m)+1j*np.random.randn(1,m)
    prob.solve(verbose=True)

我从详细中看到的是,CVXPY 首先在每次迭代中对我的问题进行建模,然后解决它。另一方面,如果我假设,它会绕过下一次迭代的建模。为什么会这样?我们不允许创建复值参数吗?γR1×4

0个回答
没有发现任何回复~