<?xml version="1.0" encoding="ISO-8859-1"?>
<qandaentry>
  <question>
  <para>
  What is <ulink url="http://www.coin-or.org/Clp/">CLP</ulink>?
  </para>
  </question>
  <answer>
  <para>
  (DN 08/27/04) The <ulink url="http://www.coin-or.org/">COIN-OR</ulink> LP code
  is designed to be a high quality Simplex code provided under the terms of the
  <ulink url="http://opensource.org/licenses/cpl.php">Common Public License</ulink>.
  CLP is written in C++, and is primarily intended to be used as a callable
  library (though a rudimentary stand-alone executable exists).
  The first release was version .90.  The current release is version 1.00.2.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  What are some of the features of CLP?
  </para>
  </question>
  <answer>
  <para>
  (DN 08/27/04) CLP includes primal and dual Simplex solvers.  Both dual and primal algorithms
  can use matrix storage methods provided by the user (0-1 and network matrices
  are already supported in addition to the default sparse matrix). The dual algorithm
  has Dantzig and Steepest edge row pivot choices; new ones may be provided by
  the user. The same is true for the column pivot choice of the primal algorithm.
  The primal can also use a non linear cost which should work for piecewise
  linear convex functions.  CLP also includes a barrier method for solving LPs.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  How do I obtain and install CLP?
  </para>
  </question>
  <answer>
  <para>
  (DN 08/27/04) Please see the
  <ulink url="http://www.coin-or.org/faqs.html">COIN-OR FAQ</ulink>
  for details on how to
  <ulink url="http://www.coin-or.org/faqs.html#ObtainSrcCode">obtain</ulink>
  and
  <ulink url="http://www.coin-or.org/faqs.html#BuildCode">install</ulink>
  COIN-OR modules.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Is CLP reliable?
  </para>
  </question>
  <answer>
  <para>
  (DN 09/07/04) CLP has been tested on many problems of up to 1.5 million
  constraints and has shown itself as reliable as OSL. It is also being tested
  in the context of developing
  <ulink url="http://www.coin-or.org/faqs.html#CBC">CBC</ulink>
  (&quot;Coin Branch and Cut&quot;, which is used to solve integer
  programs); it is now considered reliable enough to be at version 1.0.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  On which platforms does CLP run?    
  </para>
  </question>
  <answer>
  <para>
  (DN 08/27/04) CLP compiles and has been tested (to varying degrees) on the following
  platforms:
  </para>
  <itemizedlist>
  <listitem>
  <para>
  Linux using g++ version 3.1.1 (or later)
  </para>
  </listitem>
  <listitem>
  <para>
  Windows using Microsoft Visual C++ 6
  </para>
  </listitem>
  <listitem>
  <para>
  Windows using cygwin
  </para>
  </listitem>
  <listitem>
  <para>
  AIX using xIC (not supported in the current Makefile)
  </para>
  </listitem>
  </itemizedlist>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Is there any documentation for CLP?  
  </para>
  </question>
  <answer>
  <para>
  (DN 09/16/04) An early release of a User Guide is available on the
  <ulink url="http://www.coin-or.org/Clp/documentation.html">CLP documentation webpage</ulink>.
  Also available is a list of
  <ulink url="http://www.coin-or.org/Doxygen/Clp/">CLP class descriptions</ulink> generated
  by <ulink url="http://www.doxygen.org">Doxygen</ulink>.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Is CLP as fast as OSL?
  </para>
  </question>
  <answer>
  <para>
   (DN 08/27/04) CLP uses sparse matrix techniques designed for very large
   problems. The design criteria were for it not to be too slow. Some speed
   has been sacrificed to make the code less opaque OSL (not difficult!).
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  When will version 1.0 of CLP be available?  
  </para>
  </question>
  <answer>
  <para>
  (DN 08/27/04) Version 1.0 was released in time for the 2004
  <ulink url="http://www.informs.org">INFORMS</ulink>
  <ulink url="http://www.informs.org/Conf/Denver2004/">Annual Meeting</ulink>
  (24-27 October, 2004).
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  The barrier method sounds interesting, what are some of the details?
  </para>
  </question>
  <answer>
  <para>
  (DN 08/30/04) The CLP barrier method solves convex QPs as well as LPs. In
  general, a barrier method requires implementation of the algorithm, as
  well as a fast Cholesky factorization.  CLP provides the algorithm, and is
  expected to have a reasonable factorization implementation by the release of
  CLP version 1.0.  However, the sparse factorization requires a good ordering
  algorithm, which the user is expected to provide (perhaps a better
  factorization code as well).
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Which Cholesky factorizations codes are supported by CLP's barrier method?
  </para>
  </question>
  <answer>
  <para>
  (DN 09/16/04) The Cholesky interface is flexible enough so that a variety of Cholesky
  ordering and factorization codes can be used.  Interfaces are provided to each
  of the following:
  <itemizedlist>
  <listitem>
  <para>
  Anshul Gupta's WSSMP parallel enabled ordering and factorization code
  </para>
  </listitem>
  <listitem>
  <para>
  Sivan Toledo's TAUCS parallel enabled factorization code (the package includes
  third party ordering codes)
  </para>
  </listitem>
  <listitem>
  <para>
  University of Florida's Approximate Minimum Degree (AMD) ordering code (the
  CLP native factorization code is used with this ordering code)
  </para>
  </listitem>
  <listitem>
  <para>
  CLP native code: very weak ordering but competitive nonparallel factorization
  </para>
  </listitem>
  <listitem>
  <para>
  Fast dense factorization
  </para>
  </listitem>
  </itemizedlist>
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  When will CLP have a good native ordering? 
  </para>
  </question>
  <answer>
  <para>
  (DN 09/16/04) The best outcome would be to have an existing ordering code available as part
  of the COIN distribution under the CPL.  However, if this is not possible, the
  native ordering will be made respectable.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Is the barrier code as mature as the simplex code?
  </para>
  </question>
  <answer>
  <para>
  (DN 09/16/04) The simplex code has been exposed to user testing for more than a year and
  and the principal author, John Forrest, knows more about simplex algorithms
  than interior point algorithms, so the answer is &quot;no&quot;.  However, it
  performs well on test sets and seems to be more reliable than some
  commercially available codes (including OSL).
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  Which algorithm should I use for quadratic programming and should I keep an
  eye open for any issues?
  </para>
  </question>
  <answer>
  <para>
  (DN 09/16/04) The interior point algorithm for quadratic programming is much more elegant
  and normally much faster than the quadratic simplex code.  Caution is
  suggested with the presolve as not all bugs have been found and squashed when
  a quadratic objective is used.  One may wish to switch off the crossover to a
  basic feasible solution as the simplex code can be slow.  The sequential
  linear code is useful as a &quot;crash&quot; to the simplex code; its
  convergence is poor but, say, 100 iterations could set up the problem well for
  the simplex code.
  </para>
  </answer>
