2

I'm currently working on an LP optimization problem with and looked into PuLP.

I know that PuLPs default solver is: PULP-CBC-CMD. I solved a test problem with this and I'm wondering what kind of algorithm this solver actually uses... it doesnt seem to be a simplex as my problem got interpreted completely differently than a simplex interpretion would look like?

Also: Every other solver for PuLP has to be added to PuLP manually right?

Also: what solvers are you guys working with in python?

Thanks in advance!

learnPyt
  • 41
  • 5
  • CBC stands for COIN Branch and Cut. I'm not familiar with COIN-OR, but I'd be very surprised if it were not simplex based. Maybe you're seeing the output of the presolve? – David Eisenstat May 02 '21 at 17:23
  • 1
    I tend to use [OR-Tools](https://developers.google.com/optimization) because of where I work. – David Eisenstat May 02 '21 at 17:24
  • @DavidEisenstat I just realised that the numbers are actually fitting a simplex interpretation. Small mistake in my input data – learnPyt May 03 '21 at 08:24
  • @DavidEisenstat as you use OR-Tools do you know if OR-tools supports to choose a specific algorithm to solve a LP? https://developers.google.com/optimization/reference/python/linear_solver/pywraplp https://github.com/google/or-tools/tree/master/ortools/linear_solver on this page It looks like basically OR-tools also uses different solvers itself or am I getting this wrong? – learnPyt May 03 '21 at 09:21
  • Yes, it uses different solvers. The only time I mess with the defaults is to use Gurobi. – David Eisenstat May 03 '21 at 11:56

1 Answers1

1

CBC is based on simplex, yes. But, like most solvers, it combines simplex with many other algorithms such as branch-and-bound and cut-generation.

In particular, to solve linear programs it uses Clp: https://github.com/coin-or/Clp

More information on the CBC solver in their site: https://github.com/coin-or/Cbc

pchtsp
  • 794
  • 1
  • 6
  • 15
  • thanks for your answer. yeah I've looked into those pages but using CBC in PuLP it's not really possible to identify which specific algorithm is used.... in SciPy you could choose specific algorithms to solve – learnPyt May 03 '21 at 08:18