Originally posted by: SystemAdmin
>
>
> Node log . . .
> Best integer = 5.232939e+05 Node = 0 Best node = 5.189600e+04
>
> {code}
>
> I do:
>
> double BestUB= cplex.getObjValue();
>
> after if i do cout << BestUB I obtain the value: 523294 and not 5.232939e+05 ¿ok?
That's probably due to the default formatting of the output stream. You can put a formatter in the cout line to get more accuracy if you wish.
>
> After, I do:
>
> cta->cplex.setParam(IloCplex::CutUp,BestUB - Eps); where Eps = 0.00001.
>
> I solve the problem I obtain: 523294
If you're expecting a strictly smaller value, the first thing you need to do is print getObjValue to more decimal places. Even then I'm not sure your epsilon is big enough to do the job -- it's changing the 11th significant (decimal) digit, which puts it out where I think rounding error could plausibly overwhelm it.
Paul
Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
#CPLEXOptimizers#DecisionOptimization