source: trunk/README.md @ 2514

Last change on this file since 2514 was 2514, checked in by unxusr, 4 months ago

include action guess in changelog

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