source: html/ch02s06.html @ 2261

Last change on this file since 2261 was 561, checked in by ladanyi, 12 years ago

Cbc static pages moved

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
1<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
2<html xmlns=""><head><title>
3  Impacting the Solution Process
4  </title><meta name="generator" content="DocBook XSL Stylesheets V1.61.2"/><link rel="home" href="index.html" title="CBC User Guide"/><link rel="up" href="ch02.html" title="Chapter 2. &#10;   The CBC Model Class&#10;  "/><link rel="previous" href="ch02s05.html" title="&#10;   Useful Set and Get Methods in CbcModel&#10;  "/><link rel="next" href="ch03.html" title="Chapter 3. &#10;  Selecting the Next Node in the Search Tree&#10;  "/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">
5  Impacting the Solution Process
6  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><th width="60%" align="center">Chapter 2. 
7   The CBC Model Class
8  </th><td width="20%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr></table><hr/></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="majormethods"/>
9  Impacting the Solution Process
10  </h2></div></div><div/></div><p>
11<tt class="classname">CbcModel</tt> is extremely flexible and customizable. The class structure of CBC is designed to make the most commonly desired customizations of branch-and-cut possible. These include:
12    </p><div class="itemizedlist"><ul type="disc"><li>
13     selecting the next node to consider in the search tree,
14    </li><li>
15    determining which variable to branch on,
16    </li><li>
17    using heuristics to generate MIP-feasible solutions quickly,
18    </li><li>
19    including cut generation when solving the LP-relaxations, and
20    </li><li>
21    invoking customized subproblem solvers.
22    </li></ul></div><p>
25To enable this flexibility,  <tt class="classname">CbcModel</tt> uses other classes in CBC (some of which are virtual and may have multiple instances). Not all classes are created equal. The two tables below list in alphabetical order the classes used by <tt class="classname">CbcModel</tt> that are of most interest and of least interest.
26</p><div class="table"><a id="id2995221"/><p class="title"><b>Table 2.3. Classes Used by CbcModel - Most Useful</b></p><table summary="Classes Used by CbcModel - Most Useful" border="0"><colgroup><col/><col/><col/></colgroup><thead><tr><th>
27    Class name
28    </th><th>
29    Description
30    </th><th>
31    Notes
32    </th></tr></thead><tbody><tr><td align="left" valign="top"><tt class="classname">CbcCompareBase</tt></td><td align="left" valign="top">
33      Controls which node on the tree is selected.
34      </td><td align="left" valign="top">
35      The default is <tt class="classname">CbcCompareDefault</tt>. Other comparison classes in <tt class="filename">CbcCompareActual.hpp</tt> include <tt class="classname">CbcCompareDepth</tt> and <tt class="classname">CbcCompareObjective</tt>. Experimenting with these classes and creating new compare classes is easy.
36      </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcCutGenerator</tt></td><td align="left" valign="top">
37      A wrapper for <tt class="classname">CglCutGenerator</tt> with additional data to control when the cut generator is invoked during the tree search.
38      </td><td align="left" valign="top">
39      Other than knowing how to add a cut generator to <tt class="classname">CbcModel</tt>, there is not much the average user needs to know about this class. However, sophisticated users can implement their own cut generators. </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcHeuristic</tt></td><td align="left" valign="top">
40      Heuristic that attempts to generate valid MIP-solutions leading to good upper bounds.
41      </td><td align="left" valign="top">
42      Specialized heuristics can dramatically improve branch-and-cut performance. As many different heuristics as desired can be used in CBC. Advanced users should consider implementing custom heuristics when tackling difficult problems. </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcObject</tt></td><td align="left" valign="top">
43      Defines what it means for a variable to be satisfied. Used in branching.
44      </td><td align="left" valign="top">
45      Virtual class. CBC's concept of branching is based on the idea of an "object". An object has (i) a feasible region, (ii) can be evaluated for infeasibility, (iii) can be branched on, e.g., a method of generating a branching object, which defines an up branch and a down branch, and (iv) allows comparison of the effect of branching. Instances of objects include <tt class="classname">CbcSimpleInteger</tt>, <tt class="classname">CbcSimpleIntegerPseudoCosts</tt>, <tt class="classname">CbcClique</tt>, <tt class="classname">CbcSOS</tt> (type 1 and 2), <tt class="classname">CbcFollowOn</tt>, and <tt class="classname">CbcLotsize</tt>.
46      </td></tr><tr><td align="left" valign="top"><tt class="classname">OsiSolverInterface</tt></td><td align="left" valign="top">
47      Defines the LP solver being used and the LP model. Normally
48      a pointer to the desired <tt class="classname">OsiSolverInteface</tt> is passed to <tt class="classname">CbcModel</tt> before branch and cut.
49      </td><td align="left" valign="top">
50      Virtual class. The user instantiates the solver interface of their choice, e.g.,
51      <tt class="classname">OsiClpSolverInterface</tt>.
52      </td></tr></tbody></table></div><p>
53There is not much about the classes listed in <a href="ch02s06.html#least" title="Table 2.4. Classes Used by CbcModel - Least Useful">Table 2.4</a> that the average user needs to know about.
54</p><div class="table"><a id="least"/><p class="title"><b>Table 2.4. Classes Used by CbcModel - Least Useful</b></p><table summary="Classes Used by CbcModel - Least Useful" border="0"><colgroup><col/><col/><col/></colgroup><thead><tr><th>
55    Class name
56    </th><th>
57    Description
58    </th><th>
59    Notes
60    </th></tr></thead><tbody><tr><td align="left" valign="top"><tt class="classname">CbcBranchDecision</tt></td><td align="left" valign="top">
61      Used in choosing which variable to branch on, however, most of
62      the work is done by the definitions in <tt class="classname">CbcObject</tt>.
63      </td><td align="left" valign="top">
64      Defaults to <tt class="classname">CbcBranchDefaultDecision</tt>.
65      </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcCountRowCut</tt></td><td align="left" valign="top">
66      Interface to <tt class="classname">OsiRowCut</tt>. It counts the usage so cuts can gracefully vanish.
67      </td><td align="left" valign="top">
68      See <tt class="classname">OsiRowCut</tt> for more details. </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcNode</tt></td><td align="left" valign="top">
69      Controls which variable/entity is selected to be branch on.
70      </td><td align="left" valign="top">
71      Controlled via <tt class="classname">CbcModel</tt> parameters. Information from <tt class="classname">CbcNode</tt> can be useful in creating customized node selection rules.  </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcNodeInfo</tt></td><td align="left" valign="top">
72      Contains data on bounds, basis, etc. for one node of the search tree.
73      </td><td align="left" valign="top">
74      Header is located in <tt class="filename">CbcNode.hpp</tt>. </td></tr><tr><td align="left" valign="top"><tt class="classname">CbcTree</tt></td><td align="left" valign="top">
75      Defines how the search tree is stored.
76      </td><td align="left" valign="top">
77      This class can be changed but it is not likely to be modified.</td></tr><tr><td align="left" valign="top"><tt class="classname">CoinMessageHandler</tt></td><td align="left" valign="top">
78      Deals with message handling
79      </td><td align="left" valign="top">
80      The user can inherit from <tt class="classname">CoinMessageHandler</tt> to specialize message handling. 
81      </td></tr><tr><td align="left" valign="top"><tt class="classname">CoinWarmStartBasis</tt></td><td align="left" valign="top">
82      Basis representation to be used by solver
83      </td><td align="left" valign="top"/></tr></tbody></table></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">
84   Useful Set and Get Methods in CbcModel
85   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. 
86  Selecting the Next Node in the Search Tree
87  </td></tr></table></div></body></html>
Note: See TracBrowser for help on using the repository browser.