1 | NOTE: The information in this file might not yet include the changes introduced with the switch to the autotools. |
---|
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 | |
---|
8 | If you are using Clp as your solver then you can make the unitTest and standalone executable by doing |
---|
9 | |
---|
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 | |
---|
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 | |
---|
45 | There are samples in ./Samples. Use make DRIVER=xxxxxx where xxxxxx.cpp is driver file to |
---|
46 | create an executable - testit. |
---|
47 | |
---|
48 | The two simplest samples are: |
---|
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 | |
---|