Dear Emma, What I meant is that for binary a and 0 <= x <= 0.0005
x – 1.0e16 a <= 0 is equivalent to x – 0.0005 a <= 0 or a more relaxed x – 1.0 a <= 0 since for a=0 then x can only be 0, while for a=1 any value of x in the range specified is acceptable. (I've replaced all < with <= since strict inequalities are not supported in linear programming). It is safe to do this change, in the previous mail I was explaining why GLPK is not doing it, but the reasons do not apply here. > How is the solver returns x=0.0005 when a=0 ? All practical linear programming solvers accept small bound violations with a tolerance, to allow the use of finite precision floating point arithmetic. There are some solvers that use exact arithmetic (GLPK has one but not for integer programmes) but are quite slow. This is the reason why large "big M" constants can cause problems, when divided by them values easily become smaller than the accepted tolerance. Best Regards, Chris Matrakidis _______________________________________________ Bug-glpk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-glpk
