COIN-OR::LEMON - Graph Library

Opened 10 years ago

Closed 10 years ago

#204 closed enhancement (done)

CBC MIP solver interface

Reported by: Tapolcai János Owned by: Balazs Dezso
Priority: major Milestone: LEMON 1.1 release
Component: core Version: hg main
Keywords: MIP solver CBC Cc: Akos Ladanyi
Revision id:

Description

See the attached files with the lp/mip codes for CBC solver. CBC (https://projects.coin-or.org/Cbc) was the fatest opensource solver in H. Mittelmann expirements, see also http://plato.asu.edu/ftp/milpf.html.

CBC can use CLP for LP solving.

PS. sorry, the attached code is far from a fully finished/nicely polished code.

Attachments (4)

mip_cbc.zip (18.8 KB) - added by Tapolcai János 10 years ago.
8c2913a5830a.patch (23.1 KB) - added by Balazs Dezso 10 years ago.
CBC interface
coin-check-2a07fe711156.patch (9.2 KB) - added by Akos Ladanyi 10 years ago.
2a07fe711156
coin-check-0772f6c5cddf.patch (9.2 KB) - added by Akos Ladanyi 10 years ago.
0772f6c5cddf

Download all attachments as: .zip

Change History (18)

Changed 10 years ago by Tapolcai János

Attachment: mip_cbc.zip added

comment:1 in reply to:  description Changed 10 years ago by Alpar Juttner

Owner: changed from Alpar Juttner to Balazs Dezso

Replying to jtapolcai:

PS. sorry, the attached code is far from a fully finished/nicely polished code.

Don't worry. May I ask you to create a patch from this changes? You can find some hints here on how to do that.

comment:2 Changed 10 years ago by Balazs Dezso

Status: newassigned

Changed 10 years ago by Balazs Dezso

Attachment: 8c2913a5830a.patch added

CBC interface

comment:3 Changed 10 years ago by Balazs Dezso

The [8c2913a5830a] is the patch for CBC support.

comment:4 in reply to:  3 Changed 10 years ago by Alpar Juttner

Replying to deba:

The [8c2913a5830a] is the patch for CBC support.

Looks very good! My only comment so far is that I'm not very happy with the white space changes in general.

comment:5 in reply to:  3 ; Changed 10 years ago by Alpar Juttner

Cc: Akos Ladanyi added

Replying to deba:

The [8c2913a5830a] is the patch for CBC support.

Some more comments:

  • The CBC source tarball also contains the source CLP, therefore - I guess - CLP is always installed along with CBP. But if I give the path of CBC with --enable-cbc=..., LEMON will find only CBC, not CLP. For CLP I must give the same path for --enable-clp=..., too. On the other hand, giving here a different version of CLP will lead to serious problems I guess. Solutions:
    1. if --enable-cbc is given, then this would also look for CLP.
    2. (probably even better) instead of --enable-clp and --enable-cbc there would be a --enable-coin option and both CLP and CBC would use this.
  • mip_test writes a lot to the stdout. It shouldn't. The best is to write nothing if it is possible.
    • The first line of the output is especially worrying, being it is
      Crashing...
      

comment:6 in reply to:  5 ; Changed 10 years ago by Balazs Dezso

Replying to alpar:

Replying to deba:

The [8c2913a5830a] is the patch for CBC support.

Some more comments:

  • The CBC source tarball also contains the source CLP, therefore - I guess - CLP is always installed along with CBP. But if I give the path of CBC with --enable-cbc=..., LEMON will find only CBC, not CLP. For CLP I must give the same path for --enable-clp=..., too. On the other hand, giving here a different version of CLP will lead to serious problems I guess. Solutions:
    1. if --enable-cbc is given, then this would also look for CLP.
    2. (probably even better) instead of --enable-clp and --enable-cbc there would be a --enable-coin option and both CLP and CBC would use this.

I do not support this idea, it assumes that if you have coin, then you have also clp and cbc, but it not sure. For example, the debian contains already the clp as standard package, but cbc is not contained yet. In addition, the coin contains more lp and mip interfaces.

  • mip_test writes a lot to the stdout. It shouldn't. The best is to write nothing if it is possible.
    • The first line of the output is especially worrying, being it is
      Crashing...
      

See ticket #255.

comment:7 in reply to:  6 Changed 10 years ago by Alpar Juttner

I do not support this idea, it assumes that if you have coin, then you have also clp and cbc, but it not sure. For example, the debian contains already the clp as standard package, but cbc is not contained yet.

It is not a problem. If you use --enable-coin and you don't have CBC, the configure script will not find it therefore it won't be switched on.

In addition, the coin contains more lp and mip interfaces.

Good. Once we will have interfaces to them, --enable-coin will switch them on, too (assuming they are available). What's wrong with it?

comment:8 in reply to:  6 Changed 10 years ago by Alpar Juttner

Replying to deba:

I do not support this idea, it assumes that if you have coin, then you have also clp and cbc, but it not sure. For example, the debian contains already the clp as standard package, but cbc is not contained yet. In addition, the coin contains more lp and mip interfaces.

We checked the COIN-OR build system with Akos and we found that it is virtually impossible to properly link LEMON to more than one COIN-OR packages with different prefixes.

Thus --with-coin=... has no drawback compared to the current or any other approaches on the horizon.

Actually, the situation is even worse: it is also dangerous to try to install two COIN-OR packages to the same prefix and use it in that way. As far as I see, the best thing we can do is to create a COIN-OR meta project including each supported COIN-OR project as a subpproject and suggest installing and using this.

Another approach would be to adopt the COIN-OR build environment, but it would be a big step backward in many-many other aspects.

Changed 10 years ago by Akos Ladanyi

comment:9 Changed 10 years ago by Akos Ladanyi

The attached patch adds the --with-coin switch to configure.

comment:10 in reply to:  9 Changed 10 years ago by Alpar Juttner

Replying to ladanyi:

The attached patch adds the --with-coin switch to configure.

I cannot apply it as the base doesn't exist. I cannot figure out where it could be.

Changed 10 years ago by Akos Ladanyi

comment:11 Changed 10 years ago by Akos Ladanyi

comment:12 Changed 10 years ago by Alpar Juttner

As of [3314f58e7b25] and [b53a9068e3e4], all the changes when to the main (with some modification in the commit logs and in the INSTALL file).

The Cbc solver still put a lot of rubbish to the stdout in mip_test. It would be nice to switch it off if possible.

comment:13 in reply to:  12 ; Changed 10 years ago by Balazs Dezso

Replying to alpar:

As of [3314f58e7b25] and [b53a9068e3e4], all the changes when to the main (with some modification in the commit logs and in the INSTALL file).

The Cbc solver still put a lot of rubbish to the stdout in mip_test. It would be nice to switch it off if possible.

See ticket #9.

comment:14 in reply to:  13 Changed 10 years ago by Alpar Juttner

Resolution: done
Status: assignedclosed

Replying to deba:

See ticket #9.

OK. So, I close this one.

Note: See TracTickets for help on using tickets.