[FlopCpp] variable bounds not passed?

Michal Kaut mail at michalkaut.net
Wed Mar 4 03:01:42 EST 2009


I believe (Tim, please correct me if I am wrong) that the correct way 
would be to set the bounds using "getInfinity()" method.
This method gives the infinity of the attached solver, or 9.9e+32 if 
there is no solver attached.

Note: It is important to ensure that all the bounds are called after the 
solver has been attached, as every solver uses a different value for 
infinity. This implies that if FlopC++ uses a smaller infinity than the 
solver, the solver will interpret is a big upper/lower bound, not a free 
variable!
(In other words, if you see in the MPS file that some variables have big 
bounds that you did not want, you/FlopC++ have used a wrong infinity. 
Happened to me, I "solved" it by setting
solverInf=getInfinity();
and then
var.upperLimit(set) = solverInf;
for all affected variables - not elegant, but did the job...)


Regards,
Michal Kaut


Michael Chen wrote:
> I am not sure about this. But I have quite a few free variables in my 
> model, and the output mps, or lp files treat them as non-negative 
> variable, which leads to infeasibility.
> 
> I then manually added lower bounds to these variables, x.lowLimit(K) = 
> numeric_limits<double>::min(). however the same situation happened.
> 
> However x.lowLimit(K) = -10000 will be honored.
> 
> Maybe there is an easier way to specify free variable in  FlopC++? or 
> remove the default non-negative assumption?
> 
> -- 
> Best regards,
> Michael Chen
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> FlopCpp mailing list
> FlopCpp at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/flopcpp



More information about the FlopCpp mailing list