Warning: max constraint violation exceeds toleranceAnswered
I am using Gurobi 8.1 to solve a MIQCP program implemented in MATLAB with yalmip. Gurobi finds an optimal solution but prints the following to the terminal:
Warning: max constraint violation (8.8612e-06) exceeds tolerance
I suspected numerical issues but the coefficient statistics (from what I understand) are within acceptable ranges. I do not get the warning when I remove the integer variables.
My questions are:
- Is there any way to avoid the constraint violation?
- Is my model the problem?
The model description is given below:
Optimize a model with 4402 rows, 1271 columns, and 10810 nonzeros
Model has 84 quadratic constraints
Variable types: 1264 continuous, 7 integer (0 binary)
Matrix range [2e-01, 4e+03]
QMatrix range [1e+00, 1e+00]
Objective range [1e+00, 2e+01]
Bounds range [0e+00, 0e+00]
RHS range [7e-04, 5e+00]
- First, not having a large matrix range does not mean that your model does not have numerical issues (the other way is also true, i.e. having a large coefficient range does not necessarily mean your model does have numerical issues). This is just an indication.
- If you solve your model with different parameters or seeds and start to get different answers, that is a strong indication that there might be a numerical issue with your model
- You can change the target tolerance and get better (more accurate) results by tightening primal, dual, and integrality tolerances, but before doing so, you should ask yourself if the solution you are getting makes sense or not (i.e. if having a tolerance of 8e-6 is good enough for your purposes), that really depends on the context.
Please sign in to leave a comment.