<?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} &\mbox{min}_{x} & 1/2⋅x^T⋅H⋅x + f^T⋅x \\ & \text{subject to} & conLB \leq A⋅x \leq conUB \\ & & 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>