[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