source: html/trunk/Cbc/ch02.html @ 554

Last change on this file since 554 was 554, checked in by rlh, 16 years ago

initial import of Cbc documentation

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.5 KB
1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2. 
2  Basic Model Classes
3  </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="index.html" title="CBC User Guide"><link rel="previous" href="ch01s02.html" title="
4  Prerequisites
5  "><link rel="next" href="ch02s02.html" title="
6  First Example
7  "></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. 
8  Basic Model Classes
9  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s02.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="cbcmodelclass"></a>Chapter 2. 
10  Basic Model Classes
11  </h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="ch02.html#hierarchy">
12  Hierarchy and list of classes
13  </a></dt><dt><a href="ch02s02.html">
14  First Example
15  </a></dt><dt><a href="ch02s03.html">
16  Getting at the Solution (CbcModel methods)
17  </a></dt><dt><a href="ch02s04.html">Some Useful Set and Get Methods</a></dt><dt><a href="ch02s05.html">
18  Methods which have a major impact on solution process
19  </a></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="hierarchy"></a>
20  Hierarchy and list of classes
21  </h2></div></div><div></div></div><p>
22  The class that controls Coin Branch and Cut is CbcModel.  This is where most
23  of the parameter setting is done.  CbcModel uses other classes some of
24  which are virtual and may have multiple instances.  More details on the more
25  useful classes will be given later.
26  The absolute minimum number of actions for CbcModel is:
27  <tt class="function">CbcModel(OsiSolverInterface &amp; linearSolver)</tt> as constructor,
28  and <tt class="function">branchAndBound()</tt> for solving the problem.
29  </p><div class="table"><a name="id2896498"></a><p class="title"><b>Table 2.1. 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>
30    Class name
31    </th><th>
32    Description
33    </th><th>
34    Notes
35    </th></tr></thead><tbody><tr><td align="left" valign="top">
36      CbcCompareBase
37      </td><td align="left" valign="top">
38      Controls choice of next node on tree
39      </td><td align="left" valign="top">
40      Default is CbcCompareDefault, others in CbcCompareActual.hpp include
41      CbcCompareDepth and CbcCompareObjective.  Very easy for user to
42      experiment.
43      </td></tr><tr><td align="left" valign="top">
44      CbcCutGenerator
45      </td><td align="left" valign="top">
46      Is a CglCutGenerator with data to decide when to use.
47      </td><td align="left" valign="top">
48      Need to know how to add generator to CbcModel.
49      Not much need to know about details of class.
50      </td></tr><tr><td align="left" valign="top">
51      CbcHeuristic
52      </td><td align="left" valign="top">
53      Heuristic to try and get valid solutions
54      </td><td align="left" valign="top">
55      User can get a lot of value out of coding this.  There can be
56      as many as you like.
57      </td></tr><tr><td align="left" valign="top">
58      CbcObject
59      </td><td align="left" valign="top">
60      Definition of what it means for a variable to be satisfied.
61      </td><td align="left" valign="top">
62      Virtual - instances include simple integer, simple integer with pseudocosts,
63      SOS (type 1 and 2) and lotsizing. (found in CbcBranch..hpp).  An object has to
64      have a method of generating a branching object which defines an up and down
65      branch.
66      </td></tr><tr><td align="left" valign="top">
67      OsiSolverInterface
68      </td><td align="left" valign="top">
69      Defines the solver being used and the LP model.  Is normally
70      passed across to CbcModel before branch and cut.
71      </td><td align="left" valign="top">
72      Virtual class - the user would instantiate a particular solver e.g.
73      OsiClpSolverInterface or OsiXprSolverInterface.
74      </td></tr></tbody></table></div><div class="table"><a name="id2897749"></a><p class="title"><b>Table 2.2. 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>
75    Class name
76    </th><th>
77    Description
78    </th><th>
79    Notes
80    </th></tr></thead><tbody><tr><td align="left" valign="top">
81      CbcBranchDecision
82      </td><td align="left" valign="top">
83      Part of code for choosing which variable to branch on.  Most of
84      work is done by definitions in CbcObject
85      </td><td align="left" valign="top">
86      Defaults to CbcBranchDefaultDecision
87      Not much need to know about.
88      </td></tr><tr><td align="left" valign="top">
89      CbcCountRowCut
90      </td><td align="left" valign="top">
91      Interface to OsiRowCut but counts use so can gracefully vanish.
92      </td><td align="left" valign="top">
93      See OsiRowCut for extra information.
94      Not much need to know about.
95      </td></tr><tr><td align="left" valign="top">
96      CbcNode
97      </td><td align="left" valign="top">
98      Controls choice of variable/entity to branch on
99      </td><td align="left" valign="top">
100      Controlled via CbcModel parameters.
101      Not much need to know about.
102      </td></tr><tr><td align="left" valign="top">
103      CbcNodeInfo
104      </td><td align="left" valign="top">
105      Contains data for bounds, basis etc for one node of tree
106      </td><td align="left" valign="top">
107      Not much need to know about (header in CbcNode.hpp).
108      </td></tr><tr><td align="left" valign="top">
109      CbcTree
110      </td><td align="left" valign="top">
111      How tree is stored
112      </td><td align="left" valign="top">
113      Can be changed but unlikely.
114      Not much need to know about.
115      </td></tr><tr><td align="left" valign="top">
116      CoinMessageHandler
117      </td><td align="left" valign="top">
118      Deals with message handling
119      </td><td align="left" valign="top">
120      User can inherit from to specialize message handling. 
121      Not much need to know about.
122      </td></tr><tr><td align="left" valign="top">
123      CoinWarmStartBasis
124      </td><td align="left" valign="top">
125      Representation of a basis to be used by solver
126      </td><td align="left" valign="top">
127      Not much need to know about.
128      </td></tr></tbody></table></div></div><tt class="function">double getIntegerTolerance()</tt> and
129  <tt class="function">setIntegerTolerance(double)</tt>.  An integer variable
130  is deemed to be at an integral value if it is no further than this tolerance
131  away.
132  </div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">
133  Prerequisites
134   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 
135  First Example
136  </td></tr></table></div></body></html>
Note: See TracBrowser for help on using the repository browser.