Oscar Dowson
Oscar Dowson
Proposed feasibility relaxation tool is here: https://github.com/jump-dev/MathOptInterface.jl/pull/1995 we'd just need some plumbing on the JuMP side to tidy it up.
Closing because I think we need to pass the symbolic form to the solver to make this work. x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/1998 x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/846
I know the answer to this, because it has bitten me before. This is the problem: https://github.com/coin-or/python-mip/blob/08b3ad46259406b45fa1845dfa89ea1557a4fdd0/mip/cbc.py#L1251-L1252 For LPs `isProvenInfeasible` can mean dual infeasible. Here's what we do in Cbc.jl:...
> Even in the case of an MILP, if the LP relaxation is dual infeasible, this means the problem is unbounded Does it? ``` min y 0.1
Actually I wonder if the problem is just that I should have checked `ContinuousUnbounded` first? ``` elseif Cbc_isContinuousUnbounded(model) != 0 return MOI.INFEASIBLE_OR_UNBOUNDED ``` I think it's okay to return true...
Maybe not: ```Julia julia> model = Cbc_newModel() Ptr{Nothing} @0x00007f962d106c00 julia> Cbc_addCol(model, "x", -Inf, Inf, 1.0, 0, 0, C_NULL, C_NULL) julia> Cbc_solve(model) Dual infeasible - objective value 0 DualInfeasible objective 0...
This now works. But it just needs documenting.
There is no timetable. @ericphanson has left academia, so Convex.jl is essentially in maintenance mode. Although we can still review and merge PRs if you're interested in contributing.
DiffOpt is here: https://github.com/jump-dev/DiffOpt.jl But it'd need some integration work with Convex before I'd close this issue (even if just an example or a blog post to demonstrate how to...
Cool to see this works. Obligatory link to https://github.com/odow/NEOS.jl.