hi

Im implementing benders decomposition manually using gams and solving the MIP master problem and LP lower problem using CPLEX.

i found that in one of the iterations the value of master problem degenerated and when I inspected the binary variables in the master problem, I realized one of the binary variables was 1E-6 or something near. why is that happening? the model status and solver status are optimal and normal completion, respectively!

Ever heard of tolerances? A solver is full of these. The “integer” tolerance is often 1e-6 (see e.g. https://www.gams.com/latest/docs/S_CPLEX.html#CPLEXepint). Depending on your solver you might be able to make this smaller or in some cases even set it to 0 (e.g. Cplex). There is some lively discussion if a system like GAMS should just round the discrete values (see https://github.com/coin-or/python-mip/issues/7), so far GAMS and others just report the solver solution as is.

-Michael