I have built a MIQP model. However, when I use solvers CPELX/CPLEXD to solve it, they return integer infeasibility.

I am pretty sure that this model is feasible because if I fix some continuous variables as zero, in my model, I fixed Pr.fx(time) = 0, it returns a feasible solution. Without fixing, it returns integer infeasibility.

So, what’s wrong with my model? Hope someone can help me figure out. I attached the model and data for your reference.

The reduced costs are very high and indeed if I disable dual presolve reductions in Cplex (reduce=1) Cplex does not declare the model as infeasible (dual reductions seem important though for successfully solving the problem). Perhaps the logic of penalties in your model can be reworked.

I though that the high reduced cost might come from some penalized slack variables. Anyway, I reduced your M from 1000 to 100 and Cplex provides now a feasible solution (with CplexD). The reduced cost go down. It’s unfortunate that Cplex is sensitive about this but I guess the numerics of the model are far from being ideal. Perhaps, you can work with more data specific and much small values of M. You can also contact GAMS support and see if they can get better advice from the Cplex folks.