Closed svigerske closed 1 year ago
I can see what's causing this. Simple fix
Not such a simple fix!
Note to self: still need the following in fix-1446
Highs::presolve()
Highs::postsolve()
Highs::returnFromRun()
so that undoing of mods is done or not done.Closed by #1450
Thank you! Looks good.
It's only recently that HiGHS has been able to handle infinite costs. There's no guarantee that a solution is found, as all HiGHS does is fix the variable at the bound corresponding to the sign of the infinite cost and sense of optimization. If the modified problem is infeasible, then a warning is returned and the model status is kUnknown
.
I note that Gurobi finds your model to be infeasible or unbounded, observing
Model contains large objective coefficients Consider reformulating model or setting NumericFocus parameter to avoid numerical issues.
That's fine. It's good that HiGHS prints a warning there.
The MIP was generated by DICOPT when doing an outer-approximation for a MINLP. It adds linearizations of nonlinear constraints to the MIP as "soft-constraints", i.e., violation is allowed by a penalty term. The penalty coefficient is derived from the dual solution of the NLP. In this case, Ipopt was solving the NLP and seemed to have had some problem (solve to acceptable level only), which may have resulted in an awkward dual solution. It's pretty bad that DICOPT does not check the dual solution of the NLP, but just blindly uses it to augment the MIP objective function. So, I don't care so much whether that MIP is solved correct in any interpretation, but a segfault was something that made our tests fail and I cannot easily argue that it should be ignored :).
With HiGHS 1.6.0, I get
with infcost.mps.txt
I know the objective coefficients are bad (DICOPT does not take care of the penalty terms it generates). But with asserts disabled, I get a segfault on windows and on Linux valgrind complains because iCol is out of range in
Highs::restoreInfCost()
. So it would be nice if that could be handled better somehow.