[Cbc] Cbc changes solver pointer after solving a problem [c++ API]

Wendel Melo wendelalexandre at gmail.com
Sat Jan 5 18:12:24 EST 2019


Dear friends

I am giving my first steps with CBC to Mixed Integer Linear Programming
(MILP) by means of the C++ API. My current goal is to turn Cbc one of the
MILP solvers supported in Muriqui Optimizer, a free MINLP solver (
www.wendelmelo.net/software).

Due to design questions, I have been constructing an object of the CbcModel
class using an empty OsiSolverInterface object:

OsiClpSolverInterface   clp ;
CbcModel   *model = new (std::nothrow) CbcModel(clp);

After that, I have been set the coefficients of my MILP problem by means of
the pointer returned by the method CbcModel::solver, for example:

OsiSolverInterface *solver = model->solver()

solver->addCol(0, NULL, NULL,   0.0,  1000.0,   1.0);

I am performing in this way to avoid delay copping the OsiSolverInterface
object in the CbcModel constructor since I need to solve a sequence where
the same MILP problem has to be solved several times just changing some
parameters.

But I have been getting some problems. After calling method
CbcModel::branchAndBound by the second time, the pointer returned by
CbcModel::solver is getting a different value of the previous call, for
example:

std::cout << "before BB solver pointer: " <<  model->solver() << std::endl;
model->branchAndBound()
std::cout << "after BB solver pointer: " <<  model->solver() << std::endl;

The code above prints:

before BB solver pointer:  0x1455a628
after BB solver pointer:  0x14887f88

So, we can see the solver pointer in CbcModel object was changed. Why is it
happening? I believe creating new solver objects is bad because increase
the computations. Is there a way to avoid the changing of solver object
pointer? Are there other methods in CbcModel that can provoke the changing
of the solver pointer?

Thanks in advanced

Best regards


Wendel Melo
www.wendeldelo.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20190105/e23c0301/attachment.html>


More information about the Cbc mailing list