summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarpreet2015-11-26 13:13:46 +0530
committerHarpreet2015-11-26 13:13:46 +0530
commit2af2dd71492d5485bd921cfe7b832811881947bb (patch)
tree3b4934f40a140f5ac54046ab3a530798c36708bb
parent8cf5063387ba60907e8e114b128abe5555922ad7 (diff)
downloadFOSSEE-Optimization-toolbox-2af2dd71492d5485bd921cfe7b832811881947bb.tar.gz
FOSSEE-Optimization-toolbox-2af2dd71492d5485bd921cfe7b832811881947bb.tar.bz2
FOSSEE-Optimization-toolbox-2af2dd71492d5485bd921cfe7b832811881947bb.zip
lsqlin added
-rw-r--r--demos/lsqlin.dem.sce49
-rw-r--r--demos/qpipopt_mat.dem.sce40
-rw-r--r--help/en_US/lsqlin.xml156
-rw-r--r--help/en_US/master_help.xml2
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/DOCSbin7155 -> 7351 bytes
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TABbin807 -> 850 bytes
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETSbin262 -> 266 bytes
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONSbin34829 -> 35734 bytes
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA2
-rw-r--r--help/en_US/scilab_en_US_help/JavaHelpSearch/TMAPbin16384 -> 16384 bytes
-rw-r--r--help/en_US/scilab_en_US_help/_LaTeX_lsqlin.xml_1.pngbin0 -> 3026 bytes
-rw-r--r--help/en_US/scilab_en_US_help/index.html8
-rw-r--r--help/en_US/scilab_en_US_help/jhelpmap.jhm1
-rw-r--r--help/en_US/scilab_en_US_help/jhelptoc.xml1
-rw-r--r--help/en_US/scilab_en_US_help/lsqlin.html153
-rw-r--r--help/en_US/scilab_en_US_help/qpipopt.html4
-rw-r--r--help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html8
-rw-r--r--jar/scilab_en_US_help.jarbin202473 -> 209125 bytes
-rw-r--r--macros/libbin504 -> 528 bytes
-rw-r--r--macros/lsqlin.binbin0 -> 51024 bytes
-rw-r--r--macros/lsqlin.sci372
-rw-r--r--macros/names1
-rw-r--r--macros/qpipopt.binbin47232 -> 49496 bytes
-rw-r--r--macros/qpipopt.sci8
-rw-r--r--macros/qpipoptmat.binbin49536 -> 51124 bytes
-rw-r--r--macros/qpipoptmat.sci4
-rwxr-xr-xsci_gateway/cpp/libFAMOS.sobin126944 -> 122920 bytes
-rw-r--r--tests/unit_tests/lsqlin.dia.ref82
-rw-r--r--tests/unit_tests/lsqlin.tst82
-rw-r--r--tests/unit_tests/qpipopt_base.dia.ref6
-rw-r--r--tests/unit_tests/qpipopt_base.tst6
-rw-r--r--tests/unit_tests/qpipoptmat_base.dia.ref (renamed from tests/unit_tests/qpipoptmat_base .dia.ref)6
-rw-r--r--tests/unit_tests/qpipoptmat_base.tst (renamed from tests/unit_tests/qpipoptmat_base .tst)6
-rw-r--r--tests/unit_tests/symphonymat_base.dia.ref (renamed from tests/unit_tests/symphony_mat_base.dia.ref)2
-rw-r--r--tests/unit_tests/symphonymat_base.tst (renamed from tests/unit_tests/symphony_mat_base.tst)2
35 files changed, 936 insertions, 65 deletions
diff --git a/demos/lsqlin.dem.sce b/demos/lsqlin.dem.sce
new file mode 100644
index 0000000..d417bf0
--- /dev/null
+++ b/demos/lsqlin.dem.sce
@@ -0,0 +1,49 @@
+mode(1)
+//
+// Demo of lsqlin.sci
+//
+
+//A simple linear least square example
+C = [0.9501 0.7620 0.6153 0.4057
+0.2311 0.4564 0.7919 0.9354
+0.6068 0.0185 0.9218 0.9169
+0.4859 0.8214 0.7382 0.4102
+0.8912 0.4447 0.1762 0.8936];
+d = [0.0578
+0.3528
+0.8131
+0.0098
+0.1388];
+A = [0.2027 0.2721 0.7467 0.4659
+0.1987 0.1988 0.4450 0.4186
+0.6037 0.0152 0.9318 0.8462];
+b = [0.5251
+0.2026
+0.6721];
+[xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b)
+halt() // Press return to continue
+
+C = [0.9501 0.7620 0.6153 0.4057
+0.2311 0.4564 0.7919 0.9354
+0.6068 0.0185 0.9218 0.9169
+0.4859 0.8214 0.7382 0.4102
+0.8912 0.4447 0.1762 0.8936];
+d = [0.0578
+0.3528
+0.8131
+0.0098
+0.1388];
+A =[0.2027 0.2721 0.7467 0.4659
+0.1987 0.1988 0.4450 0.4186
+0.6037 0.0152 0.9318 0.8462];
+b =[0.5251
+0.2026
+0.6721];
+Aeq = [3 5 7 9];
+beq = 4;
+lb = -0.1*ones(4,1);
+ub = 2*ones(4,1);
+[xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+halt() // Press return to continue
+
+//========= E N D === O F === D E M O =========//
diff --git a/demos/qpipopt_mat.dem.sce b/demos/qpipopt_mat.dem.sce
deleted file mode 100644
index 0f65036..0000000
--- a/demos/qpipopt_mat.dem.sce
+++ /dev/null
@@ -1,40 +0,0 @@
-mode(1)
-//
-// Demo of qpipopt_mat.sci
-//
-
-//Find x in R^6 such that:
-halt() // Press return to continue
-
-Aeq= [1,-1,1,0,3,1;
--1,0,-3,-4,5,6;
-2,5,3,0,1,0];
-beq=[1; 2; 3];
-A= [0,1,0,1,2,-1;
--1,0,2,1,1,0];
-b = [-1; 2.5];
-lb=[-1000; -10000; 0; -1000; -1000; -1000];
-ub=[10000; 100; 1.5; 100; 100; 1000];
-//and minimize 0.5*x'*Q*x + p'*x with
-f=[1; 2; 3; 4; 5; 6]; H=eye(6,6);
-[xopt,fopt,exitflag,output,lambda]=qpipopt_mat(H,f,A,b,Aeq,beq,lb,ub)
-clear H f A b Aeq beq lb ub;
-halt() // Press return to continue
-
-//Find the value of x that minimize following function
-// f(x) = 0.5*x1^2 + x2^2 - x1*x2 - 2*x1 - 6*x2
-// Subject to:
-// x1 + x2 ≤ 2
-// –x1 + 2x2 ≤ 2
-// 2x1 + x2 ≤ 3
-// 0 ≤ x1, 0 ≤ x2.
-H = [1 -1; -1 2];
-f = [-2; -6];
-A = [1 1; -1 2; 2 1];
-b = [2; 2; 3];
-lb = [0; 0];
-ub = [%inf; %inf];
-[xopt,fopt,exitflag,output,lambda] = qpipopt_mat(H,f,A,b,[],[],lb,ub)
-halt() // Press return to continue
-
-//========= E N D === O F === D E M O =========//
diff --git a/help/en_US/lsqlin.xml b/help/en_US/lsqlin.xml
new file mode 100644
index 0000000..92dbd91
--- /dev/null
+++ b/help/en_US/lsqlin.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ *
+ * This help file was generated from lsqlin.sci using help_from_sci().
+ *
+ -->
+
+<refentry version="5.0-subset Scilab" xml:id="lsqlin" 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>lsqlin</refname>
+ <refpurpose>Solves a linear quadratic problem.</refpurpose>
+ </refnamediv>
+
+
+<refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ x = lsqlin(C,d,A,b)
+ x = lsqlin(C,d,A,b,Aeq,beq)
+ x = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+ x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)
+ x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,param)
+ [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin( ... )
+
+ </synopsis>
+</refsynopsisdiv>
+
+<refsection>
+ <title>Parameters</title>
+ <variablelist>
+ <varlistentry><term>C :</term>
+ <listitem><para> a matrix of doubles, represents the multiplier of the solution x in the expression C*x - d. C is M-by-N, where M is the number of equations, and N is the number of elements of x.</para></listitem></varlistentry>
+ <varlistentry><term>d :</term>
+ <listitem><para> a vector of doubles, represents the additive constant term in the expression C*x - d. d is M-by-1, where M is the number of equations.</para></listitem></varlistentry>
+ <varlistentry><term>A :</term>
+ <listitem><para> a vector of doubles, represents the linear coefficients in the inequality constraints</para></listitem></varlistentry>
+ <varlistentry><term>b :</term>
+ <listitem><para> a vector of doubles, represents the linear coefficients in the inequality constraints</para></listitem></varlistentry>
+ <varlistentry><term>Aeq :</term>
+ <listitem><para> a matrix of doubles, represents the linear coefficients in the equality constraints</para></listitem></varlistentry>
+ <varlistentry><term>beq :</term>
+ <listitem><para> a vector of doubles, represents the linear coefficients in the equality constraints</para></listitem></varlistentry>
+ <varlistentry><term>LB :</term>
+ <listitem><para> a vector of doubles, where n is number of variables, contains lower bounds of the variables.</para></listitem></varlistentry>
+ <varlistentry><term>UB :</term>
+ <listitem><para> a vector of doubles, where n is number of variables, contains upper bounds of the variables.</para></listitem></varlistentry>
+ <varlistentry><term>x0 :</term>
+ <listitem><para> a vector of doubles, 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 doubles, 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> Integer identifying the reason the algorithm terminated.</para></listitem></varlistentry>
+ <varlistentry><term>output :</term>
+ <listitem><para> Structure containing information about the optimization.</para></listitem></varlistentry>
+ <varlistentry><term>lambda :</term>
+ <listitem><para> Structure containing the Lagrange multipliers at the solution x (separated by constraint type).</para></listitem></varlistentry>
+ </variablelist>
+</refsection>
+
+<refsection>
+ <title>Description</title>
+ <para>
+Search the minimum of a constrained linear least square problem specified by :
+find the minimum of f(x) such that
+ </para>
+ <para>
+<latex>
+\begin{eqnarray}
+&amp;\mbox{min}_{x}
+&amp; 1/2||C*x - d||_2^2 \\
+&amp; \text{subject to} &amp; A.x \leq b \\
+&amp; &amp; Aeq.x \leq beq \\
+&amp; &amp; lb \leq x \leq ub \\
+\end{eqnarray}
+</latex>
+ </para>
+ <para>
+We are calling IPOpt for solving the linear least square problem, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird.
+ </para>
+ <para>
+</para>
+</refsection>
+
+<refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//A simple linear least square example
+C = [0.9501 0.7620 0.6153 0.4057
+0.2311 0.4564 0.7919 0.9354
+0.6068 0.0185 0.9218 0.9169
+0.4859 0.8214 0.7382 0.4102
+0.8912 0.4447 0.1762 0.8936];
+d = [0.0578
+0.3528
+0.8131
+0.0098
+0.1388];
+A = [0.2027 0.2721 0.7467 0.4659
+0.1987 0.1988 0.4450 0.4186
+0.6037 0.0152 0.9318 0.8462];
+b = [0.5251
+0.2026
+0.6721];
+[xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b)
+
+ ]]></programlisting>
+</refsection>
+
+<refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+C = [0.9501 0.7620 0.6153 0.4057
+0.2311 0.4564 0.7919 0.9354
+0.6068 0.0185 0.9218 0.9169
+0.4859 0.8214 0.7382 0.4102
+0.8912 0.4447 0.1762 0.8936];
+d = [0.0578
+0.3528
+0.8131
+0.0098
+0.1388];
+A =[0.2027 0.2721 0.7467 0.4659
+0.1987 0.1988 0.4450 0.4186
+0.6037 0.0152 0.9318 0.8462];
+b =[0.5251
+0.2026
+0.6721];
+Aeq = [3 5 7 9];
+beq = 4;
+lb = -0.1*ones(4,1);
+ub = 2*ones(4,1);
+[xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+
+ ]]></programlisting>
+</refsection>
+
+<refsection>
+ <title>Authors</title>
+ <simplelist type="vert">
+ <member>Harpreet Singh</member>
+ </simplelist>
+</refsection>
+</refentry>
diff --git a/help/en_US/master_help.xml b/help/en_US/master_help.xml
index 66b8e0d..05f5acd 100644
--- a/help/en_US/master_help.xml
+++ b/help/en_US/master_help.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!--Begin Entities-->
+<!ENTITY a3d4ec65684b561d91f7a255acd23f51c SYSTEM "/home/harpreet/symphony_work/symphony/help/en_US/lsqlin.xml">
<!ENTITY a6b85f6e0c98751f20b68663a23cb4cd2 SYSTEM "/home/harpreet/symphony_work/symphony/help/en_US/qpipopt.xml">
<!ENTITY a44928acec52adf395379e18fcff06730 SYSTEM "/home/harpreet/symphony_work/symphony/help/en_US/qpipopt_mat.xml">
<!ENTITY a8549a3935858ed104f4749ca2243456a SYSTEM "/home/harpreet/symphony_work/symphony/help/en_US/qpipoptmat.xml">
@@ -81,6 +82,7 @@
<part xml:id='section_19f4f1e5726c01d683e8b82be0a7e910'>
<title>Symphony Toolbox</title>
+&a3d4ec65684b561d91f7a255acd23f51c;
&a6b85f6e0c98751f20b68663a23cb4cd2;
&a44928acec52adf395379e18fcff06730;
&a8549a3935858ed104f4749ca2243456a;
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS
index d5a7298..d7917b0 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB
index 0095d6c..1359fb5 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS
index 3fdc4c1..ae82060 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS
index d69ed8d..a0643a5 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA b/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA
index c0f76d2..c32f6ae 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA
@@ -1,2 +1,2 @@
JavaSearch 1.0
-TMAP bs=2048 rt=1 fl=-1 id1=1355 id2=1
+TMAP bs=2048 rt=1 fl=-1 id1=1413 id2=1
diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP b/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP
index 39ca223..dd780c5 100644
--- a/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP
+++ b/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/_LaTeX_lsqlin.xml_1.png b/help/en_US/scilab_en_US_help/_LaTeX_lsqlin.xml_1.png
new file mode 100644
index 0000000..d89b104
--- /dev/null
+++ b/help/en_US/scilab_en_US_help/_LaTeX_lsqlin.xml_1.png
Binary files differ
diff --git a/help/en_US/scilab_en_US_help/index.html b/help/en_US/scilab_en_US_help/index.html
index b1cfd9c..af31f16 100644
--- a/help/en_US/scilab_en_US_help/index.html
+++ b/help/en_US/scilab_en_US_help/index.html
@@ -32,7 +32,13 @@
<ul class="list-part"><a name="symphony_toolbox_manual"></a><div class="info"></div>
<li><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html" class="part">Symphony Toolbox</a>
-<ul class="list-chapter"><li><a href="qpipopt.html" class="refentry">qpipopt</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
+<ul class="list-chapter"><li><a href="lsqlin.html" class="refentry">lsqlin</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
+
+
+
+
+
+<li><a href="qpipopt.html" class="refentry">qpipopt</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
diff --git a/help/en_US/scilab_en_US_help/jhelpmap.jhm b/help/en_US/scilab_en_US_help/jhelpmap.jhm
index 47f4429..8950140 100644
--- a/help/en_US/scilab_en_US_help/jhelpmap.jhm
+++ b/help/en_US/scilab_en_US_help/jhelpmap.jhm
@@ -3,6 +3,7 @@
<map version="1.0">
<mapID target="index" url="index.html"/>
<mapID target="section_19f4f1e5726c01d683e8b82be0a7e910" url="section_19f4f1e5726c01d683e8b82be0a7e910.html"/>
+<mapID target="lsqlin" url="lsqlin.html"/>
<mapID target="qpipopt" url="qpipopt.html"/>
<mapID target="qpipopt_mat" url="qpipopt_mat.html"/>
<mapID target="qpipoptmat" url="qpipoptmat.html"/>
diff --git a/help/en_US/scilab_en_US_help/jhelptoc.xml b/help/en_US/scilab_en_US_help/jhelptoc.xml
index 95d4995..5cac88f 100644
--- a/help/en_US/scilab_en_US_help/jhelptoc.xml
+++ b/help/en_US/scilab_en_US_help/jhelptoc.xml
@@ -3,6 +3,7 @@
<toc version="1.0">
<tocitem target="index" text="Symphony Toolbox">
<tocitem target="section_19f4f1e5726c01d683e8b82be0a7e910" text="Symphony Toolbox">
+<tocitem target="lsqlin" text="lsqlin"/>
<tocitem target="qpipopt" text="qpipopt"/>
<tocitem target="qpipopt_mat" text="qpipopt_mat"/>
<tocitem target="qpipoptmat" text="qpipoptmat"/>
diff --git a/help/en_US/scilab_en_US_help/lsqlin.html b/help/en_US/scilab_en_US_help/lsqlin.html
new file mode 100644
index 0000000..96c6de1
--- /dev/null
+++ b/help/en_US/scilab_en_US_help/lsqlin.html
@@ -0,0 +1,153 @@
+<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>lsqlin</title>
+ <style type="text/css" media="all">
+ @import url("scilab_code.css");
+ @import url("xml_code.css");
+ @import url("c_code.css");
+ @import url("style.css");
+ </style>
+ </head>
+ <body>
+ <div class="manualnavbar">
+ <table width="100%"><tr>
+ <td width="30%">
+ <span class="previous"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">&lt;&lt; Symphony Toolbox</a></span>
+
+ </td>
+ <td width="40%" class="center">
+ <span class="top"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">Symphony Toolbox</a></span>
+
+ </td>
+ <td width="30%" class="next">
+ <span class="next"><a href="qpipopt.html">qpipopt &gt;&gt;</a></span>
+
+ </td>
+ </tr></table>
+ <hr />
+ </div>
+
+
+
+ <span class="path"><a href="index.html">Symphony Toolbox</a> &gt;&gt; <a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">Symphony Toolbox</a> &gt; lsqlin</span>
+
+ <br /><br />
+ <div class="refnamediv"><h1 class="refname">lsqlin</h1>
+ <p class="refpurpose">Solves a linear quadratic problem.</p></div>
+
+
+<div class="refsynopsisdiv"><h3 class="title">Calling Sequence</h3>
+ <div class="synopsis"><pre><span class="default">x</span><span class="default"> = </span><span class="functionid">lsqlin</span><span class="default">(</span><span class="default">C</span><span class="default">,</span><span class="default">d</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">)</span>
+<span class="default">x</span><span class="default"> = </span><span class="functionid">lsqlin</span><span class="default">(</span><span class="default">C</span><span class="default">,</span><span class="default">d</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">,</span><span class="default">Aeq</span><span class="default">,</span><span class="default">beq</span><span class="default">)</span>
+<span class="default">x</span><span class="default"> = </span><span class="functionid">lsqlin</span><span class="default">(</span><span class="default">C</span><span class="default">,</span><span class="default">d</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">,</span><span class="default">Aeq</span><span class="default">,</span><span class="default">beq</span><span class="default">,</span><span class="default">lb</span><span class="default">,</span><span class="default">ub</span><span class="default">)</span>
+<span class="default">x</span><span class="default"> = </span><span class="functionid">lsqlin</span><span class="default">(</span><span class="default">C</span><span class="default">,</span><span class="default">d</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">,</span><span class="default">Aeq</span><span class="default">,</span><span class="default">beq</span><span class="default">,</span><span class="default">lb</span><span class="default">,</span><span class="default">ub</span><span class="default">,</span><span class="default">x0</span><span class="default">)</span>
+<span class="default">x</span><span class="default"> = </span><span class="functionid">lsqlin</span><span class="default">(</span><span class="default">C</span><span class="default">,</span><span class="default">d</span><span class="default">,</span><span class="default">A</span><span class="default">,</span><span class="default">b</span><span class="default">,</span><span class="default">Aeq</span><span class="default">,</span><span class="default">beq</span><span class="default">,</span><span class="default">lb</span><span class="default">,</span><span class="default">ub</span><span class="default">,</span><span class="default">x0</span><span class="default">,</span><span class="default">param</span><span class="default">)</span>
+<span class="default">[</span><span class="default">xopt</span><span class="default">,</span><span class="default">resnorm</span><span class="default">,</span><span class="default">residual</span><span class="default">,</span><span class="default">exitflag</span><span class="default">,</span><span class="default">output</span><span class="default">,</span><span class="default">lambda</span><span class="default">] = </span><span class="functionid">lsqlin</span><span class="default">( ... )</span></pre></div></div>
+
+<div class="refsection"><h3 class="title">Parameters</h3>
+ <dl><dt><span class="term">C :</span>
+ <dd><p class="para">a matrix of doubles, represents the multiplier of the solution x in the expression C*x - d. C is M-by-N, where M is the number of equations, and N is the number of elements of x.</p></dd></dt>
+ <dt><span class="term">d :</span>
+ <dd><p class="para">a vector of doubles, represents the additive constant term in the expression C*x - d. d is M-by-1, where M is the number of equations.</p></dd></dt>
+ <dt><span class="term">A :</span>
+ <dd><p class="para">a vector of doubles, represents the linear coefficients in the inequality constraints</p></dd></dt>
+ <dt><span class="term">b :</span>
+ <dd><p class="para">a vector of doubles, represents the linear coefficients in the inequality constraints</p></dd></dt>
+ <dt><span class="term">Aeq :</span>
+ <dd><p class="para">a matrix of doubles, represents the linear coefficients in the equality constraints</p></dd></dt>
+ <dt><span class="term">beq :</span>
+ <dd><p class="para">a vector of doubles, represents the linear coefficients in the equality constraints</p></dd></dt>
+ <dt><span class="term">LB :</span>
+ <dd><p class="para">a vector of doubles, where n is number of variables, contains lower bounds of the variables.</p></dd></dt>
+ <dt><span class="term">UB :</span>
+ <dd><p class="para">a vector of doubles, where n is number of variables, contains upper bounds of the variables.</p></dd></dt>
+ <dt><span class="term">x0 :</span>
+ <dd><p class="para">a vector of doubles, contains initial guess of variables.</p></dd></dt>
+ <dt><span class="term">param :</span>
+ <dd><p class="para">a list containing the the parameters to be set.</p></dd></dt>
+ <dt><span class="term">xopt :</span>
+ <dd><p class="para">a vector of doubles, the computed solution of the optimization problem.</p></dd></dt>
+ <dt><span class="term">fopt :</span>
+ <dd><p class="para">a double, the function value at x.</p></dd></dt>
+ <dt><span class="term">exitflag :</span>
+ <dd><p class="para">Integer identifying the reason the algorithm terminated.</p></dd></dt>
+ <dt><span class="term">output :</span>
+ <dd><p class="para">Structure containing information about the optimization.</p></dd></dt>
+ <dt><span class="term">lambda :</span>
+ <dd><p class="para">Structure containing the Lagrange multipliers at the solution x (separated by constraint type).</p></dd></dt></dl></div>
+
+<div class="refsection"><h3 class="title">Description</h3>
+ <p class="para">Search the minimum of a constrained linear least square problem specified by :
+find the minimum of f(x) such that</p>
+ <p class="para"><span><img src='./_LaTeX_lsqlin.xml_1.png' style='position:relative;top:41px;width:234px;height:90px'/></span></p>
+ <p class="para">We are calling IPOpt for solving the linear least square problem, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird.</p>
+ <p class="para"></p></div>
+
+<div class="refsection"><h3 class="title">Examples</h3>
+ <div class="programlisting"><table border="0" width="100%"><tr><td width="98%"><pre class="scilabcode"><span class="scilabcomment">//A simple linear least square example</span>
+<span class="scilabid">C</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.9501</span> <span class="scilabnumber">0.7620</span> <span class="scilabnumber">0.6153</span> <span class="scilabnumber">0.4057</span>
+<span class="scilabnumber">0.2311</span> <span class="scilabnumber">0.4564</span> <span class="scilabnumber">0.7919</span> <span class="scilabnumber">0.9354</span>
+<span class="scilabnumber">0.6068</span> <span class="scilabnumber">0.0185</span> <span class="scilabnumber">0.9218</span> <span class="scilabnumber">0.9169</span>
+<span class="scilabnumber">0.4859</span> <span class="scilabnumber">0.8214</span> <span class="scilabnumber">0.7382</span> <span class="scilabnumber">0.4102</span>
+<span class="scilabnumber">0.8912</span> <span class="scilabnumber">0.4447</span> <span class="scilabnumber">0.1762</span> <span class="scilabnumber">0.8936</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">d</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.0578</span>
+<span class="scilabnumber">0.3528</span>
+<span class="scilabnumber">0.8131</span>
+<span class="scilabnumber">0.0098</span>
+<span class="scilabnumber">0.1388</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">A</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.2027</span> <span class="scilabnumber">0.2721</span> <span class="scilabnumber">0.7467</span> <span class="scilabnumber">0.4659</span>
+<span class="scilabnumber">0.1987</span> <span class="scilabnumber">0.1988</span> <span class="scilabnumber">0.4450</span> <span class="scilabnumber">0.4186</span>
+<span class="scilabnumber">0.6037</span> <span class="scilabnumber">0.0152</span> <span class="scilabnumber">0.9318</span> <span class="scilabnumber">0.8462</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">b</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.5251</span>
+<span class="scilabnumber">0.2026</span>
+<span class="scilabnumber">0.6721</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabopenclose">[</span><span class="scilabid">xopt</span><span class="scilabdefault">,</span><span class="scilabid">resnorm</span><span class="scilabdefault">,</span><span class="scilabid">residual</span><span class="scilabdefault">,</span><span class="scilabid">exitflag</span><span class="scilabdefault">,</span><span class="scilabid">output</span><span class="scilabdefault">,</span><span class="scilabid">lambda</span><span class="scilabopenclose">]</span> <span class="scilaboperator">=</span> <span class="scilabid">lsqlin</span><span class="scilabopenclose">(</span><span class="scilabid">C</span><span class="scilabdefault">,</span><span class="scilabid">d</span><span class="scilabdefault">,</span><span class="scilabid">A</span><span class="scilabdefault">,</span><span class="scilabid">b</span><span class="scilabopenclose">)</span></pre></td><td valign="top"><a href="scilab://scilab.execexample/"><img src="ScilabExecute.png" border="0"/></a></td><td valign="top"><a href="scilab://scilab.editexample/"><img src="ScilabEdit.png" border="0"/></a></td><td></td></tr></table></div></div>
+
+<div class="refsection"><h3 class="title">Examples</h3>
+ <div class="programlisting"><table border="0" width="100%"><tr><td width="98%"><pre class="scilabcode"><span class="scilabid">C</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.9501</span> <span class="scilabnumber">0.7620</span> <span class="scilabnumber">0.6153</span> <span class="scilabnumber">0.4057</span>
+<span class="scilabnumber">0.2311</span> <span class="scilabnumber">0.4564</span> <span class="scilabnumber">0.7919</span> <span class="scilabnumber">0.9354</span>
+<span class="scilabnumber">0.6068</span> <span class="scilabnumber">0.0185</span> <span class="scilabnumber">0.9218</span> <span class="scilabnumber">0.9169</span>
+<span class="scilabnumber">0.4859</span> <span class="scilabnumber">0.8214</span> <span class="scilabnumber">0.7382</span> <span class="scilabnumber">0.4102</span>
+<span class="scilabnumber">0.8912</span> <span class="scilabnumber">0.4447</span> <span class="scilabnumber">0.1762</span> <span class="scilabnumber">0.8936</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">d</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">0.0578</span>
+<span class="scilabnumber">0.3528</span>
+<span class="scilabnumber">0.8131</span>
+<span class="scilabnumber">0.0098</span>
+<span class="scilabnumber">0.1388</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">A</span> <span class="scilaboperator">=</span><span class="scilabopenclose">[</span><span class="scilabnumber">0.2027</span> <span class="scilabnumber">0.2721</span> <span class="scilabnumber">0.7467</span> <span class="scilabnumber">0.4659</span>
+<span class="scilabnumber">0.1987</span> <span class="scilabnumber">0.1988</span> <span class="scilabnumber">0.4450</span> <span class="scilabnumber">0.4186</span>
+<span class="scilabnumber">0.6037</span> <span class="scilabnumber">0.0152</span> <span class="scilabnumber">0.9318</span> <span class="scilabnumber">0.8462</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">b</span> <span class="scilaboperator">=</span><span class="scilabopenclose">[</span><span class="scilabnumber">0.5251</span>
+<span class="scilabnumber">0.2026</span>
+<span class="scilabnumber">0.6721</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">Aeq</span> <span class="scilaboperator">=</span> <span class="scilabopenclose">[</span><span class="scilabnumber">3</span> <span class="scilabnumber">5</span> <span class="scilabnumber">7</span> <span class="scilabnumber">9</span><span class="scilabopenclose">]</span><span class="scilabdefault">;</span>
+<span class="scilabid">beq</span> <span class="scilaboperator">=</span> <span class="scilabnumber">4</span><span class="scilabdefault">;</span>
+<span class="scilabid">lb</span> <span class="scilaboperator">=</span> <span class="scilaboperator">-</span><span class="scilabnumber">0.1</span><span class="scilaboperator">*</span><a class="scilabcommand" href="scilab://ones">ones</a><span class="scilabopenclose">(</span><span class="scilabnumber">4</span><span class="scilabdefault">,</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilabdefault">;</span>
+<span class="scilabid">ub</span> <span class="scilaboperator">=</span> <span class="scilabnumber">2</span><span class="scilaboperator">*</span><a class="scilabcommand" href="scilab://ones">ones</a><span class="scilabopenclose">(</span><span class="scilabnumber">4</span><span class="scilabdefault">,</span><span class="scilabnumber">1</span><span class="scilabopenclose">)</span><span class="scilabdefault">;</span>
+<span class="scilabopenclose">[</span><span class="scilabid">xopt</span><span class="scilabdefault">,</span><span class="scilabid">resnorm</span><span class="scilabdefault">,</span><span class="scilabid">residual</span><span class="scilabdefault">,</span><span class="scilabid">exitflag</span><span class="scilabdefault">,</span><span class="scilabid">output</span><span class="scilabdefault">,</span><span class="scilabid">lambda</span><span class="scilabopenclose">]</span> <span class="scilaboperator">=</span> <span class="scilabid">lsqlin</span><span class="scilabopenclose">(</span><span class="scilabid">C</span><span class="scilabdefault">,</span><span class="scilabid">d</span><span class="scilabdefault">,</span><span class="scilabid">A</span><span class="scilabdefault">,</span><span class="scilabid">b</span><span class="scilabdefault">,</span><span class="scilabid">Aeq</span><span class="scilabdefault">,</span><span class="scilabid">beq</span><span class="scilabdefault">,</span><span class="scilabid">lb</span><span class="scilabdefault">,</span><span class="scilabid">ub</span><span class="scilabopenclose">)</span></pre></td><td valign="top"><a href="scilab://scilab.execexample/"><img src="ScilabExecute.png" border="0"/></a></td><td valign="top"><a href="scilab://scilab.editexample/"><img src="ScilabEdit.png" border="0"/></a></td><td></td></tr></table></div></div>
+
+<div class="refsection"><h3 class="title">Authors</h3>
+ <ul class="itemizedlist"><li class="member">Harpreet Singh</li></ul></div>
+ <br />
+
+ <div class="manualnavbar">
+ <table width="100%">
+ <tr><td colspan="3" class="next"><a href="http://bugzilla.scilab.org/enter_bug.cgi?product=Scilab%20software&component=Documentation%20pages" class="ulink">Report an issue</a></td></tr>
+<tr>
+ <td width="30%">
+ <span class="previous"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">&lt;&lt; Symphony Toolbox</a></span>
+
+ </td>
+ <td width="40%" class="center">
+ <span class="top"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">Symphony Toolbox</a></span>
+
+ </td>
+ <td width="30%" class="next">
+ <span class="next"><a href="qpipopt.html">qpipopt &gt;&gt;</a></span>
+
+ </td>
+ </tr></table>
+ <hr />
+ </div>
+ </body>
+</html>
diff --git a/help/en_US/scilab_en_US_help/qpipopt.html b/help/en_US/scilab_en_US_help/qpipopt.html
index 63da9d2..c0e1b71 100644
--- a/help/en_US/scilab_en_US_help/qpipopt.html
+++ b/help/en_US/scilab_en_US_help/qpipopt.html
@@ -12,7 +12,7 @@
<div class="manualnavbar">
<table width="100%"><tr>
<td width="30%">
- <span class="previous"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">&lt;&lt; Symphony Toolbox</a></span>
+ <span class="previous"><a href="lsqlin.html">&lt;&lt; lsqlin</a></span>
</td>
<td width="40%" class="center">
@@ -130,7 +130,7 @@ find the minimum of f(x) such that</p>
<tr><td colspan="3" class="next"><a href="http://bugzilla.scilab.org/enter_bug.cgi?product=Scilab%20software&component=Documentation%20pages" class="ulink">Report an issue</a></td></tr>
<tr>
<td width="30%">
- <span class="previous"><a href="section_19f4f1e5726c01d683e8b82be0a7e910.html">&lt;&lt; Symphony Toolbox</a></span>
+ <span class="previous"><a href="lsqlin.html">&lt;&lt; lsqlin</a></span>
</td>
<td width="40%" class="center">
diff --git a/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html b/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html
index 52d6d9e..14e8136 100644
--- a/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html
+++ b/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html
@@ -31,7 +31,13 @@
<br /><br />
<h3 class="title-part">Symphony Toolbox</h3>
-<ul class="list-chapter"><li><a href="qpipopt.html" class="refentry">qpipopt</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
+<ul class="list-chapter"><li><a href="lsqlin.html" class="refentry">lsqlin</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
+
+
+
+
+
+<li><a href="qpipopt.html" class="refentry">qpipopt</a> &#8212; <span class="refentry-description">Solves a linear quadratic problem.</span></li>
diff --git a/jar/scilab_en_US_help.jar b/jar/scilab_en_US_help.jar
index 79b480b..1487f17 100644
--- a/jar/scilab_en_US_help.jar
+++ b/jar/scilab_en_US_help.jar
Binary files differ
diff --git a/macros/lib b/macros/lib
index 33343bd..b846940 100644
--- a/macros/lib
+++ b/macros/lib
Binary files differ
diff --git a/macros/lsqlin.bin b/macros/lsqlin.bin
new file mode 100644
index 0000000..ec9e6ef
--- /dev/null
+++ b/macros/lsqlin.bin
Binary files differ
diff --git a/macros/lsqlin.sci b/macros/lsqlin.sci
new file mode 100644
index 0000000..003edc5
--- /dev/null
+++ b/macros/lsqlin.sci
@@ -0,0 +1,372 @@
+// Copyright (C) 2015 - IIT Bombay - FOSSEE
+//
+// Author: Harpreet Singh
+// Organization: FOSSEE, IIT Bombay
+// Email: harpreet.mertia@gmail.com
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+
+function [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin (varargin)
+ // Solves a linear quadratic problem.
+ //
+ // Calling Sequence
+ // x = lsqlin(C,d,A,b)
+ // x = lsqlin(C,d,A,b,Aeq,beq)
+ // x = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+ // x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)
+ // x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,param)
+ // [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin( ... )
+ //
+ // Parameters
+ // C : a matrix of doubles, represents the multiplier of the solution x in the expression C*x - d. C is M-by-N, where M is the number of equations, and N is the number of elements of x.
+ // d : a vector of doubles, represents the additive constant term in the expression C*x - d. d is M-by-1, where M is the number of equations.
+ // A : a vector of doubles, represents the linear coefficients in the inequality constraints
+ // b : a vector of doubles, represents the linear coefficients in the inequality constraints
+ // Aeq : a matrix of doubles, represents the linear coefficients in the equality constraints
+ // beq : a vector of doubles, represents the linear coefficients in the equality constraints
+ // LB : a vector of doubles, where n is number of variables, contains lower bounds of the variables.
+ // UB : a vector of doubles, where n is number of variables, contains upper bounds of the variables.
+ // x0 : a vector of doubles, contains initial guess of variables.
+ // param : a list containing the the parameters to be set.
+ // xopt : a vector of doubles, the computed solution of the optimization problem.
+ // fopt : a double, the function value at x.
+ // exitflag : Integer identifying the reason the algorithm terminated.
+ // output : Structure containing information about the optimization.
+ // lambda : Structure containing the Lagrange multipliers at the solution x (separated by constraint type).
+ //
+ // Description
+ // Search the minimum of a constrained linear least square problem specified by :
+ // find the minimum of f(x) such that
+ //
+ // <latex>
+ // \begin{eqnarray}
+ // &\mbox{min}_{x}
+ // & 1/2||C*x - d||_2^2 \\
+ // & \text{subject to} & A.x \leq b \\
+ // & & Aeq.x \leq beq \\
+ // & & lb \leq x \leq ub \\
+ // \end{eqnarray}
+ // </latex>
+ //
+ // We are calling IPOpt for solving the linear least square problem, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird.
+ //
+ // Examples
+ // //A simple linear least square example
+ // C = [0.9501 0.7620 0.6153 0.4057
+ // 0.2311 0.4564 0.7919 0.9354
+ // 0.6068 0.0185 0.9218 0.9169
+ // 0.4859 0.8214 0.7382 0.4102
+ // 0.8912 0.4447 0.1762 0.8936];
+ // d = [0.0578
+ // 0.3528
+ // 0.8131
+ // 0.0098
+ // 0.1388];
+ // A = [0.2027 0.2721 0.7467 0.4659
+ // 0.1987 0.1988 0.4450 0.4186
+ // 0.6037 0.0152 0.9318 0.8462];
+ // b = [0.5251
+ // 0.2026
+ // 0.6721];
+ // [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b)
+ //
+ // Examples
+ // C = [0.9501 0.7620 0.6153 0.4057
+ // 0.2311 0.4564 0.7919 0.9354
+ // 0.6068 0.0185 0.9218 0.9169
+ // 0.4859 0.8214 0.7382 0.4102
+ // 0.8912 0.4447 0.1762 0.8936];
+ // d = [0.0578
+ // 0.3528
+ // 0.8131
+ // 0.0098
+ // 0.1388];
+ // A =[0.2027 0.2721 0.7467 0.4659
+ // 0.1987 0.1988 0.4450 0.4186
+ // 0.6037 0.0152 0.9318 0.8462];
+ // b =[0.5251
+ // 0.2026
+ // 0.6721];
+ // Aeq = [3 5 7 9];
+ // beq = 4;
+ // lb = -0.1*ones(4,1);
+ // ub = 2*ones(4,1);
+ // [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+ //
+ // Authors
+ // Harpreet Singh
+
+
+ //To check the number of input and output argument
+ [lhs , rhs] = argn();
+
+ //To check the number of argument given by user
+ if ( rhs < 4 | rhs == 5 | rhs == 7 | rhs > 10 ) then
+ errmsg = msprintf(gettext("%s: Unexpected number of input arguments : %d provided while should be in the set of [4 6 8 9 10]"), "lsqlin", rhs);
+ error(errmsg)
+ end
+
+ C = varargin(1);
+ d = varargin(2);
+ A = varargin(3);
+ b = varargin(4);
+ nbVar = size(C,2);
+
+ if ( rhs<5 ) then
+ Aeq = []
+ beq = []
+ else
+ Aeq = varargin(5);
+ beq = varargin(6);
+ end
+
+ if ( rhs<7 ) then
+ LB = repmat(-%inf,nbVar,1);
+ UB = repmat(%inf,nbVar,1);
+ else
+ LB = varargin(7);
+ UB = varargin(8);
+ end
+
+
+ if ( rhs<9 | size(varargin(9)) ==0 ) then
+ x0 = repmat(0,nbVar,1)
+ else
+ x0 = varargin(9);
+ end
+
+ if ( rhs<10 | size(varargin(10)) ==0 ) then
+ param = list();
+ else
+ param =varargin(10);
+ end
+
+ if (size(LB,2)==0) then
+ LB = repmat(-%inf,nbVar,1);
+ end
+
+ if (size(UB,2)==0) then
+ UB = repmat(%inf,nbVar,1);
+ end
+
+ if (type(param) ~= 15) then
+ errmsg = msprintf(gettext("%s: param should be a list "), "lsqlin");
+ error(errmsg);
+ end
+
+
+ if (modulo(size(param),2)) then
+ errmsg = msprintf(gettext("%s: Size of parameters should be even"), "lsqlin");
+ error(errmsg);
+ end
+
+ options = list( "MaxIter" , [3000], ...
+ "CpuTime" , [600] ...
+ );
+
+ for i = 1:(size(param))/2
+
+ select param(2*i-1)
+ case "MaxIter" then
+ options(2*i) = param(2*i);
+ case "CpuTime" then
+ options(2*i) = param(2*i);
+ else
+ errmsg = msprintf(gettext("%s: Unrecognized parameter name ''%s''."), "lsqlin", param(2*i-1));
+ error(errmsg)
+ end
+ end
+
+ nbConInEq = size(A,1);
+ nbConEq = size(Aeq,1);
+
+ // Check if the user gives row vector
+ // and Changing it to a column matrix
+
+
+ if (size(d,2)== [nbVar]) then
+ d=d';
+ end
+
+ if (size(LB,2)== [nbVar]) then
+ LB = LB';
+ end
+
+ if (size(UB,2)== [nbVar]) then
+ UB = UB';
+ end
+
+ if (size(b,2)==nbConInEq) then
+ b = b';
+ end
+
+ if (size(beq,2)== nbConEq) then
+ beq = beq';
+ end
+
+ if (size(x0,2)== [nbVar]) then
+ x0=x0';
+ end
+
+ //Check the size of f which should equal to the number of variable
+ if ( size(d,1) ~= size(C,1)) then
+ errmsg = msprintf(gettext("%s: The number of rows in C must be equal the number of elements of d"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of inequality constraint which should be equal to the number of variables
+ if ( size(A,2) ~= nbVar & size(A,2) ~= 0) then
+ errmsg = msprintf(gettext("%s: The number of columns in A must be the same as the number of elements of d"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of equality constraint which should be equal to the number of variables
+ if ( size(Aeq,2) ~= nbVar & size(Aeq,2) ~= 0 ) then
+ errmsg = msprintf(gettext("%s: The number of columns in Aeq must be the same as the number of elements of d"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of Lower Bound which should be equal to the number of variables
+ if ( size(LB,1) ~= nbVar) then
+ errmsg = msprintf(gettext("%s: The Lower Bound is not equal to the number of variables"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of Upper Bound which should equal to the number of variables
+ if ( size(UB,1) ~= nbVar) then
+ errmsg = msprintf(gettext("%s: The Upper Bound is not equal to the number of variables"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of constraints of Lower Bound which should equal to the number of constraints
+ if ( size(b,1) ~= nbConInEq & size(b,1) ~= 0) then
+ errmsg = msprintf(gettext("%s: The number of rows in A must be the same as the number of elementsof b"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of constraints of Upper Bound which should equal to the number of constraints
+ if ( size(beq,1) ~= nbConEq & size(beq,1) ~= 0) then
+ errmsg = msprintf(gettext("%s: The number of rows in Aeq must be the same as the number of elements of beq"), "lsqlin");
+ error(errmsg);
+ end
+
+ //Check the size of initial of variables which should equal to the number of variables
+ if ( size(x0,1) ~= nbVar) then
+ warnmsg = msprintf(gettext("%s: Ignoring initial guess of variables as it is not equal to the number of variables"), "lsqlin");
+ warning(warnmsg);
+ end
+
+ //Check if the user gives a matrix instead of a vector
+
+ if ((size(d,1)~=1)& (size(d,2)~=1)) then
+ errmsg = msprintf(gettext("%s: d should be a vector"), "lsqlin");
+ error(errmsg);
+ end
+
+ if (size(LB,1)~=1)& (size(LB,2)~=1) then
+ errmsg = msprintf(gettext("%s: Lower Bound should be a vector"), "lsqlin");
+ error(errmsg);
+ end
+
+ if (size(UB,1)~=1)& (size(UB,2)~=1) then
+ errmsg = msprintf(gettext("%s: Upper Bound should be a vector"), "lsqlin");
+ error(errmsg);
+ end
+
+ if (nbConInEq) then
+ if ((size(b,1)~=1)& (size(b,2)~=1)) then
+ errmsg = msprintf(gettext("%s: Constraint Lower Bound should be a vector"), "lsqlin");
+ error(errmsg);
+ end
+ end
+
+ if (nbConEq) then
+ if (size(beq,1)~=1)& (size(beq,2)~=1) then
+ errmsg = msprintf(gettext("%s: Constraint should be a vector"), "lsqlin");
+ error(errmsg);
+ end
+ end
+
+ for i = 1:nbConInEq
+ if (b(i) == -%inf)
+ errmsg = msprintf(gettext("%s: Value of b can not be negative infinity"), "qpipoptmat");
+ error(errmsg);
+ end
+ end
+
+ for i = 1:nbConEq
+ if (beq(i) == -%inf)
+ errmsg = msprintf(gettext("%s: Value of beq can not be negative infinity"), "qpipoptmat");
+ error(errmsg);
+ end
+ end
+
+ //Converting it into Quadratic Programming Problem
+
+ Q = C'*C;
+ p = [-C'*d]';
+ op_add = d'*d;
+ LB = LB';
+ UB = UB';
+ x0 = x0';
+ conMatrix = [Aeq;A];
+ nbCon = size(conMatrix,1);
+ conLB = [beq; repmat(-%inf,nbConInEq,1)]';
+ conUB = [beq;b]' ;
+ [xopt,fopt,status,iter,Zl,Zu,lmbda] = solveqp(nbVar,nbCon,Q,p,conMatrix,conLB,conUB,LB,UB,x0,options);
+
+ xopt = xopt';
+ residual = C*xopt-d;
+ resnorm = residual'*residual;
+ exitflag = status;
+ output = struct("Iterations" , []);
+ output.Iterations = iter;
+ lambda = struct("lower" , [], ..
+ "upper" , [], ..
+ "constraint" , []);
+
+ lambda.lower = Zl;
+ lambda.upper = Zu;
+ lambda.constraint = lmbda;
+
+ select status
+ case 0 then
+ printf("\nOptimal Solution Found.\n");
+ case 1 then
+ printf("\nMaximum Number of Iterations Exceeded. Output may not be optimal.\n");
+ case 2 then
+ printf("\nMaximum CPU Time exceeded. Output may not be optimal.\n");
+ case 3 then
+ printf("\nStop at Tiny Step\n");
+ case 4 then
+ printf("\nSolved To Acceptable Level\n");
+ case 5 then
+ printf("\nConverged to a point of local infeasibility.\n");
+ case 6 then
+ printf("\nStopping optimization at current point as requested by user.\n");
+ case 7 then
+ printf("\nFeasible point for square problem found.\n");
+ case 8 then
+ printf("\nIterates diverging; problem might be unbounded.\n");
+ case 9 then
+ printf("\nRestoration Failed!\n");
+ case 10 then
+ printf("\nError in step computation (regularization becomes too large?)!\n");
+ case 12 then
+ printf("\nProblem has too few degrees of freedom.\n");
+ case 13 then
+ printf("\nInvalid option thrown back by IPOpt\n");
+ case 14 then
+ printf("\nNot enough memory.\n");
+ case 15 then
+ printf("\nINTERNAL ERROR: Unknown SolverReturn value - Notify IPOPT Authors.\n");
+ else
+ printf("\nInvalid status returned. Notify the Toolbox authors\n");
+ break;
+ end
+
+endfunction
diff --git a/macros/names b/macros/names
index 4f0ba56..18923c4 100644
--- a/macros/names
+++ b/macros/names
@@ -1,3 +1,4 @@
+lsqlin
qpipopt
qpipoptmat
setOptions
diff --git a/macros/qpipopt.bin b/macros/qpipopt.bin
index 0c65c0b..e13d5a9 100644
--- a/macros/qpipopt.bin
+++ b/macros/qpipopt.bin
Binary files differ
diff --git a/macros/qpipopt.sci b/macros/qpipopt.sci
index e25aad9..ccf10e4 100644
--- a/macros/qpipopt.sci
+++ b/macros/qpipopt.sci
@@ -298,13 +298,13 @@ function [xopt,fopt,exitflag,output,lambda] = qpipopt (varargin)
for i = 1:nbCon
if (conLB(i) == %inf)
errmsg = msprintf(gettext("%s: Value of Lower Bound can not be infinity"), "qpipopt");
- error(errmsg);
- end
+ error(errmsg);
+ end
if (conUB(i) == -%inf)
errmsg = msprintf(gettext("%s: Value of Upper Bound can not be negative infinity"), "qpipopt");
- error(errmsg);
- end
+ error(errmsg);
+ end
end
[xopt,fopt,status,iter,Zl,Zu,lmbda] = solveqp(nbVar,nbCon,Q,p,conMatrix,conLB,conUB,LB,UB,x0,options);
diff --git a/macros/qpipoptmat.bin b/macros/qpipoptmat.bin
index 6ca5589..07c9386 100644
--- a/macros/qpipoptmat.bin
+++ b/macros/qpipoptmat.bin
Binary files differ
diff --git a/macros/qpipoptmat.sci b/macros/qpipoptmat.sci
index 0adc0bd..9f20870 100644
--- a/macros/qpipoptmat.sci
+++ b/macros/qpipoptmat.sci
@@ -23,8 +23,8 @@ function [xopt,fopt,exitflag,output,lambda] = qpipoptmat (varargin)
// [xopt,fopt,exitflag,output,lamda] = qpipoptmat( ... )
//
// Parameters
- // H : a vector of doubles, where n is number of variables, represents coefficients of quadratic in the quadratic problem.
- // f : a vector of doubles, where n is number of variables, represents coefficients of linear in the quadratic problem
+ // H : a symmetric matrix of doubles, represents coefficients of quadratic in the quadratic problem.
+ // f : a vector of doubles, represents coefficients of linear in the quadratic problem
// A : a vector of doubles, represents the linear coefficients in the inequality constraints
// b : a vector of doubles, represents the linear coefficients in the inequality constraints
// Aeq : a matrix of doubles, represents the linear coefficients in the equality constraints
diff --git a/sci_gateway/cpp/libFAMOS.so b/sci_gateway/cpp/libFAMOS.so
index ec45532..f973a5b 100755
--- a/sci_gateway/cpp/libFAMOS.so
+++ b/sci_gateway/cpp/libFAMOS.so
Binary files differ
diff --git a/tests/unit_tests/lsqlin.dia.ref b/tests/unit_tests/lsqlin.dia.ref
new file mode 100644
index 0000000..a2b9630
--- /dev/null
+++ b/tests/unit_tests/lsqlin.dia.ref
@@ -0,0 +1,82 @@
+// Copyright (C) 2015 - IIT Bombay - FOSSEE
+//
+// Author: Harpreet Singh
+// Organization: FOSSEE, IIT Bombay
+// Email: harpreet.mertia@gmail.com
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+
+
+//
+// assert_close --
+// Returns 1 if the two real matrices computed and expected are close,
+// i.e. if the relative distance between computed and expected is lesser than epsilon.
+// Arguments
+// computed, expected : the two matrices to compare
+// epsilon : a small number
+//
+function flag = assert_close ( computed, expected, epsilon )
+ if expected==0.0 then
+ shift = norm(computed-expected);
+ else
+ shift = norm(computed-expected)/norm(expected);
+ end
+// if shift < epsilon then
+// flag = 1;
+// else
+// flag = 0;
+// end
+// if flag <> 1 then pause,end
+ flag = assert_checktrue ( shift < epsilon );
+endfunction
+//
+// assert_equal --
+// Returns 1 if the two real matrices computed and expected are equal.
+// Arguments
+// computed, expected : the two matrices to compare
+// epsilon : a small number
+//
+//function flag = assert_equal ( computed , expected )
+// if computed==expected then
+// flag = 1;
+// else
+// flag = 0;
+// end
+// if flag <> 1 then pause,end
+//endfunction
+
+ //A simple linear least square example
+C = [0.9501 0.7620 0.6153 0.4057
+ 0.2311 0.4564 0.7919 0.9354
+ 0.6068 0.0185 0.9218 0.9169
+ 0.4859 0.8214 0.7382 0.4102
+ 0.8912 0.4447 0.1762 0.8936];
+ d = [0.0578
+ 0.3528
+ 0.8131
+ 0.0098
+ 0.1388];
+ A =[0.2027 0.2721 0.7467 0.4659
+ 0.1987 0.1988 0.4450 0.4186
+ 0.6037 0.0152 0.9318 0.8462];
+ b =[0.5251
+ 0.2026
+ 0.6721];
+ Aeq = [3 5 7 9];
+ beq = 4;
+ lb = -0.1*ones(4,1);
+ ub = 2*ones(4,1);
+ [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+
+assert_close ( xopt , [ -0.1, -0.1, 0.1599089, 0.4089598 ]' , 0.0005 );
+assert_close ( residual , [ 0.0352969 0.0876228 -0.3532508 0.1452700 0.1212324 ]' , 0.0005 );
+assert_close ( resnorm , [ 0.1695104] , 0.0005 );
+
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/lsqlin.tst b/tests/unit_tests/lsqlin.tst
new file mode 100644
index 0000000..a2b9630
--- /dev/null
+++ b/tests/unit_tests/lsqlin.tst
@@ -0,0 +1,82 @@
+// Copyright (C) 2015 - IIT Bombay - FOSSEE
+//
+// Author: Harpreet Singh
+// Organization: FOSSEE, IIT Bombay
+// Email: harpreet.mertia@gmail.com
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+// <-- JVM NOT MANDATORY -->
+// <-- ENGLISH IMPOSED -->
+
+
+//
+// assert_close --
+// Returns 1 if the two real matrices computed and expected are close,
+// i.e. if the relative distance between computed and expected is lesser than epsilon.
+// Arguments
+// computed, expected : the two matrices to compare
+// epsilon : a small number
+//
+function flag = assert_close ( computed, expected, epsilon )
+ if expected==0.0 then
+ shift = norm(computed-expected);
+ else
+ shift = norm(computed-expected)/norm(expected);
+ end
+// if shift < epsilon then
+// flag = 1;
+// else
+// flag = 0;
+// end
+// if flag <> 1 then pause,end
+ flag = assert_checktrue ( shift < epsilon );
+endfunction
+//
+// assert_equal --
+// Returns 1 if the two real matrices computed and expected are equal.
+// Arguments
+// computed, expected : the two matrices to compare
+// epsilon : a small number
+//
+//function flag = assert_equal ( computed , expected )
+// if computed==expected then
+// flag = 1;
+// else
+// flag = 0;
+// end
+// if flag <> 1 then pause,end
+//endfunction
+
+ //A simple linear least square example
+C = [0.9501 0.7620 0.6153 0.4057
+ 0.2311 0.4564 0.7919 0.9354
+ 0.6068 0.0185 0.9218 0.9169
+ 0.4859 0.8214 0.7382 0.4102
+ 0.8912 0.4447 0.1762 0.8936];
+ d = [0.0578
+ 0.3528
+ 0.8131
+ 0.0098
+ 0.1388];
+ A =[0.2027 0.2721 0.7467 0.4659
+ 0.1987 0.1988 0.4450 0.4186
+ 0.6037 0.0152 0.9318 0.8462];
+ b =[0.5251
+ 0.2026
+ 0.6721];
+ Aeq = [3 5 7 9];
+ beq = 4;
+ lb = -0.1*ones(4,1);
+ ub = 2*ones(4,1);
+ [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,Aeq,beq,lb,ub)
+
+assert_close ( xopt , [ -0.1, -0.1, 0.1599089, 0.4089598 ]' , 0.0005 );
+assert_close ( residual , [ 0.0352969 0.0876228 -0.3532508 0.1452700 0.1212324 ]' , 0.0005 );
+assert_close ( resnorm , [ 0.1695104] , 0.0005 );
+
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/qpipopt_base.dia.ref b/tests/unit_tests/qpipopt_base.dia.ref
index ffe546a..5587ddc 100644
--- a/tests/unit_tests/qpipopt_base.dia.ref
+++ b/tests/unit_tests/qpipopt_base.dia.ref
@@ -70,7 +70,7 @@ nbVar = 2;
nbCon = 3;
[xopt,fopt,exitflag,output,lambda] = qpipopt(nbVar,nbCon,Q,p,lb,ub,conMatrix,conLB,conUB)
-assert_close ( x , [0.6666667 1.3333333]' , 1.e-7 );
-assert_close ( f , [ - 8.2222223] , 1.e-7 );
+assert_close ( xopt , [0.6666667 1.3333333]' , 1.e-7 );
+assert_close ( fopt , [ - 8.2222223] , 1.e-7 );
-assert_checkequal( exitflag , 0 );
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/qpipopt_base.tst b/tests/unit_tests/qpipopt_base.tst
index ffe546a..5587ddc 100644
--- a/tests/unit_tests/qpipopt_base.tst
+++ b/tests/unit_tests/qpipopt_base.tst
@@ -70,7 +70,7 @@ nbVar = 2;
nbCon = 3;
[xopt,fopt,exitflag,output,lambda] = qpipopt(nbVar,nbCon,Q,p,lb,ub,conMatrix,conLB,conUB)
-assert_close ( x , [0.6666667 1.3333333]' , 1.e-7 );
-assert_close ( f , [ - 8.2222223] , 1.e-7 );
+assert_close ( xopt , [0.6666667 1.3333333]' , 1.e-7 );
+assert_close ( fopt , [ - 8.2222223] , 1.e-7 );
-assert_checkequal( exitflag , 0 );
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/qpipoptmat_base .dia.ref b/tests/unit_tests/qpipoptmat_base.dia.ref
index aacbc4e..a03fc4e 100644
--- a/tests/unit_tests/qpipoptmat_base .dia.ref
+++ b/tests/unit_tests/qpipoptmat_base.dia.ref
@@ -67,7 +67,7 @@ lb = [0; 0];
ub = [%inf; %inf];
[xopt,fopt,exitflag,output,lambda] = qpipoptmat(H,f,A,b,[],[],lb,ub)
-assert_close ( x , [0.6666667 1.3333333]' , 1.e-7 );
-assert_close ( f , [ - 8.2222223] , 1.e-7 );
+assert_close ( xopt , [0.6666667 1.3333333]' , 1.e-7 );
+assert_close ( fopt , [ - 8.2222223] , 1.e-7 );
-assert_checkequal( exitflag , 0 );
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/qpipoptmat_base .tst b/tests/unit_tests/qpipoptmat_base.tst
index aacbc4e..a03fc4e 100644
--- a/tests/unit_tests/qpipoptmat_base .tst
+++ b/tests/unit_tests/qpipoptmat_base.tst
@@ -67,7 +67,7 @@ lb = [0; 0];
ub = [%inf; %inf];
[xopt,fopt,exitflag,output,lambda] = qpipoptmat(H,f,A,b,[],[],lb,ub)
-assert_close ( x , [0.6666667 1.3333333]' , 1.e-7 );
-assert_close ( f , [ - 8.2222223] , 1.e-7 );
+assert_close ( xopt , [0.6666667 1.3333333]' , 1.e-7 );
+assert_close ( fopt , [ - 8.2222223] , 1.e-7 );
-assert_checkequal( exitflag , 0 );
+assert_checkequal( exitflag , int32(0) );
diff --git a/tests/unit_tests/symphony_mat_base.dia.ref b/tests/unit_tests/symphonymat_base.dia.ref
index 3bf286d..1e6f74a 100644
--- a/tests/unit_tests/symphony_mat_base.dia.ref
+++ b/tests/unit_tests/symphonymat_base.dia.ref
@@ -72,7 +72,7 @@ beq = [ 25, 1.25, 1.25]
intcon = [1 2 3 4];
// Calling Symphony
-[x,f,iter] = symphony_mat(c,intcon,[],[],Aeq,beq,lb,ub);
+[x,f,iter] = symphonymat(c,intcon,[],[],Aeq,beq,lb,ub);
//In Symphony Library for optimal solution status = 227
status = sym_getStatus();
diff --git a/tests/unit_tests/symphony_mat_base.tst b/tests/unit_tests/symphonymat_base.tst
index 629039b..2465738 100644
--- a/tests/unit_tests/symphony_mat_base.tst
+++ b/tests/unit_tests/symphonymat_base.tst
@@ -72,7 +72,7 @@ beq = [ 25, 1.25, 1.25]
intcon = [1 2 3 4];
// Calling Symphony
-[x,f,status,output] = symphony_mat(c,intcon,[],[],Aeq,beq,lb,ub);
+[x,f,status,output] = symphonymat(c,intcon,[],[],Aeq,beq,lb,ub);
assert_close ( x , [1 1 0 1 7.25 0 0.25 3.5]' , 1.e-7 );
assert_close ( f , [ 8495] , 1.e-7 );