[Cbc] A very general question: achieving the 'same' performance between using the API and the standalone Cbc

Alexis Guigue aguigue at softree.com
Wed Aug 8 14:20:27 EDT 2012


Dear all,

I have started to implement my problem with the API from CBC. My problem 
is essentially
a MIP where the constraints are SOS constraints of type 1. What I have 
done so far
is probably the simplest that can be done: just populate the problem 
with the
objective function, constraints (in the first version of my code, I have 
not even used CbcSOS
objects), and variables, and from there, call the branchAndBound function.

For comparison purposes, I have generated the lp file and the run the 
standalone Cbc.
The computation time difference is huge: 800s for the API vs 1s for the 
standalone Cbc.
My objective is to try to reproduce the same performance with the API. I 
am trying
to think about the steps to achieve that. What I can I think of is:

- inclusion of cuts. I believe now that my basic version does only 
branching.
- 'smart' branching for my SOS constraints. It is not clear to me yet 
what does it
do for the optimizer when creating a specific CbcSOS object for a SOS 
constraint
rather than just creating a general constraint.

I was wondering if there would be any example (or guidelines) available how
to include cuts in the branch and bound process (tree). Also, I would like
to understand better what creating a CbcSOS object is actually doing.

Cheers

Alexis

-- 
Software Engineer/Research Engineer
Softree Technical Systems Inc.
www.softree.com
Engineering an Easier Way



More information about the Cbc mailing list