I added the following example into LPSolve and found a strange issue. I don't want S1 and S2 to overlap within certain margins. For this I've added some binary variables to reduce a large term to be zero or something large, but nothing in between.
However, the solver now sets both S to 0, even though it also sets B2 to zero. In my mind this contradicts line C, as it would result in 0 >= 1.
Any ideas why I'm getting this wrong solution?
min: S1+S2;
A: S1 - S2 + 11442401 B1 >= 4;
B: S1 - S2 + 11442401 B1 < 11442405;
C: S2 - S1 + 11442401 B2 >= 1;
D: S2 - S1 + 11442401 B2 < 11442402;
E: B2 + B1 = 1;
bin B1;
bin B2;
If I use a 2 instead on a one in line C as a bound, I get the correct result.
This may be due to a too large feasibility tolerance compared to your big-M values. Try decreasing one of these paramaters:
(Reference: http://lpsolve.sourceforge.net/5.5/lp_solve.htm)
P.S.: the strict "<" seems strange to me, did you mean "<="?