<?xml version="1.0" encoding="UTF-8"?>

<!--
 *
 * This help file was generated from qpipopt.sci using help_from_sci().
 *
 -->

<refentry version="5.0-subset Scilab" xml:id="qpipopt" xml:lang="en"
          xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg"
          xmlns:ns3="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:scilab="http://www.scilab.org"
          xmlns:db="http://docbook.org/ns/docbook">

  <refnamediv>
    <refname>qpipopt</refname>
    <refpurpose>Solves a linear quadratic problem.</refpurpose>
  </refnamediv>


<refsynopsisdiv>
   <title>Calling Sequence</title>
   <synopsis>
   xopt = qpipopt(nbVar,nbCon,H,f,lb,ub,A,conLB,conUB)
   xopt = qpipopt(nbVar,nbCon,H,f,lb,ub,A,conLB,conUB,x0)
   xopt = qpipopt(nbVar,nbCon,H,f,lb,ub,A,conLB,conUB,x0,param)
   [xopt,fopt,exitflag,output,lamda] = qpipopt( ... )
   
   </synopsis>
</refsynopsisdiv>

<refsection>
   <title>Parameters</title>
   <variablelist>
   <varlistentry><term>nbVar :</term>
      <listitem><para> a double, number of variables</para></listitem></varlistentry>
   <varlistentry><term>nbCon :</term>
      <listitem><para> a double, number of constraints</para></listitem></varlistentry>
   <varlistentry><term>H :</term>
      <listitem><para> a symmetric matrix of double, represents coefficients of quadratic in the quadratic problem.</para></listitem></varlistentry>
   <varlistentry><term>f :</term>
      <listitem><para> a vector of double, represents coefficients of linear in the quadratic problem</para></listitem></varlistentry>
   <varlistentry><term>lb :</term>
      <listitem><para> a vector of double, contains lower bounds of the variables.</para></listitem></varlistentry>
   <varlistentry><term>ub :</term>
      <listitem><para> a vector of double, contains upper bounds of the variables.</para></listitem></varlistentry>
   <varlistentry><term>A :</term>
      <listitem><para> a matrix of double, contains  matrix representing the constraint matrix</para></listitem></varlistentry>
   <varlistentry><term>conLB :</term>
      <listitem><para> a vector of double, contains lower bounds of the constraints.</para></listitem></varlistentry>
   <varlistentry><term>conUB :</term>
      <listitem><para> a vector of double, contains upper bounds of the constraints.</para></listitem></varlistentry>
   <varlistentry><term>x0 :</term>
      <listitem><para> a vector of double, contains initial guess of variables.</para></listitem></varlistentry>
   <varlistentry><term>param :</term>
      <listitem><para> a list containing the the parameters to be set.</para></listitem></varlistentry>
   <varlistentry><term>xopt :</term>
      <listitem><para> a vector of double, the computed solution of the optimization problem.</para></listitem></varlistentry>
   <varlistentry><term>fopt :</term>
      <listitem><para> a double, the function value at x.</para></listitem></varlistentry>
   <varlistentry><term>exitflag :</term>
      <listitem><para> A flag showing returned exit flag from Ipopt. It could be 0, 1 or 2 etc. i.e. Optimal, Maximum Number of Iterations Exceeded, CPU time exceeded. Other flags one can see in the lsqlin macro.</para></listitem></varlistentry>
   <varlistentry><term>output :</term>
      <listitem><para> Structure containing information about the optimization. This version only contains number of iterations</para></listitem></varlistentry>
   <varlistentry><term>lambda :</term>
      <listitem><para> Structure containing the Lagrange multipliers at the solution x (separated by constraint type).It contains lower, upper bound multiplier and linear equality, inequality constraint multiplier.</para></listitem></varlistentry>
   </variablelist>
</refsection>

<refsection>
   <title>Description</title>
   <para>
Search the minimum of a constrained linear quadratic optimization problem specified by :
   </para>
   <para>
<latex>
\begin{eqnarray}
&amp;\mbox{min}_{x}
&amp; 1/2⋅x^T⋅H⋅x + f^T⋅x  \\
&amp; \text{subject to} &amp; conLB \leq A⋅x \leq conUB \\
&amp; &amp; lb \leq x \leq ub \\
\end{eqnarray}
</latex>
   </para>
   <para>
The routine calls Ipopt for solving the quadratic problem, Ipopt is a library written in C++.
   </para>
   <para>
</para>
</refsection>

<refsection>
   <title>Examples</title>
   <programlisting role="example"><![CDATA[
//Ref : example 14 :
//https://www.me.utexas.edu/~jensen/ORMM/supplements/methods/nlpmethod/S2_quadratic.pdf
// min. -8*x1*x1 -16*x2*x2 + x1 + 4*x2
// such that
//    x1 + x2 <= 5,
//    x1 <= 3,
//    x1 >= 0,
//    x2 >= 0
H = [2 0
0 8];
f = [-8; -16];
A = [1 1;1 0];
conUB = [5;3];
conLB = [-%inf; -%inf];
lb = [0; 0];
ub = [%inf; %inf];
nbVar = 2;
nbCon = 2;
[xopt,fopt,exitflag,output,lambda] = qpipopt(nbVar,nbCon,H,f,lb,ub,A,conLB,conUB)
//Press ENTER to continue

   ]]></programlisting>
</refsection>

<refsection>
   <title>Examples</title>
   <programlisting role="example"><![CDATA[
//Find x in R^6 such that:
A= [1,-1,1,0,3,1;
-1,0,-3,-4,5,6;
2,5,3,0,1,0
0,1,0,1,2,-1;
-1,0,2,1,1,0];
conLB=[1;2;3;-%inf;-%inf];
conUB = [1;2;3;-1;2.5];
lb=[-1000;-10000; 0; -1000; -1000; -1000];
ub=[10000; 100; 1.5; 100; 100; 1000];
//and minimize 0.5*x'⋅H⋅x + f'⋅x with
f=[1; 2; 3; 4; 5; 6]; H=eye(6,6);
nbVar = 6;
nbCon = 5;
x0 = repmat(0,nbVar,1);
param = list("MaxIter", 300, "CpuTime", 100);
[xopt,fopt,exitflag,output,lambda]=qpipopt(nbVar,nbCon,H,f,lb,ub,A,conLB,conUB,x0,param)
   ]]></programlisting>
</refsection>

<refsection>
   <title>Authors</title>
   <simplelist type="vert">
   <member>Keyur Joshi, Saikiran, Iswarya, Harpreet Singh</member>
   </simplelist>
</refsection>
</refentry>