Changes between Version 7 and Version 8 of Ticket #12823

04/12/12 13:57:20 (9 years ago)

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

(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 :-)



  • Ticket #12823

    • Property Status changed from needs_info to needs_review
    • Property Dependencies changed from to 12833
  • Ticket #12823 – Description

    v7 v8  
    2222  * [attachment:trac_12823_const_for_obj_funs.patch]
     23  * [attachment:trac_12823-cplex_gurobi.patch]