Closed Midnighter closed 1 year ago
Actually, it's more disconcerting to me that the other solvers don't raise an error. Loopless FVA will definitely not work when your model is infeasible and any result you would get from that is probably meaningless. Also getting infeasible solutions if your initial model was feasible is a bug per se but may happen due to numerical instabilities. The original solution is always a feasible solutions on all optimizations in the iteration so there should be no infeasible solutions unless your initial objective optimization is infeasible.
I think the behavioral difference is due to whether solvers invalidate the primal values upon non-optimal solution states and that behavior is managed completely in optlang.
I think the correct handling for that would be to mark those unstable reactions with NaN
. If you agree I can start a PR.
I suppose issuing a warning and maintaining the loop is the safest option?
If you agree I can start a PR.
Please go ahead :slightly_smiling_face:
Problem description
It seems like the loopless FVA code is not robust against infeasible solutions when it comes to the Gurobi solver. It does not happen with the GLPK solver although many solutions are infeasible or the status is undefined. CPLEX seems also fine.
Code Sample
Download the yeast-GEM 8.3.3.
Actual Output
Expected Output
I expect to receive a valid FVA result.
Dependency Information