Changeset 479


Ignore:
Timestamp:
Oct 17, 2004 6:45:07 PM (15 years ago)
Author:
ddelanu
Message:

Update for INFORMS server, not necessarily release version

Location:
trunk/Docs
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Docs/basicmodelclasses.xml

    r443 r479  
    99  </title>
    1010  <para>
    11   The basic model class hierarchy is simple.  The top three levels of the
     11  The basic CLP model class hierarchy is simple.  The top three levels of the
    1212  hierarchy are depicted in the figure below. The first two levels  (i.e.
    1313  <classname>ClpModel</classname>, <classname>ClpSimplex</classname>,
    14   <classname>ClpInterior</classname>) contain all the problem data which defines
    15   a model (aka, a problem instance). The third level is less model and more
    16   algorithmic.  There is a fourth level (for models with more general
    17   objectives than linear ones), but it is beyond the current scope of this
    18   document. 
     14  <classname>ClpInterior</classname>) contain all the problem data which define
     15  a model (that is, a problem instance). The third level contains most of the
     16  algorithmic aspects of CLP.  There is a fourth level (for models with more general
     17  objectives than linear ones), but a description of it is beyond the current scope
     18  of this document.
    1919  </para>
    2020  <mediaobject>
     
    3030    </imageobject>
    3131  </mediaobject>
    32   <para>
    33   The class <classname>ClpModel</classname> contains all problem data.
     32  <!-- Not appropriate here and not entirely correct as worded!
     33  <para>
     34  The class <classname>ClpModel</classname> contains most of the  problem data.
    3435  There may be a few pieces of data which could be elsewhere but which are
    3536  permanent and so they are here.  The main example of this is a status array:
     
    4546  <classname>ClpModel</classname> class.
    4647  </para>
    47   <para>
    48   From the point of view of most Simplex users, the
    49   <classname>ClpModel</classname> and <classname>ClpSimplex</classname>
    50   classes are all one needs to know about.  There are algorithm-specific classes
    51   which inherit from <classname>ClpSimplex</classname> (e.g.
    52   <classname>ClpSimplexDual</classname> and
    53   <classname>ClpSimplexPrimal</classname>), but they have no member data and
    54   very rarely need be visible to the user.  So, for example, after instantiating an
    55   object <userinput>model</userinput> of type <classname>ClpSimplex</classname>,
    56   the user would use <userinput>model.dual()</userinput> to invoke dual algorithm.
     48  -->
     49  <para>
     50  Most Simplex users need only concern themselves with the classes
     51  <classname>ClpModel</classname> and <classname>ClpSimplex</classname>.  There
     52  are algorithm-specific classes which inherit from
     53  <classname>ClpSimplex</classname> (e.g. <classname>ClpSimplexDual</classname>
     54  and <classname>ClpSimplexPrimal</classname>), but they have no member data and
     55  rarely need be visible to the user.  These  classes are cast at algorithm
     56  time.  So, for example, after instantiating an object
     57  <userinput>model</userinput> of type <classname>ClpSimplex</classname>,
     58  a user only need call <userinput>model.dual()</userinput> to invoke the dual
     59  simplex method.
    5760  </para>
    5861  </section>
     
    6265  </title>
    6366  <para>
    64   Below is our first CLP example code.  It is short enough to present in full.
    65   Most of the remaining examples in this Guide will take the form of small code
    66   fragments.
     67  Below is our first CLP sample program.  It is short enough to present in full
     68  (this code can be found in the CLP Samples directory, see
     69  <xref linkend="moreexamples"/>).  Most of the remaining examples in this Guide
     70  will take the form of small code fragments.
    6771  </para>
    6872  <example>
     
    9195  </example>
    9296  <para>
    93   This sample program creates a default <classname>ClpSimplex</classname> model,
     97  This sample program creates a <classname>ClpSimplex</classname> model,
    9498  reads an MPS file, and if there are no errors, solves it using the primal
    95   algorithm.  Simple, but not terribly useful: there is no way to inspect the
    96   results of the solve.  There are two main kinds of results: a status saying
    97   what happened to the model, and arrays filled with the solution values.
     99  algorithm.  The program is easy to follow, but it is not terribly useful:
     100  it does not attempt to inspect the results of the solve.  There are two main
     101  kinds of results: a &quot;status&quot; describing what happened to the model
     102  during the solve, and arrays filled with solution values.  Both will be
     103  addressed in this chapter.
    98104  </para>
    99105  </section>
     
    117123  <function>isIterationLimitReached()</function> or the feared
    118124  <function>isAbandoned()</function>.  Should one prefer the OSL way of doing
    119   things, model.status() returns as it would in OSL-land, so 0 means optimal,
     125  things, model.status() returns as it would in OSL, so 0 means optimal,
    120126  1 means  primal infeasible etc.
    121127  </para>
    122128  <para>
    123   Similarly, to pick up the solution values, we can inhabit the virtuous OSI-land
    124   or the not-quite-so-virtuous CLP-land.  By this it is meant that there are
    125   const and non-const forms of arrays.  It is easier to deal with the non-const
    126   versions, so most of the later elaborate algorithms use them.
    127   </para>
    128 
     129  Similarly, to pick up the solution values, one could inhabit the virtuous
     130  world of OSI, or the not-quite-so-virtuous world of OSL and &quot;pure&quot;
     131  CLP.  By this it is meant that const and non-const forms of arrays are used,
     132  respectively.  It is easier to deal with the non-const versions, so most of
     133  the elaborate algorithms in CLP and its
     134  <link linkend="moresamples">Samples</link> use them.
     135  </para>
    129136  <table frame="none">
    130137  <title>
     
    141148      </entry>
    142149      <entry>
    143       CLP style (less virtuous)
     150      CLP-style (less virtuous)
    144151      </entry>
    145152    </row>
     
    221228  reaction to when one of the authors was young and 5 or 6 letters was the
    222229  maximum in FORTRAN for any name or to early days with OSL when seven characters
    223   were allowed but the first three had to be &quot;EKK&quot;! 
    224   </para>
    225   <para>
    226   Using the above-listed functions, our initial example might be continued as follows:
     230  were allowed but the first three had to be &quot;ekk&quot;! 
     231  </para>
     232  <para>
     233  Using the above-listed functions, our
     234  <link linkend="firstexample">initial example</link> might be continued as follows:
    227235  </para>
    228236  <example>
     
    258266  dual solutions.  How to additionally print row and column names is
    259267  illustrated in the <filename>defaults.cpp</filename> file in the
    260   &quot;Samples&quot; directory (the &quot;Samples&quot; are properly addressed
     268  &quot;Samples&quot; directory (the Samples are properly addressed
    261269  in <xref linkend="moreexamples" />).  This sample is also useful as it
    262270  explicitly performs default actions (e.g. it sets the primal feasiblility
     
    264272  </para>
    265273  <para>
    266   The remainder of this chapter will show some more of the basic tasks a user
    267   might want to perform.  Apart from presolve we will only be looking at actions
     274  The remainder of this chapter will show  more of the basic CLP tasks a user
     275  might wish to perform.  Apart from presolve we will only be looking at actions
    268276  which can be performed when including the single header file
    269277  <filename>COIN/Clp/include/ClpSimplex.hpp</filename>.
  • trunk/Docs/clpuserguide.xml

    r443 r479  
    1515  <!ENTITY revhist SYSTEM "revhist.xml">
    1616
     17  <!ENTITY coinweb "http://www.coin-or.org/">
    1718  <!ENTITY cvsweb "http://www-124.ibm.com/developerworks/opensource/cvs/coin/">
    1819  <!ENTITY clpsamplesdir "COIN/Clp/Samples/">
     20
     21  <!ENTITY defaultscpp "<ulink url='&cvsweb;&clpsamplesdir;defaults.cpp'><filename>defaults.cpp</filename></ulink>">
     22  <!ENTITY drivercpp "<ulink url='&cvsweb;&clpsamplesdir;driver.cpp'><filename>driver.cpp</filename></ulink>">
     23  <!ENTITY driver2cpp "<ulink url='&cvsweb;&clpsamplesdir;driver2.cpp'><filename>driver2.cpp</filename></ulink>">
     24  <!ENTITY minimumcpp "<ulink url='&cvsweb;&clpsamplesdir;minimum.cpp'><filename>minimum.cpp</filename></ulink>">
     25  <!ENTITY decomposecpp "<ulink url='&cvsweb;&clpsamplesdir;decompose.cpp'><filename>decompose.cpp</filename></ulink>">
     26  <!ENTITY piececpp "<ulink url='&cvsweb;&clpsamplesdir;piece.cpp'><filename>piece.cpp</filename></ulink>">
     27  <!ENTITY networkcpp "<ulink url='&cvsweb;&clpsamplesdir;network.cpp'><filename>network.cpp</filename></ulink>">
     28  <!ENTITY sprintcpp "<ulink url='&cvsweb;&clpsamplesdir;sprint.cpp'><filename>sprint.cpp</filename></ulink>">
     29  <!ENTITY sprint2cpp "<ulink url='&cvsweb;&clpsamplesdir;sprint2.cpp'><filename>sprint2.cpp</filename></ulink>">
     30  <!ENTITY ekkcpp "<ulink url='&cvsweb;&clpsamplesdir;ekk.cpp'><filename>ekk.cpp</filename></ulink>">
     31  <!ENTITY hellocpp "<ulink url='&cvsweb;&clpsamplesdir;hello.cpp'><filename>hello.cpp</filename></ulink>">
     32  <!ENTITY testbarriercpp "<ulink url='&cvsweb;&clpsamplesdir;testBarrier.cpp'><filename>testBarrier.cpp</filename></ulink>">
     33  <!ENTITY dualcutscpp "<ulink url='&cvsweb;&clpsamplesdir;dualCuts.cpp'><filename>dualCuts.cpp</filename></ulink>">
     34  <!ENTITY testgubcpp "<ulink url='&cvsweb;&clpsamplesdir;testGub.cpp'><filename>testGub.cpp</filename></ulink>">
     35  <!ENTITY testbasiscpp "<ulink url='&cvsweb;&clpsamplesdir;testBasis.cpp'><filename>testBasis.cpp</filename></ulink>">
     36  <!ENTITY usevolumecpp "<ulink url='&cvsweb;&clpsamplesdir;useVolume.cpp'><filename>useVolume.cpp</filename></ulink>">
    1937]>
    2038<book id="clpuserguide" lang="en">
    2139<bookinfo>
    22 <title>CLP User Manual</title>
     40<title>CLP User Guide</title>
    2341  &authors;
    2442  &legal;
  • trunk/Docs/doxygen.xml

    r412 r479  
    11<?xml version="1.0" encoding="ISO-8859-1"?>
    2 <appendix>
     2<appendix id="doxygen">
    33<title>Doxygen</title>
    44<para>
    55There is Doxygen content for CLP available online at
    6 <ulink url="http://www.coin-or.orgDoxygen/Clp/index.html">
    7 http://www.coin-or.orgDoxygen/Clp/index.html</ulink>.
     6<ulink url="http://www.coin-or.org/Doxygen/Clp/index.html">
     7http://www.coin-or.org/Doxygen/Clp/index.html</ulink>.  A local version of the
     8Doxygen content can be generated from the CLP distribution.  To do so, in the
     9directory <filename>COIN/Clp</filename>, enter <userinput>make doc</userinput>.
     10The Doxygen content will be created in the directory
     11<filename>COIN/Clp/Doc/html</filename>.  The same can be done for
     12the COIN core, from the <filename>COIN/Coin</filename> directory.
    813</para>
    914</appendix>
  • trunk/Docs/faqcontent.xml

    r444 r479  
    2727  (DN 08/27/04) CLP includes primal and dual Simplex solvers.  Both dual and primal algorithms
    2828  can use matrix storage methods provided by the user (0-1 and network matrices
    29   are already supported in addition the default sparse matrix). The dual algorithm
     29  are already supported in addition to the default sparse matrix). The dual algorithm
    3030  has Dantzig and Steepest edge row pivot choices; new ones may be provided by
    3131  the user. The same is true for the column pivot choice of the primal algorithm.
     
    4444  <para>
    4545  (DN 08/27/04) Please see the
    46   <ulink url="http://www.coin-or.org/faqs.html/">COIN-OR FAQ</ulink>
     46  <ulink url="http://www.coin-or.org/faqs.html">COIN-OR FAQ</ulink>
    4747  for details on how to
    48   <ulink url="http://www.coin-or.org/faqs.html/#ObtainSrcCode">obtain</ulink>
     48  <ulink url="http://www.coin-or.org/faqs.html#ObtainSrcCode">obtain</ulink>
    4949  and
    50   <ulink url="http://www.coin-or.org/faqs.html/#BuildCode">install</ulink>
     50  <ulink url="http://www.coin-or.org/faqs.html#BuildCode">install</ulink>
    5151  COIN-OR modules.
    5252  </para>
     
    6666  <ulink url="http://www.coin-or.org/faqs.html#SBB">SBB</ulink>
    6767  (&quot;Simple Branch and Bound&quot;, which is used to solve integer
    68   programs, but more testing is needed before it can get to version 1.0.
     68  programs), but more testing is needed before it can get to version 1.0.
    6969  </para>
    7070  </answer>
     
    8484  <listitem>
    8585  <para>
    86   Linux using g++ version 3.1.1 (or later).
     86  Linux using g++ version 3.1.1 (or later)
    8787  </para>
    8888  </listitem>
     
    113113  <answer>
    114114  <para>
    115   (DN 08/27/04) A User Guide should be available in time for the release of version 1.0 of CLP.
     115  (DN 09/16/04) An early release of a User Guide is available on the
     116  <ulink url="http://www.coin-or.org/Clp/documentation.html">CLP documentation webpage</ulink>.
    116117  Also available is a list of
    117   <ulink url="http://www.coin-or.org/Doxygen/Clp/">CLP class descriptions</ulink>.
    118   More on CLP documentation is available on the
    119   <ulink url="http://www.coin-or.org/Clp/documentation.html">CLP documentation webpage</ulink>.
     118  <ulink url="http://www.coin-or.org/Doxygen/Clp/">CLP class descriptions</ulink> generated
     119  by <ulink url="http://www.doxygen.org">Doxygen</ulink>.
    120120  </para>
    121121  </answer>
     
    129129  <answer>
    130130  <para>
    131    (DN 08/27/04) It uses sparse matrix techniques designed for very large
     131   (DN 08/27/04) CLP uses sparse matrix techniques designed for very large
    132132   problems. The design criteria were for it not to be too slow. Some speed
    133    has been sacrificed to make the code less opaque than OSL (not
    134    difficult!).
     133   has been sacrificed to make the code less opaque OSL (not difficult!).
    135134  </para>
    136135  </answer>
     
    172171  <question>
    173172  <para>
     173  Which Cholesky factorizations codes are supported by CLP's barrier method?
     174  </para>
     175  </question>
     176  <answer>
     177  <para>
     178  (DN 09/16/04) The Cholesky interface is flexible enough so that a variety of Cholesky
     179  ordering and factorization codes can be used.  Interfaces are provided to each
     180  of the following:
     181  <itemizedlist>
     182  <listitem>
     183  <para>
     184  Anshul Gupta's WSSMP parallel enabled ordering and factorization code
     185  </para>
     186  </listitem>
     187  <listitem>
     188  <para>
     189  Sivan Toledo's TAUCS parallel enabled factorization code (the package includes
     190  third party ordering codes)
     191  </para>
     192  </listitem>
     193  <listitem>
     194  <para>
     195  University of Florida's Approximate Minimum Degree (AMD) ordering code (the
     196  CLP native factorization code is used with this ordering code)
     197  </para>
     198  </listitem>
     199  <listitem>
     200  <para>
     201  CLP native code: very weak ordering but competitive nonparallel factorization
     202  </para>
     203  </listitem>
     204  <listitem>
     205  <para>
     206  Fast dense factorization
     207  </para>
     208  </listitem>
     209  </itemizedlist>
     210  </para>
     211  </answer>
     212</qandaentry>
     213<qandaentry>
     214  <question>
     215  <para>
     216  When will CLP have a good native ordering?
     217  </para>
     218  </question>
     219  <answer>
     220  <para>
     221  (DN 09/16/04) The best outcome would be to have an existing ordering code available as part
     222  of the COIN distribution under the CPL.  However, if this is not possible, the
     223  native ordering will be made respectable.
     224  </para>
     225  </answer>
     226</qandaentry>
     227<qandaentry>
     228  <question>
     229  <para>
     230  Is the barrier code as mature as the simplex code?
     231  </para>
     232  </question>
     233  <answer>
     234  <para>
     235  (DN 09/16/04) The simplex code has been exposed to user testing for more than a year and
     236  and the principal author, John Forrest, knows more about simplex algorithms
     237  than interior point algorithms, so the answer is &quot;no&quot;.  However, it
     238  performs well on test sets and seems to be more reliable than some
     239  commercially available codes (including OSL).
     240  </para>
     241  </answer>
     242</qandaentry>
     243<qandaentry>
     244  <question>
     245  <para>
     246  Which algorithm should I use for quadratic programming and should I keep an
     247  eye open for any issues?
     248  </para>
     249  </question>
     250  <answer>
     251  <para>
     252  (DN 09/16/04) The interior point algorithm for quadratic programming is much more elegant
     253  and normally much faster than the quadratic simplex code.  Caution is
     254  suggested with the presolve as not all bugs have been found and squashed when
     255  a quadratic objective is used.  One may wish to switch off the crossover to a
     256  basic feasible solution as the simplex code can be slow.  The sequential
     257  linear code is useful as a &quot;crash&quot; to the simplex code; its
     258  convergence is poor but, say, 100 iterations could set up the problem well for
     259  the simplex code.
     260  </para>
     261  </answer>
     262</qandaentry>
     263<qandaentry>
     264  <question>
     265  <para>
    174266  What can the community do to help?
    175267  </para>
  • trunk/Docs/intro.xml

    r443 r479  
    1111  The COIN  Linear Program code or CLP is an open-source simplex solver written
    1212  in C++.  It is primarily meant to be used as a callable library, but a
    13   basic stand-alone executable version is also available.  This
    14   is the first edition of the User Guide, and is to be considered a work in
    15   progress.
     13  basic, stand-alone <link linkend="clpexe">executable</link> version is also
     14  available.
    1615  </para>
    1716  <para>
    18   This document is designed to be used in conjunction with the Samples
    19   subdirectory of the Clp directory (i.e. <filename>COIN/Clp/Samples</filename>).
    20   In the rare event that this document conflicts with the observed behavior of
    21   the source code, the comments in the header files (found in
    22   <filename>COIN/Clp/include</filename>) are the ultimate reference.
     17  There are a number of resources available to help new CLP users get started.
     18  This document is designed to be used in conjunction with the files in the
     19  Samples subdirectory of the main CLP directory (<filename>COIN/Clp/Samples</filename>).
     20  The Samples illustrate how to use CLP and may also serve as useful starting points
     21  for user projects.  In the rare event that either this document or the available
     22  <link linkend="doxygen">Doxygen content</link> conflicts with the observed
     23  behavior of the source code, the comments in the header files, found in
     24  <filename>COIN/Clp/include</filename>, are the ultimate reference.
    2325  </para>
    2426  </section>
     
    2830  </title>
    2931  <para>
    30   CLP is written in C++, so it is expected that a user of CLP will be writing
    31   C++ programs which use CLP.  Thus a working knowledge of
     32  CLP is written in C++, so it is expected that users of CLP will be writing
     33  C++ programs which use CLP as a library.  Thus a working knowledge of
    3234  <ulink url="http://www.cplusplus.com/doc/tutorial/">C++</ulink>, including basic
    3335  object-oriented programming terminology is assumed in this document.  In
  • trunk/Docs/legal.xml

    r412 r479  
    77CLP and this documentation are provided under the terms of the
    88<ulink url="http://opensource.org/licenses/cpl.php">Common Public License
    9 </ulink>.  Any use, reproduction or distribution of the programs constitutes
     9 (&quot;CPL&quot;)</ulink>.  Any use, reproduction or distribution of the programs constitutes
    1010the recipient's acceptance of the license.  The
    1111<ulink url="http://opensource.org/licenses/cpl.php">CPL</ulink> is approved by
  • trunk/Docs/moresamples.xml

    r443 r479  
    99The CLP dsitribution includes a number of <filename>.cpp</filename> sample files.
    1010Users are encouraged to use them as starting points for their own CLP projects.
    11 The files can be found in the <filename>COIN/Clp/Samples</filename> directory.
     11The files can be found in the <filename>&clpsamplesdir;</filename> directory.
    1212For the latest information on compiling and running these samples, please see
    13 the file <filename>COIN/Clp/Samples/INSTALL</filename>.  Below is a list of
     13the file <filename>&clpsamplesdir;INSTALL</filename>.  Below is a list of
    1414some of the most useful sample files with a short description for each file.
    1515</para>
    1616<table frame="none">
    17   <title>Contents of the Samples directory</title>
     17  <title>Basic Samples</title>
    1818  <tgroup cols="2">
    1919    <thead>
    2020      <row>
    2121        <entry align="left" valign="bottom">
    22         Filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     22        Source file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    2323        </entry>
    2424        <entry align="left" valign="bottom">
     
    3030      <row>
    3131        <entry align="left" valign="top">
    32         <ulink url="&cvsweb;&clpsamplesdir;minimum.cpp"><filename>minimum.cpp</filename></ulink>
    33         </entry>
    34         <entry align="left" valign="top">
    35         This is a CLP &quot;Hello, world&quot; program.  It reads an MPS file,
    36         and solves the problem.
    37         </entry>
    38       </row>
    39       <row>
    40         <entry align="left" valign="top">
    41         <ulink url="&cvsweb;&clpsamplesdir;defaults.cpp"><filename>defaults.cpp</filename></ulink>
     32        &minimumcpp;
     33        </entry>
     34        <entry align="left" valign="top">
     35        This is a CLP &quot;Hello, world&quot; program.  It reads a problem
     36        from an MPS file, and solves the problem.
     37        [<link linkend="minimumcppdesc">More...</link>]
     38        </entry>
     39      </row>
     40      <row>
     41        <entry align="left" valign="top">
     42        &defaultscpp;
    4243        </entry>
    4344        <entry align="left" valign="top">
     
    4647        of &quot;set&quot; and  &quot;get&quot; methods.  It also prints out full
    4748        MPS-like solutions.
    48         </entry>
    49       </row>
    50       <row>
    51         <entry align="left" valign="top">
    52         <ulink url="&cvsweb;&clpsamplesdir;driver.cpp"><filename>driver.cpp</filename></ulink>
     49        [<link linkend="defaultscppdesc">More...</link>]
     50        </entry>
     51      </row>
     52      <row>
     53        <entry align="left" valign="top">
     54        &drivercpp;
    5355        </entry>
    5456        <entry align="left" valign="top">
     
    5658        driver program for his or her project.  In particular, it demonstrates
    5759        the use of CLP's  presolve functionality.
    58         </entry>
    59       </row>
    60       <row>
    61         <entry align="left" valign="top">
    62         <ulink url="&cvsweb;&clpsamplesdir;piece.cpp"><filename>piece.cpp</filename></ulink>
    63         </entry>
    64         <entry align="left" valign="top">
    65         This simple example takes a matrix read in by
    66         <classname>CoinMpsIo</classname> (can be used to read in MPS files
    67         without a solver), deletes every second column and solves the
    68         resulting problem.
    69         </entry>
    70       </row>
    71       <row>
    72         <entry align="left" valign="top">
    73         <ulink url="&cvsweb;&clpsamplesdir;network.cpp"><filename>network.cpp</filename></ulink>
     60        [<link linkend="drivercppdesc">More...</link>]
     61        </entry>
     62      </row>
     63      <row>
     64        <entry align="left" valign="top">
     65        &networkcpp;
    7466        </entry>
    7567        <entry align="left" valign="top">
    7668        This shows the use of non-standard matrices and how to load a problem
    7769        without the use of MPS files.
    78         </entry>
    79       </row>
    80       <row>
    81         <entry align="left" valign="top">
    82         <ulink url="&cvsweb;&clpsamplesdir;decompose.cpp"><filename>decompose.cpp</filename></ulink>
     70        [<link linkend="networkcppdesc">More...</link>]
     71        </entry>
     72      </row>
     73      <row>
     74        <entry align="left" valign="top">
     75        &testbarriercpp;
     76        </entry>
     77        <entry align="left" valign="top">
     78        This is a basic driver file for the barrier method of CLP, similar to
     79        &minimumcpp;.  The barrier method is not currently addressed in this
     80        guide.
     81        [<link linkend="testbarriercppdesc">More...</link>]
     82        </entry>
     83      </row>
     84    </tbody>
     85  </tgroup>
     86</table>
     87<table frame="none">
     88  <title>Advanced Samples</title>
     89  <tgroup cols="2">
     90    <thead>
     91      <row>
     92        <entry align="left" valign="bottom">
     93        Source file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     94        </entry>
     95        <entry align="left" valign="bottom">
     96        Description
     97        </entry>
     98      </row>
     99    </thead>
     100    <tbody>
     101      <row>
     102        <entry align="left" valign="top">
     103        &driver2cpp;
     104        </entry>
     105        <entry align="left" valign="top">
     106        This sample, in addition to some tasks common to other samples, does
     107        some advanced message handling and presolve.
     108        </entry>
     109      </row>
     110      <row>
     111        <entry align="left" valign="top">
     112        &dualcutscpp;
     113        </entry>
     114        <entry align="left" valign="top">
     115        This sample implements a method of treating a problem as a collection
     116        of cuts.
     117        </entry>
     118      </row>
     119      <row>
     120        <entry align="left" valign="top">
     121        &decomposecpp;
    83122        </entry>
    84123        <entry align="left" valign="top">
     
    89128      <row>
    90129        <entry align="left" valign="top">
    91         <ulink url="&cvsweb;&clpsamplesdir;sprint.cpp"><filename>sprint.cpp</filename></ulink>
     130        &sprintcpp;
    92131        </entry>
    93132        <entry align="left" valign="top">
     
    101140      <row>
    102141        <entry align="left" valign="top">
    103         <ulink url="&cvsweb;&clpsamplesdir;sprint2.cpp"><filename>sprint2.cpp</filename></ulink>
     142        &sprint2cpp;
    104143        </entry>
    105144        <entry align="left" valign="top">
     
    114153  </tgroup>
    115154</table>
     155<para>
     156The remaining Samples listed here are considered unsupported in that they are of
     157a more esoteric nature and are sometimes contributed as a result of an
     158individual's request.  The are to be found in
     159<filename>&clpsamplesdir;Contributed</filename>.
     160</para>
     161<table frame="none">
     162  <title>Unsupported Samples</title>
     163  <tgroup cols="2">
     164    <thead>
     165      <row>
     166        <entry align="left" valign="bottom">
     167        Source file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     168        </entry>
     169        <entry align="left" valign="bottom">
     170        Description
     171        </entry>
     172      </row>
     173    </thead>
     174    <tbody>
     175      <row>
     176        <entry align="left" valign="top">
     177        &testbasiscpp;
     178        </entry>
     179        <entry align="left" valign="top">
     180        This sample takes a problem, changes any inequality constraints to
     181        equality constraints, solves the problem, and creates the optimal basis.
     182        </entry>
     183      </row>
     184      <row>
     185        <entry align="left" valign="top">
     186        &testgubcpp;
     187        </entry>
     188        <entry align="left" valign="top">
     189        This sample illustrates the use of the GUB (&quot;Generalized Upper
     190        Bound&quot;) technique.
     191        </entry>
     192      </row>
     193      <row>
     194        <entry align="left" valign="top">
     195        &ekkcpp;
     196        </entry>
     197        <entry align="left" valign="top">
     198        This sample can be used to compare CLP and OSL.  It uses an additional
     199        file in the Samples directory, <filename>ekk_interface.cpp</filename>.
     200        These sample files are not likely to be interesting to new CLP users
     201        who do not have experience with OSL.
     202        </entry>
     203      </row>
     204      <row>
     205        <entry align="left" valign="top">
     206        &hellocpp;
     207        </entry>
     208        <entry align="left" valign="top">
     209        This sample creates a text-based picture of a matrix on screen
     210        (limited to an 80x80 matrix).  It's not terribly useful but it does
     211        illustrate one way to step through the elements of a matrix.
     212        </entry>
     213      </row>
     214      <row>
     215        <entry align="left" valign="top">
     216        &piececpp;
     217        </entry>
     218        <entry align="left" valign="top">
     219        This sample takes a matrix read in by <classname>CoinMpsIo</classname>
     220        (can be used to read in MPS files without a solver), deletes every
     221        second column and solves the resulting problem.
     222        </entry>
     223      </row>
     224      <row>
     225        <entry align="left" valign="top">
     226        &usevolumecpp;
     227        </entry>
     228        <entry align="left" valign="top">
     229        The Volume Algorithm is another solver available as part of the COIN-OR
     230        distribution.  This sample shows how to use the Volume Algorithm with
     231        CLP.
     232        </entry>
     233      </row>
     234    </tbody>
     235  </tgroup>
     236</table>
     237<!-- subsection -->
     238<section id="minimumcppdesc">
     239<title>minimum.cpp</title>
     240<para>
     241This sample is examined in more detail in <xref linkend="firstexample"/>.
     242</para>
     243</section>
     244<!-- end subsection -->
     245<!-- subsection -->
     246<section id="defaultscppdesc">
     247<title>defaults.cpp</title>
     248<para>
     249This sample begins by reading an MPS file.  The default MPS file is
     250<filename>COIN/Mps/Sample/p0033.mps</filename>; this can be over-riden by a
     251command-line specification of a (path and) file name).  The sample then sets
     252the pivot algorithm to be exact devex.  It &quot;gets&quot; the default
     253infeasibility cost and &quot;sets&quot; it to that value (and prints it to
     254standard out).  This sort of getting and setting of various parameters
     255constitutes a common theme in this sample, with the purpose of illustrating
     256usage of some of the more common get and set methods available in CLP.
     257</para>
     258<para>
     259At this point the model is solved by the primal method.  A sequence of sets,
     260gets and prints is then followed by a number of calls to methods which give
     261specific information about the status of the problem (for example, the code
     262checks that the current solution has been proven to be optimal by
     263<code>assert(model.isProvenOptimal())</code>).
     264</para>
     265<para>
     266Next, a copy of the original model is made.  More sets and gets are
     267performed to demonstrate the use of additional options (including
     268the setting of the default message handling as well as changing of the
     269&quot;log level&quot; (amount of output)).  The model is solved again a
     270number of times between changes of the optimization direction (i.e. changing
     271from min to max or vice versa).  The remaining lines of this sample serve to
     272display solution and problem information in much the same way as is done in
     273driver.cpp.
     274</para>
     275</section>
     276<!-- subsection -->
     277<section id="drivercppdesc">
     278<title>driver.cpp</title>
     279<para>
     280This sample begins by reading an MPS file.  The default MPS file is
     281<filename>COIN/Mps/Sample/p0033.mps</filename>; this can be over-riden by a
     282command-line specification of a (path and) file name).  A second command-line
     283argument can specify that either the &quot;primal&quot; or &quot;dual&quot;
     284method (or even the &quot;barrier&quot;, see below) should be used by CLP.
     285</para>
     286<para>
     287Once the problem has been
     288read, there are two options for how to solve it, one of which must be chosen at
     289compile-time (<code>STYLE1</code> being defined or not determines this
     290choice).  The second manner is more flexible and involves more specific
     291directions being given to CLP, including the ability to specify that the barrier
     292method should be used.
     293</para>
     294<para>
     295At this point in the sample, the problem is solved by CLP, and some basic ouput
     296is generated.  If more output is desired, at compile-time, an
     297<code>exit(0)</code> statement must either be removed or commented.  There are
     298two levels of additional output, the first of which is suppressed  by a
     299<code>#if 0</code> directive which may be modified at compile-time if desired.
     300This first level of output only involves non-zero columns, whereas the second
     301provides additional information.
     302</para>
     303</section>
     304<!-- end subsection -->
     305<!-- subsection -->
     306<section id="networkcppdesc">
     307<title>network.cpp</title>
     308<para>
     309This handy sample reads a network problem generated by
     310<ulink url="http://www.netlib.org/lp/generators/netgen">netgen</ulink>, converts
     311it to an LP using CLP's network matrix type, and solves.  This entirely avoids
     312the use of an MPS file, as the LP is built in memory from the network data file
     313created by netgen.  Also, the factorization frequency is changed, and the
     314problem is solved more than once (demonstrating the change of optimization sense
     315as well as switching from dual to primal methods).
     316</para>
     317</section>
     318<!-- end subsection -->
     319<!-- subsection -->
     320<section id="testbarriercppdesc">
     321<title>testBarrier.cpp</title>
     322<para>
     323This straightfoward sample begins by reading a problem from an MPS file.  It
     324then chooses a Cholesky factorization and solves the problem using the
     325predictor corrector barrier method.  It then copies the problem and performs a
     326crossover to a simplex solution in the new copy.
     327</para>
     328</section>
     329<!-- end subsection -->
     330<!-- subsection -->
     331<section>
     332<title>dualCuts.cpp</title>
     333<para>
     334This sample begins with only the equality constraints of a problem.  The
     335inequalities are considered to be part of a pool of available cuts in much the
     336same way as is done in integer programming.  However, in this case, the cuts are
     337not &quot;generated&quot;, they are simply the inequalities of the problem.
     338</para>
     339</section>
     340<!-- end subsection -->
     341<!-- subsection -->
     342<section>
     343<title>decompose.cpp</title>
     344<para>
     345More on this sample coming soon!
     346</para>
     347</section>
     348<!-- end subsection -->
     349<!-- subsection -->
     350<section>
     351<title>driver2.cpp</title>
     352<para>
     353More on this sample coming soon!
     354</para>
     355</section>
     356<!-- end subsection -->
    116357</section>
    117358<section>
     
    128369      <row>
    129370        <entry align="left" valign="bottom">
    130         CLP Task&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     371        CLP Task(s)
    131372        </entry>
    132373        <entry>
     
    144385        </entry>
    145386        <entry>
    146         readMps
     387        <literallayout><function>int readMps(const char *filename)</function></literallayout>
     388        </entry>
     389        <entry>
     390        &defaultscpp;, &drivercpp;, &minimumcpp;
     391        </entry>
     392      </row>
     393      <row>
     394        <entry>
     395        Solve by primal method
     396        </entry>
     397        <entry>
     398        <literallayout><function>int primal()</function></literallayout>
     399        </entry>
     400        <entry>
     401        &drivercpp;
     402        </entry>
     403      </row>
     404      <row>
     405        <entry>
     406        Choose pivot rule
     407        </entry>
     408        <entry>
     409        <literallayout><function>void setPrimalColumnPivotAlgorithm(ClpPrimalColumnPivot &amp;choice)</function>
     410        <function>void setDualRowPivotAlgorithm(ClpDualRowPivot &amp;choice)</function></literallayout>
     411        </entry>
     412        <entry>
     413        &defaultscpp;
     414        </entry>
     415      </row>
     416      <row>
     417        <entry>
     418        Get/set infeasibility cost
     419        </entry>
     420        <entry>
     421        <literallayout><function>void setInfeasibilityCost(double value)</function>
     422        <function>void setInfeasibilityCost(double value)</function></literallayout>
     423        </entry>
     424        <entry>
     425        &defaultscpp;
     426        </entry>
     427      </row>
     428      <row>
     429        <entry>
     430        Get string/&quot;double&quot;/integer information
     431        </entry>
     432        <entry>
     433        <literallayout><function>bool getStrParam(ClpStrParam key, std::string &amp;value) const</function>
     434        <function>bool getDblParam(ClpDblParam key, double &amp;value) const</function>
     435        <function>bool  getIntParam (ClpIntParam key, int &amp;value) const </function></literallayout>
     436        </entry>
     437        <entry>
     438        &defaultscpp;
     439        </entry>
     440      </row>
     441      <row>
     442        <entry>
     443        Set maximum number of iterations
     444        </entry>
     445        <entry>
     446        <literallayout><function>void setMaximumIterations(int value)</function></literallayout>
     447        </entry>
     448        <entry>
     449        &defaultscpp;
     450        </entry>
     451      </row>
     452      <row>
     453        <entry>
     454        Check solution status
     455        </entry>
     456        <entry>
     457        <literallayout><function>int status() const</function>
     458        <function>bool isAbandoned() const</function>
     459        <function>bool isProvenOptimal() const</function>
     460        <function>bool isProvenPrimalInfeasible() const</function>
     461        <function>bool isProvenDualInfeasible() const</function>
     462        <function>bool isPrimalObjectiveLimitReached() const</function>
     463        <function>bool isDualObjectiveLimitReached() const</function>
     464        <function>bool isIterationLimitReached() const</function>
     465        <function></function>
     466        <function></function></literallayout>
     467        </entry>
     468        <entry>
     469       
     470        </entry>
     471      </row>
     472      <row>
     473        <entry>
     474       
     475        </entry>
     476        <entry>
     477       
     478        </entry>
     479        <entry>
     480       
     481        </entry>
     482      </row>
     483      <row>
     484        <entry>
     485       
     486        </entry>
     487        <entry>
     488       
     489        </entry>
     490        <entry>
     491       
     492        </entry>
     493      </row>
     494      <row>
     495        <entry>
     496       
     497        </entry>
     498        <entry>
     499       
     500        </entry>
     501        <entry>
     502       
     503        </entry>
     504      </row>
     505      <row>
     506        <entry>
     507       
     508        </entry>
     509        <entry>
     510       
    147511        </entry>
    148512        <entry>
  • trunk/Docs/revhist.xml

    r408 r479  
    33<title>Revision History</title>
    44<revhistory>
     5<revision>
     6  <revnumber>0.4</revnumber>
     7  <date>18 Oct 2004</date>
     8  <authorinitials>DdlN</authorinitials>
     9  <revremark>Second official release, including some corrections,
     10  clarifications, and several improvements (better treatment of clp
     11  executable and Samples).
     12  </revremark>
     13</revision>
    514<revision>
    615  <revnumber>0.3</revnumber>
Note: See TracChangeset for help on using the changeset viewer.