Hi,
I am working with an LP to do Value Iteration for an MDP and am seeing some fairly strange behavior. When optimizing, I find that the model is infeasible. However, this LP should always be feasible, so I call computeIIS() to debug. At that point I get an error which says that computeIIS can not be called for an infeasible model. If I call model.optimize() subsequently, I find that the optimization succeeds. Does calling computeIIS alter the optimization problem in some way? It looks like this might be caused by an issue with presolve(), as it does not look like that runs the second time.
Below is python shell output this corresponds to
>>> m = grb.Model()
# set up model with constraints
>>> m.optimize()
Optimize a model with 2383 rows, 1928 columns and 8366 nonzeros
Presolve removed 1061 rows and 1122 columns
Presolve time: 0.01s
Presolved: 1322 rows, 808 columns, 5145 nonzeros
Iteration Objective Primal Inf. Dual Inf. Time
0 3.4427030e+05 4.500415e+00 0.000000e+00 0s
Solved in 605 iterations and 0.02 seconds
Infeasible model
>>> m.computeIIS()
Iteration Objective Primal Inf. Dual Inf. Time
0 3.4427788e+05 6.761819e+00 0.000000e+00 0s
*** GurobiError: Cannot compute IIS on a feasible model
>>> m.optimize()
Optimize a model with 2383 rows, 1928 columns and 8366 nonzeros
Solved in 1205 iterations and 0.00 seconds
Optimal objective 3.442919509e+05