Initial Guess/Warm start in CVXPY: give a hint of the solution

Viewed 4428

In this bit of code:

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)

I'm looking for a way to choose the warm start value myself (for example: x = 1/2 and y = 1/2), not the previous solver result.

Is there any way to give the solver this input? And if not, is there a non-commercial alternative to cvxpy?

2 Answers

You can manually assign the values using x.value = 1/2, and then passing the warm_start=True parameter in the available solvers. Keep in mind not all solvers allow this, one that does is for example SCS.

More info available on: https://www.cvxpy.org/tutorial/advanced/index.html

To the 2021 readers: today is impossible (in cvxpy) to give a hand to the solver with an initial guess. Warm start right now only works when you solve the same problem with different parameter values, initializing with the previous solution (see https://github.com/cvxpy/cvxpy/issues/1355).

Related