a91732011716e10e6c6e2376769e4c22f5e31c4b
[scilab.git] / scilab / modules / optimization / help / en_US / qp_solve.xml
1 <?xml version="1.0" encoding="ISO-8859-1"?><refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="en" xml:id="qp_solve"><info><pubdate>March 2008</pubdate></info><refnamediv><refname>qp_solve</refname><refpurpose> linear quadratic programming solver builtin</refpurpose></refnamediv>
2   
3   
4   
5   
6   
7   <refsynopsisdiv><title>Calling Sequence</title><synopsis>[x [,iact [,iter [,f]]]]=qp_solve(Q,p1,C1,b,me)</synopsis></refsynopsisdiv>
8   <refsection><title>Parameters</title><variablelist><varlistentry><term>Q</term><listitem><para>real positive definite symmetric matrix (dimension <literal>n x n</literal>).</para></listitem></varlistentry><varlistentry><term>p</term><listitem><para>real (column) vector (dimension <literal> n</literal>)</para></listitem></varlistentry><varlistentry><term>C</term><listitem><para>real matrix (dimension <literal> (me + md) x
9           n</literal>). This matrix may be stored as either a dense
10           matrix either a sparse one. </para></listitem></varlistentry><varlistentry><term>b</term><listitem><para>RHS column vector (dimension <literal> (me + md)</literal>)</para></listitem></varlistentry><varlistentry><term>me</term><listitem><para>number of equality constraints (i.e. <literal>x'*C(:,1:me) = b(1:me)'</literal>)</para></listitem></varlistentry><varlistentry><term>x</term><listitem><para>optimal solution found.</para></listitem></varlistentry><varlistentry><term>iact</term><listitem><para>vector, indicator of active constraints. The first non
11           zero entries give the index of the active constraints</para></listitem></varlistentry><varlistentry><term>iter</term><listitem><para>. 2x1 vector, first component gives the number of "main" 
12         iterations, the second one says how many constraints were
13         deleted after they became active.</para></listitem></varlistentry></variablelist></refsection>
14   <refsection><title>Description</title><para>Minimize <literal> 0.5*x'*Q*x - p'*x</literal></para><para>under the constraints</para><programlisting><![CDATA[
15
16  x' C(:,j) = b(j),  j=1,...,me
17  x' C(:,j) >= b(j), j=me+1,...,me+md
18    
19     ]]></programlisting><para>This function requires  <literal>Q</literal> to be positive definite, if it is
20       not the case, one may use the <link linkend="quapro">quapro</link> function.</para><para>This is a builtin associated with the Berwin A. Turlach
21     code. Use preferabily the <link linkend="qpgen">qpgen</link> function built on it which handles 
22     variable boundaries and  match the <link linkend="quapro">quapro</link> problem definition</para></refsection>
23   <refsection><title>Examples</title><programlisting role="example"><![CDATA[
24
25 //Find x in R^6 such that:
26 //x'*C1 = b1 (3 equality constraints i.e me=3)
27 C1= [ 1,-1, 2;
28      -1, 0, 5;
29       1,-3, 3;
30       0,-4, 0;
31       3, 5, 1;
32       1, 6, 0];
33 b1=[1;2;3];
34
35 //x'*C2 >= b2 (2 inequality constraints)
36 C2= [ 0 ,1;
37      -1, 0;
38       0,-2;
39      -1,-1;
40      -2,-1;
41       1, 0];
42 b2=[ 1;-2.5];
43
44 //and minimize 0.5*x'*Q*x - p'*x with
45 p=[-1;-2;-3;-4;-5;-6]; Q=eye(6,6);
46
47 me=3;
48 [x,iact,iter,f]=qp_solve(Q,p,[C1 C2],[b1;b2],me)
49 //Only linear constraints (1 to 4) are active 
50  
51   ]]></programlisting></refsection>
52   <refsection><title>See Also</title><simplelist type="inline">
53     <member>
54       <link linkend="quapro">quapro</link>
55     </member>
56     <member>
57       <link linkend="optim">optim</link>
58     </member>
59   </simplelist></refsection>
60   <refsection><title>Authors</title><variablelist><varlistentry><term>S. Steer</term><listitem><para>, INRIA (Scilab interface)</para></listitem></varlistentry><varlistentry><term>Berwin A. Turlach</term><listitem><para>,School of Mathematics and
61     Statistics (M019), The University of Western Australia, Crawley,
62     AUSTRALIA (solver code)</para></listitem></varlistentry></variablelist></refsection>
63   <refsection><title>Used Functions</title><para>qpgen2.f and &gt;qpgen1.f (also named QP.solve.f) developped by Berwin A. Turlach according to the Goldfarb/Idnani algorithm</para></refsection>
64
65 </refentry>