lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

Mysterious MIPGap solved? #44

Closed jac0320 closed 7 years ago

jac0320 commented 7 years ago

@ccoffrin @kaarthiksundar

I will assume that we know the constant offset will be ignored in Gurobi/CPLEX.

The inconsistency is between getobjbound() and getobjectivevalue(), where the fomer returns the bound from solver (printed in solver log) while the latter returns the m.objVal where the offset is considered. I believed that the consideration for not having m.objGap in JuMP.Model is due to the different methods used to evaluate MIP gap.

Hence, in the algorithm design, a secure way is to use m.objVal and m.objBound to evaluate the gap using a locally defined Gap, which will be referred to as true GAP (TGap). We will refer the terminated solver log gap as the solver GAP (SGap). Considering the standard CPLEX rel-Gap calculation: |UB-LB|/(tol+|UB|), note that the offset only affects the denominator in this case. Hence, the potential of error of SGap should be,

jac0320 commented 7 years ago

Currently, on convhull branch, m.model_mip.objBound of bounding model is used as the lower bound for the original MINLP.

jac0320 commented 7 years ago

This is resolved in the most recent branch #42