When a model is infeasible, you can use Model.feasRelax() or Model.feasRelaxS() to create a feasibility relaxation of the model. This works as expected for optimization problems with a single objective function. However, feasibility relaxations may not work as expected on models with multiple objectives.
Constructing a feasibility relaxation adds slack variables to the constraints and bounds. Additionally, the objective function is modified to minimize either the L 0, L 1, or L 2 norm of the constraint violations. Unfortunately, in the case of multi-objective problems, the objective function is not properly modified.
Note that we support only minrelax=0 for feasibility relaxations of multi-objective problems.
This issue is fixed in Gurobi 9.1. For earlier versions, a workaround is to delete the multiple objectives before calling Model.feasRelax(). This can be done by setting the NumObj model attribute to zero.