Deleted vectorized computation feature. Deleted neldermead_contour. Fixed the demos.
[scilab.git] / scilab / modules / optimization / help / en_US / qpsolve.xml
index 9ee5c15..b1b8c4f 100644 (file)
@@ -48,8 +48,7 @@
 
         <listitem>
           <para>real matrix (dimension <literal> (me + md) x n</literal>).
-          This matrix may be stored as either a dense matrix either a sparse
-          one.</para>
+          This matrix may be dense or sparse.</para>
         </listitem>
       </varlistentry>
 
@@ -57,7 +56,7 @@
         <term>b</term>
 
         <listitem>
-          <para>RHS column vector (dimension <literal> (me +
+          <para>RHS column vector (dimension <literal> m=(me +
           md)</literal>)</para>
         </listitem>
       </varlistentry>
   <refsection>
     <title>Description</title>
 
-    <para>Minimize <literal> 0.5*x'*Q*x + p'*x</literal></para>
-
-    <para>under the constraints</para>
-
-    <programlisting>
-
- C(j,:) x = b(j),  j=1,...,me
- C(j,:) x &lt;= b(j), j=me+1,...,me+md
- ci &lt;= x &lt;= cs
-   
-    </programlisting>
-
-    <para>This function requires <literal>Q</literal> to be positive definite,
-    if it is not the case, one may use the <link
-    linkend="quapro">quapro</link> function.</para>
+    <informalequation>
+      <mediaobject>
+        <imageobject>
+          <imagedata align="center" fileref="../mml/qld_equation_1.mml" />
+        </imageobject>
+      </mediaobject>
+    </informalequation>
+
+    <para>This function requires <literal>Q</literal> to be symmetric positive
+    definite. If that hypothesis is not satisfied, one may use the quapro
+    function, which is provided in the Scilab quapro toolbox.</para>
+
+    <para>The qpsolve solver is implemented as a Scilab script, which calls
+    the compiled qp_solve primitive. It is provided as a facility, in order to
+    be a direct replacement for the former quapro solver : indeed, the qpsolve
+    solver has been designed so that it provides the same interface, that is,
+    the same input/output arguments. But the x0 and imp input arguments are
+    available in quapro, but not in qpsolve.</para>
   </refsection>
 
   <refsection>
     <title>Examples</title>
 
-    <programlisting role="example">
-
+    <programlisting role="example"><![CDATA[ 
 //Find x in R^6 such that:
 //C1*x = b1 (3 equality constraints i.e me=3)
 C1= [1,-1,1,0,3,1;
     -1,0,-3,-4,5,6;
      2,5,3,0,1,0];
 b1=[1;2;3];
-//C2*x &lt;= b2 (2 inequality constraints)
+
+//C2*x <= b2 (2 inequality constraints)
 C2=[0,1,0,1,2,-1;
     -1,0,2,1,1,0];
 b2=[-1;2.5];
+
 //with  x between ci and cs:
-ci=[-1000;-10000;0;-1000;-1000;-1000];cs=[10000;100;1.5;100;100;1000];
+ci=[-1000;-10000;0;-1000;-1000;-1000];
+cs=[10000;100;1.5;100;100;1000];
+
 //and minimize 0.5*x'*Q*x + p'*x with
 p=[1;2;3;4;5;6]; Q=eye(6,6);
+
 //No initial point is given;
-C=[C1;C2] ; //
-b=[b1;b2] ;  //
+C=[C1;C2];
+b=[b1;b2];
 me=3;
 [x,iact,iter,f]=qpsolve(Q,p,C,b,ci,cs,me)
 //Only linear constraints (1 to 4) are active 
-  </programlisting>
+ ]]></programlisting>
   </refsection>
 
   <refsection>
@@ -176,11 +181,31 @@ me=3;
 
     <simplelist type="inline">
       <member><link linkend="optim">optim</link></member>
+
       <member><link linkend="qp_solve">qp_solve</link></member>
+
       <member><link linkend="qld">qld</link></member>
     </simplelist>
+
     <para>The contributed toolbox "quapro" may also be of interest, in
-    particular for singular <literal>Q</literal>. </para>
+    particular for singular <literal>Q</literal>.</para>
+  </refsection>
+
+  <refsection>
+    <title>Memory requirements</title>
+
+    <para>Let r be</para>
+
+    <programlisting role = ""><![CDATA[  
+r=min(m,n)
+ ]]></programlisting>
+
+    <para>Then the memory required by qpsolve during the computations
+    is</para>
+
+    <programlisting role =""><![CDATA[ 
+2*n+r*(r+5)/2 + 2*m +1
+ ]]></programlisting>
   </refsection>
 
   <refsection>
@@ -191,7 +216,7 @@ me=3;
         <term>S. Steer</term>
 
         <listitem>
-          <para>, INRIA (Scilab interface)</para>
+          <para>INRIA (Scilab interface)</para>
         </listitem>
       </varlistentry>
 
@@ -199,14 +224,40 @@ me=3;
         <term>Berwin A. Turlach</term>
 
         <listitem>
-          <para>,School of Mathematics and Statistics (M019), The University
-          of Western Australia, Crawley, AUSTRALIA (solver code)</para>
+          <para>School of Mathematics and Statistics (M019), The University of
+          Western Australia, Crawley, AUSTRALIA (solver code)</para>
         </listitem>
       </varlistentry>
     </variablelist>
   </refsection>
 
   <refsection>
+    <title>References</title>
+
+    <itemizedlist>
+      <listitem>
+        <para>Goldfarb, D. and Idnani, A. (1982). "Dual and Primal-Dual
+        Methods for Solving Strictly Convex Quadratic Programs", in J.P.
+        Hennart (ed.), Numerical Analysis, Proceedings, Cocoyoc, Mexico 1981,
+        Vol. 909 of Lecture Notes in Mathematics, Springer-Verlag, Berlin, pp.
+        226-239.</para>
+      </listitem>
+
+      <listitem>
+        <para>Goldfarb, D. and Idnani, A. (1983). "A numerically stable dual
+        method for solving strictly convex quadratic programs", Mathematical
+        Programming 27: 1-33.</para>
+      </listitem>
+
+      <listitem>
+        <para>QuadProg (Quadratic Programming Routines), Berwin A
+        Turlach,<ulink
+        url="http://www.maths.uwa.edu.au/~berwin/software/quadprog.html">http://www.maths.uwa.edu.au/~berwin/software/quadprog.html</ulink></para>
+      </listitem>
+    </itemizedlist>
+  </refsection>
+
+  <refsection>
     <title>Used Functions</title>
 
     <para>qpgen1.f (also named QP.solve.f) developped by Berwin A. Turlach