Hellooooooooo !!!
Simple. Your meant Simple. Not Simplex :-D
I'm making the same kind of mistake something with crazy words from graph theory or Sage... Crazy :-D
Well... This patch took me... quite some time ! It all began with #12833, which this patch depends upon. Some problems with Gurobi's interface. Which I noticed because my gurobi license was not valid anymore. Once I got this license again (and reinstalled Gurobi), I had a problem when installing cbc with
sage -i cbc
, for the first package Sage installed was the old one. Harald Schilly fixed that.
And... Ok, now this patch !
It does not do much actually, just adds the required methods in cplex and Gurobi.
Some important things I should mention. Please tell me what you think of them :
- I renamed self.obj_value to self.obj_constant_term, as I would have expected self.obj_value to store the optimal value reached by the objective function.
- Sage should *never* crash, whatever happens in the code. So as usual ((&*@#)*&@%&* indexes in GLPK) I added a +1 to the indices in GLPK, so that the constraints are numbered from 0 regardless of the solver. I also added tests in GLPK and Coin to ensure no crash happens. CPLEX and Gurobi never crash because of that, as they have a smarter management of exceptions (error codes).
- I also changed some doctests for which solutions were not unique. Actually I just removed the lines printing the value of variables, which were not fundamental, and let the others stay as they really tested the new methods.
- I believe I also added some #optional flags in Coin's file, though everything is mixed up in my head after editing 4 files in a row
:-D
Anyway, everything is tested, and....
~/sage/numerical/backends$ sage -t -optional coin_backend.pyx glpk_backend.pyx gurobi_backend.pyx cplex_backend.pyx
sage -t -optional "devel/sage-2/sage/numerical/backends/coin_backend.pyx"
[1.3 s]
sage -t -optional "devel/sage-2/sage/numerical/backends/cplex_backend.pyx"
[1.3 s]
sage -t -optional "devel/sage-2/sage/numerical/backends/glpk_backend.pyx"
[1.3 s]
sage -t -optional "devel/sage-2/sage/numerical/backends/gurobi_backend.pyx"
[1.4 s]
----------------------------------------------------------------------
All tests passed!
Total time for all tests: 5.3 seconds
~/sage/numerical/backends$
(And I rarely have all solvers installed at the same time)
Soo... Well, if you agree with my patch (I can send you my cplex/gurobi license if necessary), .... :-)
Thank you very much for your work on that one ! It's good to see this class move a bit :-)
Nathann