The computational optimization group of the University of Vienna
is currently working on a comparison of global solvers for nonlinear
programming (without integer variables), a kind of second edition of
the comparison we did 10 years ago in Math. Programming B 103 (2005), 335-356.
While we are doing some experiments we found a conflict between Antigone termination
status and the Model status reported by GAMS in the file attached. Could you please take a
look on it? Note that Antigone Termination status claims that the solution is global while
the Model status claims that it is local.
PS: I also noticed the same type of problem when running BARON. In some problems(as in the attached one) Baron returns
a normal completion status which, according to their documentation should be interpreted as the global solution, while GAMS
claims that the solution is only local. I’m not sure about other solvers. alkyl.txt (17.9 KB) alkyl.gms (1.91 KB)
This is probably because of the optimality criterion you are using. By default GAMS works with a relative termination tolerace of 10%. That means the solver stops, if the gap betwenn the solution found and the bound for the best solution is within 10%. It seems as if Antigone calls such a solution within the given tolerance a “global optimal” solution, while GAMS just calls a solution “global optimal” when the gap mentioned before is 0. You can force the solver not to stop before that gap is completely closed by setting the option optCR to 0 (see also http://www.gams.com/latest/docs/userguides/userguide/_u_g__gams_call.html#GAMSOptCR).
Thank you for your message. I changed optcr to 0 and the response is the same
(Termination status from antigone is Global minimum while Gams Model status is locally optimal).
Could you please tell me how Gams assigns the model status of a problem? Is it taken directly
from the termination status of the solver or is there any verification in the post-processing?
PS: I noticed that Baron and lindoglobal present the same problem in the alkyl problem.
I’m not a global optimization expert, so the real question for me is what kind of certificate do the solvers you mention provide to say it’s a global optimum. If it is certainly valid for the given model, then perhaps GAMS could accomodate an option in modelstat for this. As it is, it shouldn’t cause any large trouble anyway.
Actually, with a global solver you also can get a golbal optimal solution. And if I use Antigone with optcr=0 with the recent GAMS system (24.8.3. Windows 32bit) on my machine I also get that:
S O L V E S U M M A R Y
MODEL m OBJECTIVE obj
TYPE NLP DIRECTION MINIMIZE
SOLVER ANTIGONE FROM LINE 76
**** SOLVER STATUS 1 Normal Completion
**** MODEL STATUS 1 Optimal
**** OBJECTIVE VALUE -1.7650
With Baron I get the same. And I also get this with Lindo (but there I have to use a solver option file to force the 0 gap).
Did you use the same GAMS version as I did? Also, I noted that you have “m.optfile = 1;” in the model, but did not attach an option file. Which option(s) did you set there?
BTW: Thanks for mentioning this! This is probably a note from older days, before there was much around for global optimization, but nowadays this it outdated. We will update the documentation.
Thank you all for your kind help. I found the problem and it is not related to the relative optimality criterion
but with the absolute one. During the tests I’m running optca = 1e-6 instead of 0 (which is the default in
GAMS). I realized this difference after the last Lutz’s comment. Setting up optca = optcr = 0 in my GAMS
24.8.2 version makes everything works fine.