Warning: max constraint violation (2.0342e-05) exceeds tolerance

416 views
Skip to first unread message

yongjie wang

unread,
Mar 23, 2015, 11:01:19 PM3/23/15
to yal...@googlegroups.com
Dear Johan
        Here, the model is a MISOCP problem, and i use gurobi to solve it. However it notes:


Optimize a model with 2856 rows, 2160 columns and 6777 nonzeros
Model has 96 quadratic constraints
Presolve removed 2193 rows and 1149 columns
Presolve time: 0.08s
Presolved: 1047 rows, 1395 columns, 3081 nonzeros
Variable types: 1383 continuous, 12 integer (12 binary)

Root relaxation: objective -1.037639e+06, 417 iterations, 0.00 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

H    0     0                      -0.0465017          -     -      -    0s
*    0     0               0      -0.0642966   -0.06430  0.00%     -    0s

Cutting planes:

Explored 0 nodes (1716 simplex iterations) in 0.28 seconds
Thread count was 4 (of 4 available processors)

Optimal solution found (tolerance 1.00e-04)
Warning: max constraint violation (2.0342e-05) exceeds tolerance
Best objective -6.429657888878e-02, best bound -6.429657888878e-02, gap 0.0%

mubiao =

    0.0643

In my obj, one part is ' detaQch*tumq', and detaQch is zero row vector,and vector 'tumq' constraint is as follow:
con=con+[-M*(1-ZQch)<=tumq-gg<=M*(1-ZQch)];
con=con+[-M*ZQch<=tumq<=M*ZQch];
ZQch are binary,and ,M is big-M,and i make it 100000.
So,it seems that the 'ZQch' can be arbitrary because 'detaQch' is zero. If i make 'ZQch' variable, the result is not right. When i give 'ZQch' one arbitrary value(SOCP NO MI), it is right.
Next,in my model,'detaQch' may not be zero, so the  'ZQch' must be variable,and the warnings appears again.
Many thanks

yongjie wang

unread,
Mar 23, 2015, 11:35:00 PM3/23/15
to yal...@googlegroups.com
The value of M is also an important factor, and the obj opt value is different,but the warnings still exists.

Johan Löfberg

unread,
Mar 27, 2015, 3:22:32 AM3/27/15
to yal...@googlegroups.com
The problem is ill-defined numericall.

M = 100000 is a recipe for numerical problems. For instance, if the binary variable is 2e-5 (which was the value used in the warning about exceeding tolerance), the constraint -M*ZQch<=tumq<=M*ZQch is -20 <= tumq <= 20, i.e, tumq is very far from being forced to be zero, despite ZQch being essentially 0
Reply all
Reply to author
Forward
0 new messages