From 436f0daf6e4f241b8fa582a943bad09ddc091f59 Mon Sep 17 00:00:00 2001 From: Harpreet Date: Fri, 11 Dec 2015 12:51:00 +0530 Subject: lsqnonneg added --- demos/lsqnonneg.dem.sce | 20 +++ demos/symphonymat.dem.sce | 7 +- help/en_US/lsqlin.xml | 11 +- help/en_US/lsqnonneg.xml | 102 +++++++++++ help/en_US/master_help.xml | 2 + help/en_US/qpipopt.xml | 2 +- help/en_US/qpipoptmat.xml | 8 +- help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS | Bin 7351 -> 7489 bytes .../scilab_en_US_help/JavaHelpSearch/DOCS.TAB | Bin 850 -> 862 bytes .../en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS | Bin 266 -> 273 bytes .../scilab_en_US_help/JavaHelpSearch/POSITIONS | Bin 35734 -> 36150 bytes help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA | 2 +- help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP | Bin 16384 -> 16384 bytes .../scilab_en_US_help/_LaTeX_lsqnonneg.xml_1.png | Bin 0 -> 1508 bytes help/en_US/scilab_en_US_help/index.html | 6 + help/en_US/scilab_en_US_help/jhelpmap.jhm | 1 + help/en_US/scilab_en_US_help/jhelptoc.xml | 1 + help/en_US/scilab_en_US_help/lsqlin.html | 17 +- help/en_US/scilab_en_US_help/lsqnonneg.html | 106 ++++++++++++ help/en_US/scilab_en_US_help/qpipopt.html | 6 +- help/en_US/scilab_en_US_help/qpipoptmat.html | 8 +- .../section_19f4f1e5726c01d683e8b82be0a7e910.html | 6 + help/en_US/scilab_en_US_help/symphony.html | 2 +- help/en_US/scilab_en_US_help/symphonymat.html | 12 +- help/en_US/symphony.xml | 2 +- help/en_US/symphonymat.xml | 12 +- jar/scilab_en_US_help.jar | Bin 209125 -> 214010 bytes macros/lib | Bin 528 -> 528 bytes macros/lsqlin.bin | Bin 51024 -> 51108 bytes macros/lsqlin.sci | 10 +- macros/lsqnonneg.bin | Bin 0 -> 23532 bytes macros/lsqnonneg.sci | 186 +++++++++++++++++++++ macros/names | 2 +- macros/qpipopt.bin | Bin 49496 -> 49368 bytes macros/qpipopt.sci | 2 +- macros/qpipoptmat.bin | Bin 51124 -> 50868 bytes macros/qpipoptmat.sci | 4 +- macros/symphony.bin | Bin 54860 -> 54708 bytes macros/symphony.sci | 2 +- macros/symphonymat.bin | Bin 60860 -> 60820 bytes macros/symphonymat.sci | 7 +- 41 files changed, 491 insertions(+), 55 deletions(-) create mode 100644 demos/lsqnonneg.dem.sce create mode 100644 help/en_US/lsqnonneg.xml create mode 100644 help/en_US/scilab_en_US_help/_LaTeX_lsqnonneg.xml_1.png create mode 100644 help/en_US/scilab_en_US_help/lsqnonneg.html create mode 100644 macros/lsqnonneg.bin create mode 100644 macros/lsqnonneg.sci diff --git a/demos/lsqnonneg.dem.sce b/demos/lsqnonneg.dem.sce new file mode 100644 index 0000000..f9d5d78 --- /dev/null +++ b/demos/lsqnonneg.dem.sce @@ -0,0 +1,20 @@ +mode(1) +// +// Demo of lsqnonneg.sci +// + +A basic lsqnonneg problem +C = [ +0.0372 0.2869 +0.6861 0.7071 +0.6233 0.6245 +0.6344 0.6170]; +d = [ +0.8587 +0.1781 +0.0747 +0.8405]; +[xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d) +halt() // Press return to continue + +//========= E N D === O F === D E M O =========// diff --git a/demos/symphonymat.dem.sce b/demos/symphonymat.dem.sce index f069d38..553cd99 100644 --- a/demos/symphonymat.dem.sce +++ b/demos/symphonymat.dem.sce @@ -4,7 +4,7 @@ mode(1) // // Objective function -c = [350*5,330*3,310*4,280*6,500,450,400,100]' +c = [350*5,330*3,310*4,280*6,500,450,400,100]'; // Lower Bound of variable lb = repmat(0,1,8); // Upper Bound of variables @@ -36,8 +36,7 @@ objCoef = -1*[ 504 803 667 1103 834 585 811 856 690 832 846 813 868 793 .. 959 668 507 855 986 831 821 825 868 852 832 828 799 686 .. 510 671 575 740 510 675 996 636 826 1022 1140 654 909 799 .. 1162 653 814 625 599 476 767 954 906 904 649 873 565 853 1008 632]'; -//Constraint Matrix - +//Constraint Matrix conMatrix = [ //Constraint 1 42 41 523 215 819 551 69 193 582 375 367 478 162 898 .. 550 553 298 577 493 183 260 224 852 394 958 282 402 604 .. @@ -79,7 +78,7 @@ conMatrix = [ //Constraint 1 483 336 765 637 981 980 202 35 594 689 602 76 767 693 .. 893 160 785 311 417 748 375 362 617 553 474 915 457 261 350 635 ; ]; -nbVar = size(objCoef,1) +nbVar = size(objCoef,2) conUB=[11927 13727 11551 13056 13460 ]; // Lower Bound of variables lb = repmat(0,1,nbVar) diff --git a/help/en_US/lsqlin.xml b/help/en_US/lsqlin.xml index 92dbd91..1216bae 100644 --- a/help/en_US/lsqlin.xml +++ b/help/en_US/lsqlin.xml @@ -50,17 +50,19 @@ 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. + a vector of doubles, contains lower bounds of the variables. UB : - a vector of doubles, where n is number of variables, contains upper bounds of the variables. + a vector of doubles, 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. + resnorm : + a double, objective value returned as the scalar value norm(C*x-d)^2. + residual : + a vector of doubles, solution residuals returned as the vector C*x-d. exitflag : Integer identifying the reason the algorithm terminated. output : @@ -74,7 +76,6 @@ Description Search the minimum of a constrained linear least square problem specified by : -find the minimum of f(x) such that diff --git a/help/en_US/lsqnonneg.xml b/help/en_US/lsqnonneg.xml new file mode 100644 index 0000000..95c8da1 --- /dev/null +++ b/help/en_US/lsqnonneg.xml @@ -0,0 +1,102 @@ + + + + + + + + lsqnonneg + Solves nonnegative least-squares curve fitting problems. + + + + + Calling Sequence + + x = lsqnonneg(C,d) + x = lsqnonneg(C,d,param) + [xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg( ... ) + + + + + + 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. + xopt : + a vector of doubles, the computed solution of the optimization problem. + resnorm : + a double, objective value returned as the scalar value norm(C*x-d)^2. + residual : + a vector of doubles, solution residuals returned as the vector C*x-d. + 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 + +Solves nonnegative least-squares curve fitting problems specified by : + + + +\begin{eqnarray} +&\mbox{min}_{x} +& 1/2||C*x - d||_2^2 \\ +& & x \geq 0 \\ +\end{eqnarray} + + + +We are calling IPOpt for solving the nonnegative least-squares curve fitting problems, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird. + + + + + + + Examples + + + + + Authors + + Harpreet Singh + + + diff --git a/help/en_US/master_help.xml b/help/en_US/master_help.xml index 05f5acd..999a2d7 100644 --- a/help/en_US/master_help.xml +++ b/help/en_US/master_help.xml @@ -2,6 +2,7 @@ + @@ -83,6 +84,7 @@ Symphony Toolbox &a3d4ec65684b561d91f7a255acd23f51c; +&aa4a031935f5eed6cfc8fc4a49823b00b; &a6b85f6e0c98751f20b68663a23cb4cd2; &a44928acec52adf395379e18fcff06730; &a8549a3935858ed104f4749ca2243456a; diff --git a/help/en_US/qpipopt.xml b/help/en_US/qpipopt.xml index 2edd0ec..c0756f8 100644 --- a/help/en_US/qpipopt.xml +++ b/help/en_US/qpipopt.xml @@ -46,7 +46,7 @@ LB : a vector of doubles, contains lower bounds of the variables. UB : - a vector of doubles, where n is number of variables, contains upper bounds of the variables. + a vector of doubles, contains upper bounds of the variables. conMatrix : a matrix of doubles, contains matrix representing the constraint matrix conLB : diff --git a/help/en_US/qpipoptmat.xml b/help/en_US/qpipoptmat.xml index 3c9e6a4..f3830f4 100644 --- a/help/en_US/qpipoptmat.xml +++ b/help/en_US/qpipoptmat.xml @@ -39,9 +39,9 @@ Parameters H : - a vector of doubles, where n is number of variables, represents coefficients of quadratic in the quadratic problem. + a symmetric matrix of doubles, 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 + 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 : @@ -51,9 +51,9 @@ 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. + a vector of doubles, contains lower bounds of the variables. UB : - a vector of doubles, where n is number of variables, contains upper bounds of the variables. + a vector of doubles, contains upper bounds of the variables. x0 : a vector of doubles, contains initial guess of variables. param : diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS index d7917b0..2aa9c2c 100644 Binary files a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS and b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS 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 1359fb5..954ffd9 100644 Binary files a/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB and b/help/en_US/scilab_en_US_help/JavaHelpSearch/DOCS.TAB differ diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS index ae82060..d5a0fd6 100644 Binary files a/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS and b/help/en_US/scilab_en_US_help/JavaHelpSearch/OFFSETS differ diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS index a0643a5..1fbf883 100644 Binary files a/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS and b/help/en_US/scilab_en_US_help/JavaHelpSearch/POSITIONS differ diff --git a/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA b/help/en_US/scilab_en_US_help/JavaHelpSearch/SCHEMA index c32f6ae..93aea58 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=1413 id2=1 +TMAP bs=2048 rt=1 fl=-1 id1=1435 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 dd780c5..141985f 100644 Binary files a/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP and b/help/en_US/scilab_en_US_help/JavaHelpSearch/TMAP differ diff --git a/help/en_US/scilab_en_US_help/_LaTeX_lsqnonneg.xml_1.png b/help/en_US/scilab_en_US_help/_LaTeX_lsqnonneg.xml_1.png new file mode 100644 index 0000000..b923eeb Binary files /dev/null and b/help/en_US/scilab_en_US_help/_LaTeX_lsqnonneg.xml_1.png differ diff --git a/help/en_US/scilab_en_US_help/index.html b/help/en_US/scilab_en_US_help/index.html index af31f16..c942e96 100644 --- a/help/en_US/scilab_en_US_help/index.html +++ b/help/en_US/scilab_en_US_help/index.html @@ -38,6 +38,12 @@ +
  • lsqnonnegSolves nonnegative least-squares curve fitting problems.
  • + + + + +
  • qpipoptSolves a linear quadratic problem.
  • diff --git a/help/en_US/scilab_en_US_help/jhelpmap.jhm b/help/en_US/scilab_en_US_help/jhelpmap.jhm index 8950140..f046f8a 100644 --- a/help/en_US/scilab_en_US_help/jhelpmap.jhm +++ b/help/en_US/scilab_en_US_help/jhelpmap.jhm @@ -4,6 +4,7 @@ + diff --git a/help/en_US/scilab_en_US_help/jhelptoc.xml b/help/en_US/scilab_en_US_help/jhelptoc.xml index 5cac88f..7722be3 100644 --- a/help/en_US/scilab_en_US_help/jhelptoc.xml +++ b/help/en_US/scilab_en_US_help/jhelptoc.xml @@ -4,6 +4,7 @@ + diff --git a/help/en_US/scilab_en_US_help/lsqlin.html b/help/en_US/scilab_en_US_help/lsqlin.html index 96c6de1..bf5a259 100644 --- a/help/en_US/scilab_en_US_help/lsqlin.html +++ b/help/en_US/scilab_en_US_help/lsqlin.html @@ -20,7 +20,7 @@ - qpipopt >> + lsqnonneg >> @@ -58,17 +58,19 @@
    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.

    +

    a vector of doubles, contains lower bounds of the variables.

    UB : -

    a vector of doubles, where n is number of variables, contains upper bounds of the variables.

    +

    a vector of doubles, 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.

    +
    resnorm : +

    a double, objective value returned as the scalar value norm(C*x-d)^2.

    +
    residual : +

    a vector of doubles, solution residuals returned as the vector C*x-d.

    exitflag :

    Integer identifying the reason the algorithm terminated.

    output : @@ -77,8 +79,7 @@

    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

    +

    Search the minimum of a constrained linear least square problem specified by :

    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.

    @@ -143,7 +144,7 @@ find the minimum of f(x) such that

    - qpipopt >> + lsqnonneg >> diff --git a/help/en_US/scilab_en_US_help/lsqnonneg.html b/help/en_US/scilab_en_US_help/lsqnonneg.html new file mode 100644 index 0000000..4f2f661 --- /dev/null +++ b/help/en_US/scilab_en_US_help/lsqnonneg.html @@ -0,0 +1,106 @@ + + + lsqnonneg + + + +
    + + + + +
    + << lsqlin + + + Symphony Toolbox + + + qpipopt >> + +
    +
    +
    + + + + Symphony Toolbox >> Symphony Toolbox > lsqnonneg + +

    +

    lsqnonneg

    +

    Solves nonnegative least-squares curve fitting problems.

    + + +

    Calling Sequence

    +
    x = lsqnonneg(C,d)
    +x = lsqnonneg(C,d,param)
    +[xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg( ... )
    + +

    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.

    +
    xopt : +

    a vector of doubles, the computed solution of the optimization problem.

    +
    resnorm : +

    a double, objective value returned as the scalar value norm(C*x-d)^2.

    +
    residual : +

    a vector of doubles, solution residuals returned as the vector C*x-d.

    +
    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

    +

    Solves nonnegative least-squares curve fitting problems specified by :

    +

    +

    We are calling IPOpt for solving the nonnegative least-squares curve fitting problems, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird.

    +

    + +

    Examples

    +
    A basic lsqnonneg problem
    +C = [
    +0.0372    0.2869
    +0.6861    0.7071
    +0.6233    0.6245
    +0.6344    0.6170];
    +d = [
    +0.8587
    +0.1781
    +0.0747
    +0.8405];
    +[xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d)
    + +

    Authors

    +
    • Harpreet Singh
    +
    + +
    + + + + + + +
    Report an issue
    + << lsqlin + + + Symphony Toolbox + + + qpipopt >> + +
    +
    +
    + + diff --git a/help/en_US/scilab_en_US_help/qpipopt.html b/help/en_US/scilab_en_US_help/qpipopt.html index c0e1b71..7588c1d 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 @@
    - << lsqlin + << lsqnonneg @@ -54,7 +54,7 @@
    LB :

    a vector of doubles, contains lower bounds of the variables.

    UB : -

    a vector of doubles, where n is number of variables, contains upper bounds of the variables.

    +

    a vector of doubles, contains upper bounds of the variables.

    conMatrix :

    a matrix of doubles, contains matrix representing the constraint matrix

    conLB : @@ -130,7 +130,7 @@ find the minimum of f(x) such that

    Report an issue
    - << lsqlin + << lsqnonneg diff --git a/help/en_US/scilab_en_US_help/qpipoptmat.html b/help/en_US/scilab_en_US_help/qpipoptmat.html index 10cb590..e1d301a 100644 --- a/help/en_US/scilab_en_US_help/qpipoptmat.html +++ b/help/en_US/scilab_en_US_help/qpipoptmat.html @@ -47,9 +47,9 @@

    Parameters

    H : -

    a vector of doubles, where n is number of variables, represents coefficients of quadratic in the quadratic problem.

    +

    a symmetric matrix of doubles, 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

    +

    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 : @@ -59,9 +59,9 @@
    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.

    +

    a vector of doubles, contains lower bounds of the variables.

    UB : -

    a vector of doubles, where n is number of variables, contains upper bounds of the variables.

    +

    a vector of doubles, contains upper bounds of the variables.

    x0 :

    a vector of doubles, contains initial guess of variables.

    param : 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 14e8136..7219261 100644 --- a/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html +++ b/help/en_US/scilab_en_US_help/section_19f4f1e5726c01d683e8b82be0a7e910.html @@ -37,6 +37,12 @@ +
  • lsqnonnegSolves nonnegative least-squares curve fitting problems.
  • + + + + +
  • qpipoptSolves a linear quadratic problem.
  • diff --git a/help/en_US/scilab_en_US_help/symphony.html b/help/en_US/scilab_en_US_help/symphony.html index 48ea705..14e9118 100644 --- a/help/en_US/scilab_en_US_help/symphony.html +++ b/help/en_US/scilab_en_US_help/symphony.html @@ -48,7 +48,7 @@
    nbCon :

    a double, number of constraints.

    objCoeff : -

    a 1 x n matrix of doubles, where n is number of variables, represents coefficients of the variables in the objective.

    +

    a vector of doubles, represents coefficients of the variables in the objective.

    isInt :

    a vector of boolean, represents wether a variable is constrained to be an integer.

    LB : diff --git a/help/en_US/scilab_en_US_help/symphonymat.html b/help/en_US/scilab_en_US_help/symphonymat.html index b559c8a..2e89728 100644 --- a/help/en_US/scilab_en_US_help/symphonymat.html +++ b/help/en_US/scilab_en_US_help/symphonymat.html @@ -45,7 +45,7 @@

    Parameters

    f : -

    a vector of doubles, where n is number of variables, contains coefficients of the variables in the objective

    +

    a vector of doubles, contains coefficients of the variables in the objective

    intcon :

    Vector of integer constraints, specified as a vector of positive integers. The values in intcon indicate the components of the decision variable x that are integer-valued. intcon has values from 1 through number of variable.

    A : @@ -63,9 +63,11 @@
    options :

    a list containing the the parameters to be set.

    xopt : -

    a 1xn matrix of doubles, the computed solution of the optimization problem

    +

    a vector of double, the computed solution of the optimization problem

    fopt : -

    a 1x1 matrix of doubles, the function value at x

    +

    a doubles, the function value at x

    +
    status : +

    status flag from symphony.

    output :

    The output data structure contains detailed informations about the optimization process.

    @@ -78,7 +80,7 @@ find the minimum or maximum of f(x) such that

    Examples

    // Objective function
    -c = [350*5,330*3,310*4,280*6,500,450,400,100]
    +c = [350*5,330*3,310*4,280*6,500,450,400,100]';
     // Lower Bound of variable
     lb = repmat(0,1,8);
     // Upper Bound of variables
    @@ -109,7 +111,7 @@ find the minimum or maximum of f(x) such that

    957 798 669 625 467 1051 552 717 654 388 559 555 1104 783 .. 959 668 507 855 986 831 821 825 868 852 832 828 799 686 .. 510 671 575 740 510 675 996 636 826 1022 1140 654 909 799 .. -1162 653 814 625 599 476 767 954 906 904 649 873 565 853 1008 632] +1162 653 814 625 599 476 767 954 906 904 649 873 565 853 1008 632]'; //Constraint Matrix conMatrix = [ //Constraint 1 42 41 523 215 819 551 69 193 582 375 367 478 162 898 .. diff --git a/help/en_US/symphony.xml b/help/en_US/symphony.xml index 972bfc1..a80f022 100644 --- a/help/en_US/symphony.xml +++ b/help/en_US/symphony.xml @@ -40,7 +40,7 @@ nbCon : a double, number of constraints. objCoeff : - a 1 x n matrix of doubles, where n is number of variables, represents coefficients of the variables in the objective. + a vector of doubles, represents coefficients of the variables in the objective. isInt : a vector of boolean, represents wether a variable is constrained to be an integer. LB : diff --git a/help/en_US/symphonymat.xml b/help/en_US/symphonymat.xml index 1328167..881092b 100644 --- a/help/en_US/symphonymat.xml +++ b/help/en_US/symphonymat.xml @@ -37,7 +37,7 @@ Parameters f : - a vector of doubles, where n is number of variables, contains coefficients of the variables in the objective + a vector of doubles, contains coefficients of the variables in the objective intcon : Vector of integer constraints, specified as a vector of positive integers. The values in intcon indicate the components of the decision variable x that are integer-valued. intcon has values from 1 through number of variable. A : @@ -55,9 +55,11 @@ options : a list containing the the parameters to be set. xopt : - a 1xn matrix of doubles, the computed solution of the optimization problem + a vector of double, the computed solution of the optimization problem fopt : - a 1x1 matrix of doubles, the function value at x + a doubles, the function value at x + status : + status flag from symphony. output : The output data structure contains detailed informations about the optimization process. @@ -91,7 +93,7 @@ We are calling SYMPHONY written in C by gateway files for the actual computation Examples // \begin{eqnarray} @@ -212,7 +212,7 @@ function [xopt,resnorm,residual,exitflag,output,lambda] = lsqlin (varargin) x0=x0'; end - //Check the size of f which should equal to the number of variable + //Check the size of d 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); diff --git a/macros/lsqnonneg.bin b/macros/lsqnonneg.bin new file mode 100644 index 0000000..e9e1295 Binary files /dev/null and b/macros/lsqnonneg.bin differ diff --git a/macros/lsqnonneg.sci b/macros/lsqnonneg.sci new file mode 100644 index 0000000..c65b1ba --- /dev/null +++ b/macros/lsqnonneg.sci @@ -0,0 +1,186 @@ +// 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] = lsqnonneg (varargin) + // Solves nonnegative least-squares curve fitting problems. + // + // Calling Sequence + // x = lsqnonneg(C,d) + // x = lsqnonneg(C,d,param) + // [xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg( ... ) + // + // 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. + // xopt : a vector of doubles, the computed solution of the optimization problem. + // resnorm : a double, objective value returned as the scalar value norm(C*x-d)^2. + // residual : a vector of doubles, solution residuals returned as the vector C*x-d. + // 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 + // Solves nonnegative least-squares curve fitting problems specified by : + // + // + // \begin{eqnarray} + // &\mbox{min}_{x} + // & 1/2||C*x - d||_2^2 \\ + // & & x \geq 0 \\ + // \end{eqnarray} + // + // + // We are calling IPOpt for solving the nonnegative least-squares curve fitting problems, IPOpt is a library written in C++. The code has been written by ​Andreas Wächter and ​Carl Laird. + // + // Examples + // A basic lsqnonneg problem + // C = [ + // 0.0372 0.2869 + // 0.6861 0.7071 + // 0.6233 0.6245 + // 0.6344 0.6170]; + // d = [ + // 0.8587 + // 0.1781 + // 0.0747 + // 0.8405]; + // [xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d) + // + // 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 < 2 | rhs > 3 ) then + errmsg = msprintf(gettext("%s: Unexpected number of input arguments : %d provided while should be in the set of [2 3]"), "lsqlin", rhs); + error(errmsg) + end + + C = varargin(1); + d = varargin(2); + nbVar = size(C,2); + if ( rhs<3 | size(varargin(3)) ==0 ) then + param = list(); + else + param =varargin(10); + 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 + + // Check if the user gives row vector + // and Changing it to a column matrix + + + if (size(d,2)== [nbVar]) then + d=d'; + 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 + + //Converting it into Quadratic Programming Problem + + Q = C'*C; + p = [-C'*d]'; + op_add = d'*d; + LB = repmat(0,1,nbVar); + UB = repmat(%inf,1,nbVar); + x0 = repmat(0,1,nbVar);; + conMatrix = []; + nbCon = size(conMatrix,1); + conLB = []; + conUB = [] ; + [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 18923c4..e04f783 100644 --- a/macros/names +++ b/macros/names @@ -1,8 +1,8 @@ lsqlin +lsqnonneg qpipopt qpipoptmat setOptions symphony symphony_call -symphony_mat symphonymat diff --git a/macros/qpipopt.bin b/macros/qpipopt.bin index e13d5a9..2fd432e 100644 Binary files a/macros/qpipopt.bin and b/macros/qpipopt.bin differ diff --git a/macros/qpipopt.sci b/macros/qpipopt.sci index ccf10e4..8b7cecd 100644 --- a/macros/qpipopt.sci +++ b/macros/qpipopt.sci @@ -25,7 +25,7 @@ function [xopt,fopt,exitflag,output,lambda] = qpipopt (varargin) // Q : a symmetric matrix of doubles, represents coefficients of quadratic in the quadratic problem. // p : a vector of doubles, represents coefficients of linear in the quadratic problem // LB : a vector of doubles, contains lower bounds of the variables. - // UB : a vector of doubles, where n is number of variables, contains upper bounds of the variables. + // UB : a vector of doubles, contains upper bounds of the variables. // conMatrix : a matrix of doubles, contains matrix representing the constraint matrix // conLB : a vector of doubles, contains lower bounds of the constraints. // conUB : a vector of doubles, contains upper bounds of the constraints. diff --git a/macros/qpipoptmat.bin b/macros/qpipoptmat.bin index 07c9386..98ec979 100644 Binary files a/macros/qpipoptmat.bin and b/macros/qpipoptmat.bin differ diff --git a/macros/qpipoptmat.sci b/macros/qpipoptmat.sci index 9f20870..4b8e427 100644 --- a/macros/qpipoptmat.sci +++ b/macros/qpipoptmat.sci @@ -29,8 +29,8 @@ function [xopt,fopt,exitflag,output,lambda] = qpipoptmat (varargin) // 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. + // LB : a vector of doubles, contains lower bounds of the variables. + // UB : a vector of doubles, 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. diff --git a/macros/symphony.bin b/macros/symphony.bin index d126d9f..3dab926 100644 Binary files a/macros/symphony.bin and b/macros/symphony.bin differ diff --git a/macros/symphony.sci b/macros/symphony.sci index c5b1cdf..eba9e64 100644 --- a/macros/symphony.sci +++ b/macros/symphony.sci @@ -21,7 +21,7 @@ function [xopt,fopt,status,output] = symphony (varargin) // Parameters // nbVar : a double, number of variables. // nbCon : a double, number of constraints. - // objCoeff : a 1 x n matrix of doubles, where n is number of variables, represents coefficients of the variables in the objective. + // objCoeff : a vector of doubles, represents coefficients of the variables in the objective. // isInt : a vector of boolean, represents wether a variable is constrained to be an integer. // LB : a vector of doubles, represents lower bounds of the variables. // UB : a vector of doubles, represents upper bounds of the variables. diff --git a/macros/symphonymat.bin b/macros/symphonymat.bin index 95bba1a..8d42926 100644 Binary files a/macros/symphonymat.bin and b/macros/symphonymat.bin differ diff --git a/macros/symphonymat.sci b/macros/symphonymat.sci index 9e1ffaf..33a1163 100644 --- a/macros/symphonymat.sci +++ b/macros/symphonymat.sci @@ -20,7 +20,7 @@ function [xopt,fopt,status,iter] = symphonymat (varargin) // [xopt,fopt,status,output] = symphonymat( ... ) // // Parameters - // f : a vector of doubles, where n is number of variables, contains coefficients of the variables in the objective + // f : a vector of doubles, contains coefficients of the variables in the objective // intcon : Vector of integer constraints, specified as a vector of positive integers. The values in intcon indicate the components of the decision variable x that are integer-valued. intcon has values from 1 through number of variable. // A : Linear inequality constraint matrix, specified as a matrix of doubles. A represents the linear coefficients in the constraints A*x ≤ b. A has size M-by-N, where M is the number of constraints and N is number of variables // b : Linear inequality constraint vector, specified as a vector of doubles. b represents the constant vector in the constraints A*x ≤ b. b has length M, where A is M-by-N @@ -29,8 +29,9 @@ function [xopt,fopt,status,iter] = symphonymat (varargin) // lb : Lower bounds, specified as a vector or array of doubles. lb represents the lower bounds elementwise in lb ≤ x ≤ ub. // ub : Upper bounds, specified as a vector or array of doubles. ub represents the upper bounds elementwise in lb ≤ x ≤ ub. // options : a list containing the the parameters to be set. - // xopt : a 1xn matrix of doubles, the computed solution of the optimization problem - // fopt : a 1x1 matrix of doubles, the function value at x + // xopt : a vector of double, the computed solution of the optimization problem + // fopt : a doubles, the function value at x + // status : status flag from symphony. // output : The output data structure contains detailed informations about the optimization process. // // Description -- cgit