source: html/trunk/Clp/userguide/ch03.html @ 956

Last change on this file since 956 was 956, checked in by ddelanu, 16 years ago

First revision of user guide

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 KB
Line 
1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 3. 
2  Not-Quite-So-Basic Model Classes
3  </title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="CLP User Manual"><link rel="up" href="index.html" title="CLP User Manual"><link rel="previous" href="ch02s09.html" title="Status Array"><link rel="next" href="ch03s02.html" title="Matrix Classes"></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 3. 
4  Not-Quite-So-Basic Model Classes
5  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch03s02.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="notsobasic"></a>Chapter 3. 
6  Not-Quite-So-Basic Model Classes
7  </h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch03.html#pivotchoices">Pivot Choices</a></span></dt><dt><span class="section"><a href="ch03s02.html">Matrix Classes</a></span></dt><dt><span class="section"><a href="ch03s03.html">Message Handling</a></span></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pivotchoices"></a>Pivot Choices</h2></div></div><div></div></div><p>
8  In the dual algorithm, any infeasible basic variable may be chosen to leave the
9  basis.  Similarly in the primal algorithm, any non-basic variable with a
10  "bad" reduced cost may be chosen to enter the basis.  This choice is
11  probably the most important factor in determining the number of iterations it
12  will take to solve a problem.  Clp provides a abstract base class for each case
13  and then instances of each.  It is relatively simple for an advanced user to
14  create new instances.
15  </p><p>
16  For the dual method the base class is <tt class="function">ClpDualRowPivot</tt>.
17  The two existing instances are <tt class="function">ClpDualRowDantzig</tt> and
18  <tt class="function">ClpDualRowSteepest</tt>.  The Dantzig version implements the
19  "standard" pivot rule: choose the  most violated basic variable.  It
20  is easily dominated by the Steepest instance which should normally be used.  The
21  default is to use un-initialized weights where the initial weight for each basic
22  variable is 1.0.  If an all-slack basis is being used then these are the correct
23  weights.  To use a version which calculates the weights, create an instance and
24  pass it to ClpSimplex model as in the following code fragment:
25  </p><pre class="programlisting">
26  ClpDualRowSteepest steep(1); // 0 uninitialized, 1 compute weights
27  model.setDualRowPivotAlgorithm(steep);
28  </pre><p>Similarly for the primal method the base class is
29  <tt class="function">ClpPrimalColumnPivot</tt>.  The two existing instances are
30  <tt class="function">ClpPrimalColumnDantzig</tt> and
31  <tt class="function">ClpPrimalColumnSteepest</tt>.  The Dantzig version implements
32  "standard" pivot rule: choose the most "violated" non-basic
33  variable.  It is dominated by the Steepest instance which should normally be
34  used.  The default is to use exact Devex where the initial weight for each
35  non-basic variable is 1.0.  Unlike for the dual, this is never the same as
36  normal steepest edge.  To use a version which does steepest edge create an
37  instance and pass it to ClpSimplex model as in the following code fragment:
38  </p><pre class="programlisting">
39  ClpPrimalColumnSteepest steep(1); // 0 devex, 1 steepest
40  model.setPrimalColumnPivotAlgorithm(steep);
41  </pre><p>
42  The partial pricing scheme (for long, thin problems) currently does not
43  exist.  This could be implemented by anyone who is interested.
44  </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.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="ch03s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Status Array </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Matrix Classes</td></tr></table></div></body></html>
Note: See TracBrowser for help on using the repository browser.