summaryrefslogtreecommitdiff
path: root/macros/fgoalattain.sci
diff options
context:
space:
mode:
authorharpreetrathore2016-01-26 21:52:24 +0530
committerharpreetrathore2016-01-26 21:52:24 +0530
commit2db803c34c6df02379ec88df3a7aa186700d9fbf (patch)
treee6eab5a1eed79eae24996d68c6c3d2befe0659ae /macros/fgoalattain.sci
parentb97c2cb250a9af50112302461eb032fc31a02aae (diff)
parent8efadb6d8eb346ba8939af8993569772e8982da4 (diff)
downloadFOSSEE-Optimization-toolbox-2db803c34c6df02379ec88df3a7aa186700d9fbf.tar.gz
FOSSEE-Optimization-toolbox-2db803c34c6df02379ec88df3a7aa186700d9fbf.tar.bz2
FOSSEE-Optimization-toolbox-2db803c34c6df02379ec88df3a7aa186700d9fbf.zip
Merge pull request #3 from animeshbaranawal/developer
Functions created, fminimax and fgoalattain logic fixed for off option
Diffstat (limited to 'macros/fgoalattain.sci')
-rw-r--r--macros/fgoalattain.sci88
1 files changed, 56 insertions, 32 deletions
diff --git a/macros/fgoalattain.sci b/macros/fgoalattain.sci
index 5f519b4..d6bec24 100644
--- a/macros/fgoalattain.sci
+++ b/macros/fgoalattain.sci
@@ -89,7 +89,7 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
// <listitem>Default Values : options = list("MaxIter", [3000], "CpuTime", [600]);</listitem>
// </itemizedlist>
//
- // By default, the gradient options for fminimax are turned off and and fmincon does the gradient opproximation of minmaxObjfun. In case the GradObj option is off and GradConstr option is on, fminimax approximates minmaxObjfun gradient using numderivative toolbox.
+ // By default, the gradient options for fminimax are turned off and and fmincon does the gradient opproximation of gattainObjfun. In case the GradObj option is off and GradConstr option is on, fminimax approximates gattainObjfun gradient using numderivative toolbox.
//
// If we can provide exact gradients, we should do so since it improves the convergence speed of the optimization algorithm.
//
@@ -103,7 +103,7 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
// <programlisting>
// [c, ceq] = confun(x)
// </programlisting>
- // where x is a n x 1 matrix of dominmaxUbles, c is a 1 x nni matrix of doubles and ceq is a 1 x nne matrix of doubles (nni : number of nonlinear inequality constraints, nne : number of nonlinear equality constraints).
+ // where x is a n x 1 matrix of doubles, c is a 1 x nni matrix of doubles and ceq is a 1 x nne matrix of doubles (nni : number of nonlinear inequality constraints, nne : number of nonlinear equality constraints).
// On input, the variable x contains the current point and, on output, the variable c must contain the nonlinear inequality constraints and ceq must contain the nonlinear equality constraints.
//
// By default, the gradient options for fminimax are turned off and and fmincon does the gradient opproximation of confun. In case the GradObj option is on and GradCons option is off, fminimax approximates confun gradient using numderivative toolbox.
@@ -156,7 +156,7 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
// </itemizedlist>
//
// Examples
- // function f1 = fun(x)
+ // function f1 = gattainObjfun(x)
// f1(1)=2*x(1)*x(1)+x(2)*x(2)-48*x(1)-40*x(2)+304
// f1(2)=-x(1)*x(1)-3*x(2)*x(2)
// f1(3)=x(1)+3*x(2)-18
@@ -167,39 +167,45 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
//
// goal=[-5,-3,-2,-1,-4];
// weight=abs(goal)
- // //xopt = [-0.0000011 -63.999998 -2.0000002 -8 3.485D-08]
- // //fval = [4 3.99]
+ // gval =
+ // [- 0.0000011
+ // - 63.999998
+ // - 2.0000002
+ // - 8.
+ // 3.485D-08]
+ // z =
+ // [4. 3.99]
//
- // //Run fgoalattain
- // [xopt,fval,attainfactor,exitflag,output,lambda]=fgoalattain(fun,x0,goal,weight)
+ // Run fgoalattain
+ // [x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(gattainObjfun,x0,goal,weight)
//
// Authors
// Prajwala TM, Sheetal Shalini , 2015
// Check number of input and output arguments
[gattainLhs,gattainRhs] = argn()
- fgoalattainCheckrhs("fgoalattain", gattainRhs, [4 6 8 10 11 12])
- fgoalattainChecklhs("fgoalattain", gattainLhs, 1:6)
+ Checkrhs("fgoalattain", gattainRhs, [4 6 8 10 11 12])
+ Checklhs("fgoalattain", gattainLhs, 1:6)
// initialisation of fun
gattainObjfun = varargin(1)
- fgoalattainChecktype("fgoalattain", gattainObjfun, "fun", 1, "function")
+ Checktype("fgoalattain", gattainObjfun, "fun", 1, "function")
// initialisation of x0
gattainStartpoint = varargin(2)
- fgoalattainChecktype("fgoalattain", gattainStartpoint, "x0", 2, "constant")
+ Checktype("fgoalattain", gattainStartpoint, "x0", 2, "constant")
gattainNumvar = size(gattainStartpoint,"*")
- fgoalattainCheckvector("fgoalattain", gattainStartpoint, "x0", 2, gattainNumvar)
+ Checkvector("fgoalattain", gattainStartpoint, "x0", 2, gattainNumvar)
gattainStartpoint = gattainStartpoint(:)
// initialisation of goal
goal=varargin(3)
- fgoalattainChecktype("fgoalattain",goal,"goal",3,"constant")
+ Checktype("fgoalattain",goal,"goal",3,"constant")
// initialisation of weight
weight=varargin(4)
- fgoalattainChecktype("fgoalattain",weight,"weight",4,"constant")
+ Checktype("fgoalattain",weight,"weight",4,"constant")
//initialisation of A and b
if(gattainRhs < 5) then
@@ -210,13 +216,13 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
gattainB = varargin(6)
end
- fgoalattainChecktype("fgoalattain", gattainA, "A", 5, "constant")
- fgoalattainChecktype("fgoalattain", gattainB, "b", 6, "constant")
+ Checktype("fgoalattain", gattainA, "A", 5, "constant")
+ Checktype("fgoalattain", gattainB, "b", 6, "constant")
gattainNumrowA = size(gattainA,"r")
if(gattainA <> []) then
- fgoalattainCheckdims("fgoalattain", gattainA, "A", 5, [gattainNumrowA gattainNumvar])
- fgoalattainCheckvector("fgoalattain", gattainB, "b", 6, gattainNumrowA)
+ Checkdims("fgoalattain", gattainA, "A", 5, [gattainNumrowA gattainNumvar])
+ Checkvector("fgoalattain", gattainB, "b", 6, gattainNumrowA)
gattainB = gattainB(:)
end
@@ -229,13 +235,13 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
gattainBeq = varargin(8)
end
- fgoalattainChecktype("fgoalattain", gattainAeq, "Aeq", 7, "constant")
- fgoalattainChecktype("fgoalattain", gattainBeq, "beq", 8, "constant")
+ Checktype("fgoalattain", gattainAeq, "Aeq", 7, "constant")
+ Checktype("fgoalattain", gattainBeq, "beq", 8, "constant")
gattainNumrowAeq = size(gattainAeq,"r")
if(gattainAeq <> []) then
- fgoalattainCheckdims("fgoalattain", gattainAeq, "Aeq", 7, [gattainNumrowAeq gattainNumvar])
- fgoalattainCheckvector("fgoalattain", gattainBeq, "beq", 8, gattainNumrowAeq)
+ Checkdims("fgoalattain", gattainAeq, "Aeq", 7, [gattainNumrowAeq gattainNumvar])
+ Checkvector("fgoalattain", gattainBeq, "beq", 8, gattainNumrowAeq)
gattainBeq = gattainBeq(:)
end
@@ -248,17 +254,17 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
gattainUb = varargin(10)
end
- fgoalattainChecktype("fgoalattain", gattainLb, "lb", 9, "constant")
- fgoalattainChecktype("fgoalattain", gattainUb, "ub", 10, "constant")
+ Checktype("fgoalattain", gattainLb, "lb", 9, "constant")
+ Checktype("fgoalattain", gattainUb, "ub", 10, "constant")
// Check dimensions of lb and ub
if(gattainLb <> []) then
- fgoalattainCheckvector("fgoalattain", gattainLb, "lb", 9, gattainNumvar)
+ Checkvector("fgoalattain", gattainLb, "lb", 9, gattainNumvar)
gattainLb = gattainLb(:)
end
if(gattainUb <> []) then
- fgoalattainCheckvector("fgoalattain", gattainUb, "ub", 10, gattainNumvar)
+ Checkvector("fgoalattain", gattainUb, "ub", 10, gattainNumvar)
gattainUb = gattainUb(:)
end
@@ -274,7 +280,7 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
gattainNonlinfun = varargin(11)
end
- fgoalattainChecktype("fgoalattain", gattainNonlinfun, "nonlcon", 11, "function")
+ Checktype("fgoalattain", gattainNonlinfun, "nonlcon", 11, "function")
// initialisation of default options
if(gattainRhs < 12) then
@@ -313,12 +319,30 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
fgaCPU = gattainUserOptions(2*i); //Setting the Maximum CPU Time as per user entry
case "GradObj" then
- flag1=1;
- gattainFGrad = gattainUserOptions(2*i);
+ if (type(gattainUserOptions(2*i))==10) then
+ if (convstr(gattainUserOptions(2*i))=="off") then
+ flag1 = 0;
+ else
+ errmsg = msprintf(gettext("%s: Unrecognized String %s entered for the option- %s."), "fgoalattain",gattainUserOptions(2*i), gattainUserOptions(2*i-1));
+ error(errmsg);
+ end
+ else
+ flag1 = 1;
+ gattainFGrad = gattainUserOptions(2*i);
+ end
case "GradCon" then
- flag2=1;
- gattainCGrad = gattainUserOptions(2*i);
+ if (type(gattainUserOptions(2*i))==10) then
+ if (convstr(gattainUserOptions(2*i))=="off") then
+ flag2 = 0;
+ else
+ errmsg = msprintf(gettext("%s: Unrecognized String %s entered for the option- %s."), "fgoalattain",gattainUserOptions(2*i), gattainUserOptions(2*i-1));
+ error(errmsg);
+ end
+ else
+ flag2 = 1;
+ gattainCGrad = gattainUserOptions(2*i);
+ end
else
errmsg = msprintf(gettext("%s: Unrecognized gattainUserOptionseter name ''%s''."), "fminimax", gattainUserOptions(2*i-1));
@@ -326,7 +350,7 @@ function [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(varargin)
end
end
- // Checking if minmaxFGrad and minmaxCGrad are functions
+ // Checking if gattainFGrad and gattainCGrad are functions
if (flag1==1) then
if (type(gattainFGrad) ~= 11 & type(gattainFGrad) ~= 13) then
errmsg = msprintf(gettext("%s: Expected function for Gradient of Objective"), "fminimax");