Affected versions: Gurobi v9.0.0, v9.0.1, v9.0.2, v9.0.3
Resolved in version: Gurobi v9.1.0
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 in Gurobi 9.0.
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.
A workaround is to delete the multiple objectives before calling Model.feasRelax(). This can be done by setting the NumObj model attribute to zero.