Sometimes, an optimization returns the Optimization Status Code `INF_OR_UNBD` or the message "Model is infeasible or unbounded". This may occur because there are some steps in presolve that prevent us from distinguishing between infeasibility and unboundedness.

In order to determine if the model is infeasible or unbounded, you should set the DualReductions parameter to 0, call reset on the model, and optimize once again. The optimization status that is returned should be either `INFEASIBLE` or `UNBOUNDED`.

If the model is infeasible, then you can follow the Knowledge Base article How do I determine why my model is infeasible? to determine the cause of the infeasibility.

If the model is unbounded, then you can examine the values of the unbounded ray UnbdRay to determine the cause of the unboundedness. Note that in order to access this array, you first need to set InfUnbdInfo=1. Additionally, unbounded ray information is only supported for continuous linear models with no integer variables.

### Further information

- How do I determine why my model is infeasible?
- How does Gurobi compute the IIS for infeasible models?
- How does presolve work?