</qandaentry>
<qandaentry>
  <question>
  <para>
  What can the community do to help?
  </para>
  </question>
  <answer>
  <para>
  (DN 09/09/04) A lot!  A good first step would be to join the CLP
  <ulink url="http://www.coin-or.org/mail.html">mailing lists</ulink>.  Some
  other possibilities:
  </para>
  <itemizedlist>
  <listitem>
  <para>
  Comment on the design
  </para>
  </listitem>
  <listitem>
  <para>
  Break the code, or better yet, mend it.
  </para>
  </listitem>
  <listitem>
  <para>
  Add non-English language support in your own favo(u)rite language.
  </para>
  </listitem>
  <listitem>
  <para>
  Improve the CLP executable.  In particular it would be nice to be able to link
  the executable's online help system with the existing CLP Samples (e.g. entering
  <userinput>presol???</userinput> would give the user references to all
  CLP Sample files which use presolve).
  </para>
  </listitem>
  <listitem>
  <para>
  Implement a dual Simplex method for QPs (quadratic programs)
  </para>
  </listitem>
  <listitem>
  <para>
  Implement a parametric Simplex method
  </para>
  </listitem>
  <listitem>
  <para>
  Implement a true network Simplex method (network matrix and factorization
  are already in place, but the method is not)
  </para>
  </listitem>
  <listitem>
  <para>
  Fill the holes in the barrier method mentioned above.
  </para>
  </listitem>
  </itemizedlist>
  </answer>
</qandaentry>
