Closed DouBiBaNi closed 3 months ago
For unbounded problems SCIP will currently either provide a feasible solution or a hardly feasible solution at the infinity bound. This looks like a feasible solution, but as such it does not contain any information on the unbounded ray.
If SCIPhasPrimalRay(scip)
, you can access the ray values with SCIPgetPrimalRayVal(scip, var)
but this is only the case if the unboundedness was not already detected in presolving. So it has to be switched off if you want to rely on it.
If you know in advance that you have an unbounded MILP and are only interested in a ray, you could also model the problem so that SCIP computes a ray directly. This works by removing integrality constraints, setting all existing variable bounds as well as constraint sides to zero, and add artificial non-zero variable bounds for the non-existing variable bounds. This way an optimal solution with negative objective value represents an unbounded direction of the LP relaxation.
Since this is already a LP, you may also want to use SoPlex directly where you can access rays more reliable.
Hi,I doubt that SCIP solving the unbounded problem has some bugs.
When I'm solving the problem
I get the solution: u1 = u2 = ... = u11 = 100000, so i calculate the rays is (1, 1, 1, ..., 1). But the right rays is (1, 0, 0, ..., 0). How can i get the right answer without using
SCIPenableReoptimization
?