I try to solve the minimization of a stochastic MIP problem. I added some lower bounds for various variables (these shortened my solution times). However, when I add lower and upper bounds to my objective variable (z), CPLEX cannot find an initial solution and cannot solve the problem. I am confident that my lower and upper bounds are correct. I need to decrease solution times even more. Let me explain more;
The objective function is the minimization of total fuel consumption, and I know that its value cannot be worse than the deterministic solution and no better than the perfect information solution. These solutions are obtained quickly, and I think adding these solutions to the stochastic model as upper and lower bounds, respectively, will make my job easier.
To summarize; why adding lower and upper bounds works for other variables but not for objective function variable?
By adding bounds on the objective variable y (with y =e= f(x)) you turn your objective function f(x) into a true constraint and your objective consists of just min or max y instead of min or max f(x). This is mathematically the same, but in practice makes a big difference. The presolver (especially the dual reductions) can do a lot with a good objective function, not so much with min/max y. If you want to set bounds to “help” the B&B never ever set the the lower bound for min or upper for max. You may set the upper bound (for min) or lower (for max) but use a solver option (like https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXcutup) for this. I think I wrote in another post the reason for this. Here is the short version: The trouble with setting a lower bound (min) is that usually the B&B (or B&C) gets good information from the changes in the LP relaxation to make good decisions about variable and node selection (and more). By setting a lower bound you make all these decision look the same (objective will be at lower bound) and hence the solver makes bad decisions.