[Couenne] Is there a callable library to use Couenne in C/C++?

Pietro Belotti petr.7b6 at gmail.com
Sun Feb 22 09:34:25 EST 2015


Tony and Ted,

thanks very much for the excellent insights. The OS-Couenne code is a
significant step in the right direction and something I wanted to see
(and wished had time to do myself) for some time. The
solver-independent interface is added benefit. I do agree with Ted
about the usefulness and quality of the OS library.

Victor, re: your last message, I think that would require duplicating
all or part of the OS-Couenne code pointed out by Tony. It would allow
one to avoid using OS if a solver-agnostic interface is not needed,
though there are a few details that have to be worked out, namely the
creation of a Bonmin interface---necessary for, among others, creating
NLP callbacks for Couenne to call Ipopt.

Pietro

On Sun, Feb 22, 2015 at 4:10 AM, victor.zverovich at gmail.com
<victor.zverovich at gmail.com> wrote:
> Thanks for clarification.
>
> BTW if OS is building Couenne data structures directly via some API, I guess
> one could use the same API directly and bypass OS altogether.
>
> Regards,
> Victor
>
>
> On Sat Feb 21 2015 at 5:37:13 PM Ted Ralphs <ted at lehigh.edu> wrote:
>>
>>
>> On Sat, Feb 21, 2015 at 6:37 PM, victor.zverovich at gmail.com
>> <victor.zverovich at gmail.com> wrote:
>>>
>>> Ted, by "OS passing the model directly to Couenne" you mean via some
>>> Couenne APIs or via intermediate XML files?
>>
>>
>> I mean via an API, which I guess is probably more part of OS than Couenne.
>> I'm not really too familiar with the implementation details, but the basic
>> workflow is to first create an OSInstance object using a solver-agnostic API
>> (similar in spirit to Osi, except with support for nonlinear modeling). The
>> API is here:
>>
>>
>> https://projects.coin-or.org/OS/browser/trunk/OS/src/OSCommonInterfaces/OSInstance.h
>>
>> After creating the model, to pass it to Couenne, you call
>> buildSolverInstance() here:
>>
>>
>> https://projects.coin-or.org/OS/browser/trunk/OS/src/OSSolverInterfaces/OSCouenneSolver.cpp#L141
>>
>> which translates the model into Couenne's native data structures. Finally,
>> you can call solve().
>>
>> A detailed example is here:
>>
>>
>> https://projects.coin-or.org/CoinBazaar/browser/projects/ApplicationTemplates/trunk/instanceGenerator/OSInstanceGenerator.cpp
>>
>> This functionality is what is planned to be the basis for "Osi 2" if that
>> project ever comes to fruition. I don't think many people realize how much
>> useful stuff is in the OS project.
>>
>> Cheers,
>>
>> Ted
>>
>>
>>
>>
>>
>> --
>> Dr. Ted Ralphs
>> Professor, Lehigh University
>> (610) 628-1280
>> ted 'at' lehigh 'dot' edu
>> coral.ie.lehigh.edu/~ted


More information about the Couenne mailing list