-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Strange reporting with respect to feasibility #546
Comments
Note that Gurobi returned If Gurobi is telling is that a suboptimal solution exists, then we set the primal status to Is the actual solution returned (not just the last iteration of the log) not feasible? Do you have a reproducible example? The codes are https://www.gurobi.com/documentation/10.0/refman/optimization_status_codes.html#sec:StatusCodes |
At the moment we assume that if Gurobi has a solution to return, then it is feasible: Gurobi.jl/src/MOI_wrapper/MOI_wrapper.jl Lines 2817 to 2835 in ea2eab0
|
Well, I cannot share the problem at the moment unfortunately... Suffice it to say that the saddle point systems solved throughout the iterations are very badly conditioned, hence the numerical problems. But yes, the returned solution is not feasible, with large constraint residuals (> 1e6). In principle, the solution attributes could be used to answer the questions regarding feasibility / stationarity, notably the "ConstrResidual" and "DualResidual" (in scaled / unscaled form). Maybe I can try to reproduce a smaller example, but I am rather busy this month, so it may take a while... |
I wonder if we should just return Or we could check the cc @simonbowly |
You could check the violations and residual attributes against the feasibility tolerances, but this one looks more like a numerics issue where barrier just goes a bit haywire. @odow I'm not sure how often a solution from a suboptimal barrier termination is really usable, maybe @chrhansk if you are able to share the model at some stage, you can submit it via a support request to Gurobi at https://support.gurobi.com/hc/en-us. |
I was solving a problem using JuMP with the Gurobi backend and noticed that the reporting of the termination status is odd. As an example, I get the following output after starting the solution process:
As you can see, the barrier method produces a solution that is completely unusable with a primal residuum of
1e8
, so the solution is not feasible. However,@info solution_summary(model)
produces the outputThe primal status message indicates that the solution is feasible, which it is not. Sub-optimal solutions may be primally / dually feasible depending on the specific method (for instance with the primal / dual simplex), but the central path followed by the interior point method generally only yields feasible points in the limit (at least as far as I know).
I don't know how the reporting works of feasibility works inside JuMP and which solvers are affected, but it is a bit problematic if a user expects a feasible solution when none exists.
The text was updated successfully, but these errors were encountered: