【发布时间】:2021-09-30 06:03:05
【问题描述】:
首先,Mosek 的初始化 API 效果很好。我们能够将优化速度提高 25 倍,仅通过对样本问题进行决策变量初始化(所有变量都受积分约束)。
现在,我们正在解决一个新的大规模 MIQCQP 问题(一些变量积分受限且一些连续),我们想要初始化所有这些变量。
在使用task.putxxslice API [1] 时,我们在确定whichsol 参数的值时遇到了问题。
疑问:
-
由于我们的问题既有积分又有连续,用
whichsol = mosek.soltype.itg代替所有变量(积分和连续)是否正确? -
我们的最终目标是添加此通用支持自定义 Cvxpy。我们几乎已经实现了这一点 - 是否有任何编程方式来决定 Cvxpy 中的
whichsol?或者更好地问 - 这是正确的方法吗?
if num_bool + num_int > 0: # if problem is Mixed-integer (some integral, some contiguous)
whichsol = mosek.soltype.itg
elif inverse_data['is_LP']: # if problem is LP
whichsol = mosek.soltype.bas
else: # all other cases
whichsol = mosek.soltype.itr
for idx, initial_guess in zip(idx_list, initial_guess_list):
task.putxxslice(whichsol, idx, idx+1, [initial_guess])
[1] - https://docs.mosek.com/latest/pythonapi/optimizer-task.html#mosek.task.putxxslice
【问题讨论】: