> Chris Maes is certainly a good source of expertise.
I didn't realize until his subsequent email that Ben was working on a
flux balance application. (Ronan and I collaborated on an FBA paper
several years ago.) It's nice to hear that FBA, Gurobi, and
optimization are being discussed on this list. I should probably
subscribe. :)
> NaN would be the appropriate entry for each row of a vector returned
> when the problem seems infeasible. I say "seems" because not all
> solvers can really always detect when a problem is infeasible or not
> without expert tuning of the solvers parameters, before the solve.
With the exception of bugs like the one Ben reported (and models
suffering from numerical troubles), if Gurobi returns an infeasible
status the problem should be infeasible. As Ronan noted, there are a
few parameters settings that are useful to know:
1) Setting the parameter InfUnbdInfo=1 will cause Gurobi to return a
Farkas infeasibility proof when an LP is declared infeasible. This
proof should allow you to verify the LP is infeasible.
2) Gurobi may also return the status code INF_OR_UNBD (infeasible or
unbounded) in some cases. This is because our presolve routines
perform dual reductions to reduce the size of the problem. These
reductions speed up the solve, but make it difficult to distinguish
between the infeasible and unbounded cases. To obtain a more
definitive conclusion, set the DualReductions parameter to 0 and
reoptimize. After the reoptimization you should get a infeasible
status code, if your problem is infeasible.
These parameters are describe in further detail in the Parameters
section of the Gurobi reference manual:
http://www.gurobi.com/documentation/5.1/reference-manual/node775#sec:Parameters
If you have further questions (or bug reports!), please reach out to
us on the Gurobi google group:
http://groups.google.com/group/gurobi
Best of luck with your system biology problems,
Chris