CVXPY 中的初始猜测/热启动:给出解决方案的提示

Ril*_*ley 6 python optimization solver cvxpy

在这段代码中:

import cvxpy as cvx

# Examples: linear programming
# Create two scalar optimization variables.
x = cvx.Variable()
y = cvx.Variable()

# Create 4 constraints.
constraints = [x >= 0,
               y >= 0,
               x + y >= 1,
              2*x + y >= 1]

# Form objective.
obj = cvx.Minimize(x+y)

# Form and solve problem.
prob = cvx.Problem(obj, constraints)
prob.solve(warm_start= True)  # Returns the optimal value.
print ("status:", prob.status)
print ("optimal value", prob.value)
print ("optimal var", x.value, y.value)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方式来选择温暖的起始值自己(例如:X = 1/2和y = 1/2),而不是以前的求解结果。

有没有办法给求解器这个输入?如果没有,是否有 cvxpy 的非商业替代品?

小智 6

对于 2021 年的读者:今天(在 cvxpy 中)不可能通过初步猜测来帮助求解器。现在,只有当您使用不同的参数值解决相同的问题并使用之前的解决方案进行初始化时,热启动才有效(请参阅https://github.com/cvxpy/cvxpy/issues/1355)。


小智 4

您可以使用 手动分配值x.value = 1/2,然后warm_start=True在可用求解器中传递参数。请记住,并非所有求解器都允许这样做,例如 SCS 就允许这样做。

更多信息请访问:https://www.cvxpy.org/tutorial/advanced/index.html