As we know, we say a problem satisfies the strong duality, when its optimal duality gap equals 0. Then, when we don’t know whether a problem satisfies the strong duality, if we set the GAMS option optCR to 0, the solving process may never stop and we can never obtain an optimal solution. So, how can I set the option optCR to get an optimal solution for any problem?

You are confusing the duality gap with the optimality gap. These are not at all the same, although with some mental gymnastics I am sure you could make connections between the two.

The duality gap has to do with the difference between the objectives in the primal and dual forms of a model. For example, we have strong duality with LP: primal objective = dual objective.

The optcr setting is a tolerance for the relative optimality gap in a MIP or other discrete model. When solving such models, there is the “best found”, i.e. the objective of the best feasible point found thus far, and the “best bound”, i.e. the tightest bound on the true solution’s objective yet computed. These two values approach each other as the solver searches and tightens. The optcr tolerance lets you quit when they get close enough.

I could write more, but it wouldn’t improve on what is easily available in our docs at:

https://www.gams.com/latest/docs/UG_GamsCall.html#GAMSAOOptCR

HTH,

-Steve

According to your answer, that is to say, for any MINLP, BARON can give its globle optimal solution with the GAMS option “option optCR=0;” as long as it has one, if computing resources are enough. Is it?

Thanks.