Model is infeasible. Can it be explained by numerical issue?
Awaiting user inputHello, I'm solving an LP model involved with Min[.] function constraints, and Gurobi claims the model is infeasible.
This model reads some data to construct the formulation (i.e., coefficients of Ax=b matrix equations). I know this model is truly feasible and have implemented a module to generate a feasible solution in the dynamic programming(DP) approach.
1) When I use sample data, Gurobi claims that the model is feasible and finds the optimal solution (w/ or w/o presolve). I have confirmed that this solution from the sample data is valid.
1-1) When I provide any feasible solution from the DP approach module to Gurobi with MIPSTART option (Warm-start), Gurobi rejects this solution. However, when I set the lower/upper bound of each variable to this solution, Gurobi claims that the model is feasible.
2) When I provide real data (which has greater numbers of row/column and a wider range of coefficients), Gurobi claims the model is infeasible. As I have changed the size of the matrix and its coefficients, I suspect that it's a numerical issue rather than a modeling/implementing issue. (Gurobi logs for real data instances are presented below.)
Any comments or advice are highly appreciated.
Best regard,
Eunseok Kim
===============================================
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
Optimize a model with 186612 rows, 296628 columns and 617988 nonzeros
Model fingerprint: 0x42343528
Model has 54004 general constraints
Variable types: 296628 continuous, 0 integer (0 binary)
Coefficient statistics:
Matrix range [6e-04, 3e+04]
Objective range [7e+01, 7e+04]
Bounds range [1e+04, 2e+06]
RHS range [7e+00, 1e+04]
Presolve removed 174547 rows and 272047 columns (presolve time = 6s) ...
Presolve removed 99107 rows and 172375 columns
Presolve time: 6.80s
Presolved: 87505 rows, 124253 columns, 286258 nonzeros
Presolved model has 49706 SOS constraint(s)
Variable types: 74547 continuous, 49706 integer (49706 binary)
Root simplex log...
Iteration Objective Primal Inf. Dual Inf. Time
0 handle free variables 7s
44087 3.2373765e+08 0.000000e+00 0.000000e+00 8s
Root relaxation: objective 3.237377e+08, 44087 iterations, 0.56 seconds (0.53 work units)
Nodes | Current Node | Objective Bounds | Work
Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time
0 0 3.2374e+08 0 18609 - 3.2374e+08 - - 22s
0 0 3.2374e+08 0 17949 - 3.2374e+08 - - 25s
0 0 3.2374e+08 0 24751 - 3.2374e+08 - - 115s
0 0 3.2374e+08 0 16405 - 3.2374e+08 - - 129s
0 0 3.2374e+08 0 26756 - 3.2374e+08 - - 157s
Cutting planes:
Implied bound: 10616
Clique: 401
MIR: 4
Flow cover: 468
Relax-and-lift: 521
Explored 1 nodes (109720 simplex iterations) in 163.16 seconds (94.61 work units)
Thread count was 8 (of 8 available processors)
Solution count 0
Model is infeasible
Best objective -, best bound -, gap -
-
Official comment
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try Gurobot? -
Hi,
1-1) When I provide any feasible solution from the DP approach module to Gurobi with MIPSTART option (Warm-start), Gurobi rejects this solution. However, when I set the lower/upper bound of each variable to this solution, Gurobi claims that the model is feasible.
You should see why Gurobi rejects the solution. You should see something similar to "User mipstart violates constraint XY". Maybe this can help in detecting what is going wrong.
Can any of your variable take negative values? Please note that the default lower bound for variables in Gurobi is \(0\). Thus, you have to explicitly set the lower bound to a negative value of just \(\texttt{lb=-GRB.INFINITY}\) in order to allow negative variable values.
2) When I provide real data (which has greater numbers of row/column and a wider range of coefficients), Gurobi claims the model is infeasible. As I have changed the size of the matrix and its coefficients, I suspect that it's a numerical issue rather than a modeling/implementing issue. (Gurobi logs for real data instances are presented below.)
You could try the approaches discussed in How do I determine why my model is infeasible?
Best regards,
Jaromił0
Post is closed for comments.
Comments
2 comments