industrial-optimization-group / DESDEO

An open source framework for interactive multiobjective optimization methods
https://desdeo.it.jyu.fi
30 stars 23 forks source link

Gurobipy can return optimal variables that violate constraints #178

Open juropo opened 2 months ago

juropo commented 2 months ago

This is an issue with desdeo's implementation of GurobipySolver specifically, not with the actual gurobipy package.

In a corner case situation, where some of the decision variables do not contribute to the objective function being optimized and aren't even interacting with other more important decision variables through constraints, it may happen that an optimal solution is returned where these unimportant decision variables violate some constraints of the problem definition. This does not affect the value of the objective function or the more important decision variables in any way as far as I can tell.

I assume that this happens, because gurobipy never even includes these decision variables it its optimization.

I am not sure if this issue is even worth fixing, but I thought it should be documented somewhere at least.

gialmisi commented 1 month ago

This should be mentioned in the documentation in an appropriate place (perhaps when discussing the Gurobipy solver, or in the docstring of the solver). Once this is done, I say we close this issue. I would not label it as a bug per se.

I am afraid "fixing" this by, say, setting the values of the variables to a feasible value after optimization, can introduce nasty bugs, especially in a case where Gurobipy would, for one reason or another, actually return variables with infeasible values that are actually important and affect the objective function. Unless it is possible to figure out which of the variables are "unimportant". I do not know if this information is available from the solver.