[2375] | 1 | # CBC Version 2.9.9 README |
---|
[353] | 2 | |
---|
[1690] | 3 | Welcome to the README for the COIN Branch and Cut Solver (CBC). CBC is |
---|
| 4 | distributed under the Eclipse Public License and is freely redistributable. |
---|
| 5 | All source code and documentation is Copyright IBM and others. This README may |
---|
| 6 | be redistributed freely. |
---|
[2] | 7 | |
---|
[2292] | 8 | ## DOWNLOAD |
---|
| 9 | |
---|
| 10 | Binaries for most platforms are available for download from [Bintray](https://bintray.com/coin-or/download/Cbc) |
---|
| 11 | |
---|
[2139] | 12 | ## DOCUMENTATION |
---|
[2] | 13 | |
---|
[2139] | 14 | For a quick start guide, please see the INSTALL file in this distribution. A |
---|
| 15 | (somehwat outdated) user's manual is available here: |
---|
[2] | 16 | |
---|
[1690] | 17 | http://www.coin-or.org/Cbc |
---|
[237] | 18 | |
---|
[1690] | 19 | More up-to-date automatically generated documentation of the source code can |
---|
| 20 | be found here: |
---|
[237] | 21 | |
---|
[1690] | 22 | http://www.coin-or.org/Doxygen/Cbc/ |
---|
[237] | 23 | |
---|
[1690] | 24 | Further information can be found here: |
---|
[237] | 25 | |
---|
[1690] | 26 | http://projects.coin-or.org/Cbc |
---|
[237] | 27 | |
---|
[2139] | 28 | ## SUPPORT |
---|
[237] | 29 | |
---|
[2139] | 30 | ### List Serve |
---|
[1939] | 31 | |
---|
[2139] | 32 | CBC users should use the Cbc mailing list. To subscribe, go to |
---|
| 33 | http://list.coin-or.org/mailman/listinfo/cbc |
---|
[1939] | 34 | |
---|
[2139] | 35 | ### Bug Reports |
---|
[1925] | 36 | |
---|
[2139] | 37 | Bug reports should be reported on the CBC development web site at |
---|
[1925] | 38 | |
---|
[2139] | 39 | https://projects.coin-or.org/Cbc/newticket |
---|
[1928] | 40 | |
---|
[2139] | 41 | ## CHANGELOG |
---|
[1925] | 42 | |
---|
[2375] | 43 | * Release 2.9.9 |
---|
| 44 | |
---|
| 45 | * Fixes for SOS2 |
---|
| 46 | * Updates to mipstart |
---|
| 47 | * Switching to new build system |
---|
| 48 | * Updates for CI |
---|
| 49 | |
---|
[2273] | 50 | * Release 2.9.8 |
---|
[2222] | 51 | |
---|
[2273] | 52 | * Update to most current releases of dependencies |
---|
[2222] | 53 | * Small bug fixes |
---|
[2273] | 54 | * Add support for automatic build and test with Travis and Appveyor |
---|
| 55 | |
---|
| 56 | * Release 2.9.7 |
---|
| 57 | |
---|
| 58 | * Small bug fixes |
---|
[2222] | 59 | * Option to switch to line buffered output |
---|
| 60 | |
---|
[2218] | 61 | * Release 2.9.6 |
---|
| 62 | |
---|
| 63 | * Small bug fixes |
---|
| 64 | |
---|
| 65 | * Release 2.9.5 |
---|
| 66 | |
---|
| 67 | * Small bug fixes |
---|
| 68 | |
---|
[2178] | 69 | * Release 2.9.4 |
---|
| 70 | |
---|
| 71 | * Small fixes for stability |
---|
| 72 | * Fixes for Doygen documentation generation |
---|
| 73 | |
---|
[2157] | 74 | * Release 2.9.3 |
---|
[1925] | 75 | |
---|
[2157] | 76 | * Minor bug fixes |
---|
| 77 | |
---|
| 78 | * Release 2.9.2 |
---|
| 79 | |
---|
[2141] | 80 | * Fix for proper installation with ```DESTDIR``` |
---|
[1792] | 81 | |
---|
[2157] | 82 | * Release 2.9.1 |
---|
[1792] | 83 | |
---|
[2139] | 84 | * Fix for dependency linking |
---|
| 85 | * Minor bug fixes |
---|
[1792] | 86 | |
---|
[2157] | 87 | * Release 2.9.0 |
---|
| 88 | |
---|
[2159] | 89 | * Introduced specialized branching methods for dealing with "big Ms". |
---|
| 90 | * Introduced new methods for dealing with symmetry (requires installation of [nauty](http://pallini.di.uniroma1.it/)) |
---|
| 91 | * Introduction of conflict cuts (off by default, turn on with `-constraint conflict`) |
---|
[1792] | 92 | |
---|
[2157] | 93 | * Release 2.8.13 |
---|
| 94 | |
---|
[2139] | 95 | * Improved message handling |
---|
| 96 | * Miscellaneous bug fixes. |
---|
[1803] | 97 | |
---|
[2157] | 98 | * Release 2.8.12 |
---|
[2139] | 99 | * Update for dependencies. |
---|
[1848] | 100 | |
---|
[2139] | 101 | * Release 5.8.11 |
---|
[2157] | 102 | |
---|
[2139] | 103 | * Major overhaul of C interface |
---|
| 104 | * Fixes to SOS |
---|
| 105 | * Miscellaneous bug fixes |
---|
[1884] | 106 | |
---|
[2157] | 107 | * Release 2.8.10 |
---|
| 108 | |
---|
[2139] | 109 | * More changes related to thread safety. |
---|
| 110 | * Fix bug in build system with Visual Studio compiler. |
---|
| 111 | * Miscellaneous bug fixes. |
---|
[1884] | 112 | |
---|
[2157] | 113 | * Release 2.8.9 |
---|
| 114 | |
---|
[2139] | 115 | * Attempt to make Cbc thread safe. |
---|
| 116 | * Add parallel examples. |
---|
| 117 | * Add CbcSolverUsefulInfo. |
---|
| 118 | * Bug fixes. |
---|
[1884] | 119 | |
---|
[2157] | 120 | * Release 2.8.8 |
---|
[1884] | 121 | |
---|
[2139] | 122 | * Added example to show how to use Cbc with installed libraries in MSVC++ |
---|
| 123 | * Fixed inconsistency in addition of libCbcSolver to dependencies in |
---|
| 124 | {{{cbc_addlibs.txt}}}. |
---|
[1892] | 125 | |
---|
[2157] | 126 | * Release 2.8.7 |
---|
[2139] | 127 | |
---|
| 128 | * Changed so that Doxygen builds LaTex |
---|
| 129 | * Fixes for build system |
---|
| 130 | |
---|
[2157] | 131 | * Release 2.8.6 |
---|
[2139] | 132 | |
---|
| 133 | * Added option to explicitly link dependencies to comply with packaging |
---|
| 134 | requirements on Fedora and Debian, as well as allow building of MinGW |
---|
| 135 | DLLs. |
---|
| 136 | |
---|
[2157] | 137 | * Release 2.8.5 |
---|
| 138 | |
---|
[2139] | 139 | * Minor fixes to build system |
---|
| 140 | |
---|
[2157] | 141 | * Release 2.8.4 |
---|
[2139] | 142 | * Small bug fixes |
---|
| 143 | * Upgrades to build system |
---|
| 144 | |
---|
| 145 | * Release 2.8.3: |
---|
| 146 | |
---|
| 147 | * Fix for handling SOS. |
---|
| 148 | |
---|
| 149 | * Release 2.8.2: |
---|
| 150 | |
---|
| 151 | * Fixed recognition of Glpk source in main configure. |
---|
| 152 | * Minor bug fixes in CoinUtils, Clp, and Cbc. |
---|
| 153 | |
---|
| 154 | * Release 2.8.1: |
---|
| 155 | |
---|
| 156 | * Minor bug fixes |
---|
| 157 | |
---|
| 158 | * Release 2.8.0: |
---|
| 159 | |
---|
| 160 | * Introduced new secondaryStatus 8 to indicate that solving stopped due to |
---|
| 161 | an iteration limit. |
---|
| 162 | * Solution pool is now accessible via the command line and the CbcMain* |
---|
| 163 | interface. |
---|
| 164 | * New mipstart option to read an initial feasible solution from a file. |
---|
| 165 | Only values for discrete variables need to be provided. |
---|
| 166 | |
---|
| 167 | * Added Proximity Search heuristic by Fischetti and Monaci (off by |
---|
| 168 | default): The simplest way to switch it on using stand-alone version is |
---|
| 169 | ```-proximity on```. |
---|
| 170 | |
---|
| 171 | Proximity Search is the new "No-Neighborhood Search" 0-1 MIP refinement |
---|
| 172 | heuristic recently proposed by Fischetti and Monaci (2012). The idea is |
---|
| 173 | to define a sub-MIP without additional constraints but with a modified |
---|
| 174 | objective function intended to attract the search in the proximity of the |
---|
| 175 | incumbent. The approach works well for 0-1 MIPs whose solution landscape |
---|
| 176 | is not too irregular (meaning the there is reasonable probability of |
---|
| 177 | finding an improved solution by flipping a small number of binary |
---|
| 178 | variables), in particular when it is applied to the first heuristic |
---|
| 179 | solutions found at the root node. |
---|
[1884] | 180 | |
---|
[2139] | 181 | * An implementation of Zero-Half-Cuts by Alberto Caprara is now available. |
---|
| 182 | By default, these cuts are off. To use add to your command line |
---|
| 183 | -zerohalfCuts root (or other options) or just -zero. So far, they may |
---|
| 184 | help only on a small subset of problems and may need some tuning. |
---|
[1848] | 185 | |
---|
[2139] | 186 | The implementation of these cuts is described in G. Andreello, A. |
---|
| 187 | Caprara, and M. Fischetti "Embedding Cuts in a Branch and Cut Framework: |
---|
| 188 | a Computational Study with {0,1/2}-Cuts" INFORMS Journal on Computing |
---|
| 189 | 19(2), 229-238, 2007 http://dx.doi.org/10.1287/ijoc.1050.0162 |
---|
[1850] | 190 | |
---|
[2139] | 191 | * An alternative implementation of a reduce and split cut generator by |
---|
| 192 | Giacomo Nannicini is now available. By default, these cuts are off. To |
---|
| 193 | use add to your command line -reduce2AndSplitCuts root (or other |
---|
| 194 | options). |
---|
[1853] | 195 | |
---|
[2139] | 196 | The implementation of these cuts is described in G. Cornuejols and G. |
---|
| 197 | Nannicini "Practical strategies for generating rank-1 split cuts in |
---|
| 198 | mixed-integer linear programming" Mathematical Programming Computation |
---|
| 199 | 3(4), 281-318, 2011 http://dx.doi.org/10.1007/s12532-011-0028-6 |
---|
[1792] | 200 | |
---|
[2139] | 201 | * An alternative robust implementation of a Gomory cut generator by Giacomo |
---|
| 202 | Nannicini is now available. By default, these cuts are off. To use add to |
---|
| 203 | your command line -GMI root (or other options). |
---|
[1792] | 204 | |
---|
[2139] | 205 | The implementation of these cuts is described in G. Cornuejols, F. |
---|
| 206 | Margot, and G. Nannicini "On the safety of Gomory cut generators" |
---|
| 207 | http://faculty.sutd.edu.sg/~nannicini/index.php?page=publications |
---|
[1803] | 208 | |
---|
[2139] | 209 | * To encourage the use of some of the more exotic/expensive cut generators |
---|
| 210 | a parameter -slowcutpasses has been added. The idea is that the code does |
---|
| 211 | these cuts just a few times - less than the more usual cuts. The default |
---|
| 212 | is 10. The cut generators identified by "may be slow" at present are just |
---|
| 213 | Lift and project and ReduceAndSplit (both versions). |
---|
| 214 | |
---|
| 215 | * Allow initialization of random seed by user. Pseudo-random numbers are |
---|
| 216 | used in Cbc and Clp. In Clp they are used to break ties in degenerate |
---|
| 217 | problems, while in Cbc heuristics such as the Feasibility Pump use them |
---|
| 218 | to decide whether to round up or down. So if a different pseudo-random |
---|
| 219 | seed is given to Clp then you may get a different continuous optimum and |
---|
| 220 | so different cuts and heuristic solutions. This can be switched on by |
---|
| 221 | setting randomSeed for Clp and/or randomCbcSeed for Cbc. The special |
---|
| 222 | value of 0 tells code to use time of day for initial seed. |
---|
| 223 | |
---|
| 224 | * Building on this idea, Andrea Lodi, Matteo Fischetti, Michele Monaci, |
---|
| 225 | Domenico Salvagnin, Yuji Shinano, and Andrea Tramontani suggest that this |
---|
| 226 | idea be improved by running at the root node with multiple copies of |
---|
| 227 | solver, each with its own different seed and then passing in the |
---|
| 228 | solutions and cuts so that the main solver has a richer set of solutions |
---|
| 229 | and possibly stronger cuts. This is switched on by setting |
---|
| 230 | -multipleRootPasses. These can also be done in parallel. |
---|
| 231 | |
---|
| 232 | * Few changes to presolve for special variables and badly scaled problems |
---|
| 233 | (in CoinUtils). |
---|
[1803] | 234 | |
---|
[2139] | 235 | * New option -extraVariables <number> which switches on a trivial |
---|
| 236 | re-formulation that introduces extra integer variables to group together |
---|
| 237 | variables with same cost. |
---|
[1785] | 238 | |
---|
[2139] | 239 | * For some problems, cut generators and general branching work better if |
---|
| 240 | the problem would be infeasible if the cost is too high. If the new |
---|
| 241 | option -constraintFromCutoff is set, the objective function is added as a |
---|
| 242 | constraint which rhs is set to the current cutoff value (objective value |
---|
| 243 | of best known solution). |
---|
[1785] | 244 | |
---|
[2139] | 245 | * Release 2.7.8: |
---|
[1785] | 246 | |
---|
[2139] | 247 | * Change message when LP simplex iteration limit is hit from "Exiting on |
---|
| 248 | maximum nodes" to "Exiting on maximum number of iterations" |
---|
| 249 | * Fix for using overlapping SOS. |
---|
| 250 | * Fixes in buildsystem. |
---|
[1785] | 251 | |
---|
[2139] | 252 | * Release 2.7.7: |
---|
[1785] | 253 | |
---|
[2139] | 254 | * Fix to report interruption on user event if SIGINT is received by |
---|
| 255 | CbcSolver. model->status() should now be 5 if this event happened. Added |
---|
| 256 | method CbcModel::sayEventHappened() to make cbc stop due to an 'user |
---|
| 257 | event'. |
---|
[1785] | 258 | |
---|
[2139] | 259 | * Other minor fixes. |
---|
[1785] | 260 | |
---|
[2139] | 261 | * Release 2.7.6: |
---|
[1785] | 262 | |
---|
[2139] | 263 | * Fixes to build system. |
---|
[1785] | 264 | |
---|
[2139] | 265 | * Other minor fixes. |
---|
[1785] | 266 | |
---|
[2139] | 267 | * Release 2.7.5: |
---|
[1785] | 268 | |
---|
[2139] | 269 | * Fixes to get AMPL interface working again. |
---|
[1785] | 270 | |
---|
[2139] | 271 | * More fixes to MSVC++ files. |
---|
[1785] | 272 | |
---|
[2139] | 273 | * Release 2.7.4: |
---|
[1785] | 274 | |
---|
[2139] | 275 | * Minor bugfixes. |
---|
[1729] | 276 | |
---|
[2139] | 277 | * Release 2.7.3: |
---|
[1729] | 278 | |
---|
[2139] | 279 | * Minor bugfixes. |
---|
[1729] | 280 | |
---|
[2139] | 281 | * Fixes to MSVC++ files. |
---|
[1729] | 282 | |
---|
[2139] | 283 | * Release 2.7.2: |
---|
[1729] | 284 | |
---|
[2139] | 285 | * Allow row/column names for GMPL models. |
---|
[1729] | 286 | |
---|
[2139] | 287 | * Added CbcModel::haveMultiThreadSupport() to indicate whether Cbc library |
---|
| 288 | has been compiled with multithread support. |
---|
[1729] | 289 | |
---|
[2139] | 290 | * Added CbcModel::waitingForMiniBranchAndBound() to indicate whether |
---|
| 291 | sub-MIP heuristic is currently running. |
---|
[1729] | 292 | |
---|
[2139] | 293 | * Cbc shell should work with readline if configured with |
---|
| 294 | ```--enable-gnu-packages```. |
---|
[1729] | 295 | |
---|
[2139] | 296 | * Support for compressed input files (.gz, .bz2) is now enabled by default. |
---|
[1703] | 297 | |
---|
[2139] | 298 | * Fix problems with relative gap tolerance > 100% and further bugs. |
---|
[1703] | 299 | |
---|
[2139] | 300 | * Fixes for MSVC++ Version 9 files. |
---|
[2] | 301 | |
---|
[2139] | 302 | * Minor fixes in buildsystem; update to BuildTools 0.7.1. |
---|
[2] | 303 | |
---|
[2139] | 304 | * Release 2.7.1: |
---|
[2] | 305 | |
---|
[2139] | 306 | * Fixes to MSVC++ files |
---|
[2] | 307 | |
---|
[2139] | 308 | * Release 2.7.0: |
---|
[2] | 309 | |
---|
[2139] | 310 | * License has been changed to the EPL. |
---|
[2] | 311 | |
---|
[2139] | 312 | * Support for MSVC++ version 10 added. |
---|
[2] | 313 | |
---|
[2139] | 314 | * Support for BuildTools version 0.7 to incorporate recent enhancements, |
---|
| 315 | including proper library versioning in Linux, prohibiting installation of |
---|
| 316 | private headers, etc. |
---|
[2] | 317 | |
---|
[2139] | 318 | * Updated externals to new stable versions of dependent projects. |
---|
[2] | 319 | |
---|
[2139] | 320 | * Improvements to heuristics. |
---|
[1703] | 321 | |
---|
[2139] | 322 | * New options for cut generation. |
---|
[1703] | 323 | |
---|
[2139] | 324 | * Improved reporting of results. |
---|
[1703] | 325 | |
---|
[2139] | 326 | * Improvements to documentation. |
---|
[1703] | 327 | |
---|
[2139] | 328 | * Minor bug fixes. |
---|
[1703] | 329 | |
---|
| 330 | |
---|