[353] | 1 | NOTE: The information in this file might not yet include the changes introduced with the switch to the autotools. |
---|
| 2 | |
---|
[2] | 3 | To build Cbc see INSTALL file |
---|
| 4 | |
---|
| 5 | To use Cbc you need the Cbc, Cgl, Coin and Osi libraries. You |
---|
| 6 | will probably need Clp as well. |
---|
| 7 | |
---|
[237] | 8 | If you are using Clp as your solver then you can make the unitTest and standalone executable by doing |
---|
[2] | 9 | |
---|
[237] | 10 | make solve in this directory. This creates an executable solve. |
---|
| 11 | |
---|
| 12 | solve takes various options - try solve and then ? to get some idea of what you can do. |
---|
| 13 | solve file will do branch and bound if file is integer mps file and will do dual if non-integer mps file |
---|
| 14 | options start with - (although the code will also try without -) e.g. |
---|
| 15 | |
---|
| 16 | solve file -cuts root -solve will import file and do branch and bound with cuts only at root |
---|
| 17 | |
---|
| 18 | - by itself goes to interactive mode. |
---|
| 19 | |
---|
| 20 | If you wish to use the Cbc solver from AMPL there is a bit of work involved. You |
---|
| 21 | will need to uncomment COIN_ampl in Makefiles/makefile.location - and also |
---|
| 22 | download the ampl glue code - see Makefiles/Makefile.location for http. Then solve |
---|
| 23 | will assume it is being called from AMPL if the first two arguments are xxx.nl -AMPL. |
---|
| 24 | Of course "solve" is not a good name (cbc is much better but already used) so copy |
---|
| 25 | "solve" to "cbc" in ampl accessible path. |
---|
| 26 | Options may be set by e.g. option cbc_options "cuts=off log=0" |
---|
| 27 | No keywords are recognized by ampl parsing so above format should be used. |
---|
| 28 | All options are as found by "cbc(solve) " and then ? |
---|
| 29 | Current ugliness is that ampl glue code assumes "=" (on undefined keywords) so to maximize you |
---|
| 30 | would have to say "maximize=". I will add to AMPL keywords if this interface gets much use. |
---|
| 31 | |
---|
| 32 | If you are not using Clp then fewer options are available - |
---|
| 33 | make the unitTest and standalone executable by doing |
---|
| 34 | |
---|
[2] | 35 | make unitTest in this directory. This creates an executable cbc. |
---|
| 36 | |
---|
| 37 | Running cbc gives you some hints. Just do |
---|
| 38 | |
---|
| 39 | cbc - |
---|
| 40 | |
---|
| 41 | and then try ? or setting various stuff. |
---|
| 42 | |
---|
| 43 | On Linux cbc can do file completion and line editing. |
---|
| 44 | |
---|
[237] | 45 | There are samples in ./Samples. Use make DRIVER=xxxxxx where xxxxxx.cpp is driver file to |
---|
[2] | 46 | create an executable - testit. |
---|
| 47 | |
---|
[237] | 48 | The two simplest samples are: |
---|
[2] | 49 | |
---|
| 50 | sample.cpp This is a simple program to read an mps file.and solve the |
---|
| 51 | integer problem. |
---|
| 52 | |
---|
| 53 | sample2.cpp. This is the benchmark driver for the competition. It overrides |
---|
| 54 | the default branching methods and adds a (mildly useless) |
---|
| 55 | heuristic. It is intended to show you how to add your |
---|
| 56 | own methods. See CbcCompareUser.hpp for how to modify |
---|
| 57 | choice of node from tree. See CbcBranchUser.?pp for |
---|
| 58 | how to modify which variable is chosen at a node. For |
---|
| 59 | more complex stuff such as new types of branches see |
---|
| 60 | CbcBranchBase and CbcBranchActual in directory Cbc. |
---|
| 61 | To see how to add heuristics see CbcHeuristicUser.?pp. |
---|
| 62 | |
---|
| 63 | To add cut generators - define them as in Cgl and then just |
---|
| 64 | add them as in sample2.cpp |
---|
| 65 | |
---|
| 66 | The script "runtimes" in Samples directory will |
---|
| 67 | run some or all of test set. The version checked in |
---|
| 68 | does some - just take off # to run. An optional time |
---|
| 69 | in minutes can be passed. |
---|
| 70 | |
---|
| 71 | |
---|
| 72 | |
---|