cyclus/cyclus — pull request #713 by gidden (2014-02-17 22:24:29+00:00)
Title: Linear/Integer Solver Support

Some highlights:
* support has been added to
a) add a factory method to get a given mathematical program solver interface
b) translate an ExchangeGraph into an instance of a linear/integer program
c) solve the instance
d) back translate the solution into matched arcs in the ExchangeGraph

* tests for basic use of the SolverFactory were added, specifically testing use of Clp and Cbc solvers

* a (rather long) test is provided that tests the full xlate/solve/backxlate stack

* the OsiSolverInterface was used, and the derived interfaces for coin's Clp and Cbc are now required to be linked against (they both ship with Cbc)

* a mathematical program instance comparator function that takes interfaces as arguments was written by John Forrest, coin's main developer, at my request (thanks John!). I added it to cyclus in coin_helpers.*, copied coin's licenses, and attributed the work to John in both files.

* Made some slight simplifications to the ExchangeSolver interface

* added a mathematical program ExchangeSolver (ProgSolver)

* support was added to help identify arcs in an exchange graph