summaryrefslogtreecommitdiff
path: root/code/fminimax/NL_MiniMax_Problem.sce
diff options
context:
space:
mode:
Diffstat (limited to 'code/fminimax/NL_MiniMax_Problem.sce')
-rw-r--r--code/fminimax/NL_MiniMax_Problem.sce63
1 files changed, 63 insertions, 0 deletions
diff --git a/code/fminimax/NL_MiniMax_Problem.sce b/code/fminimax/NL_MiniMax_Problem.sce
new file mode 100644
index 0000000..759f56b
--- /dev/null
+++ b/code/fminimax/NL_MiniMax_Problem.sce
@@ -0,0 +1,63 @@
+//C. Charalambous and A.R. Conn, "An efficient method to solve the minimax problem directly",SIAM Journal on Numerical Analysis 15 (1978) 162-187
+
+//======================================================================
+// Copyright (C) 2018 - IIT Bombay - FOSSEE
+// 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
+// Author: Remya Kommadath
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//======================================================================
+clc
+// Objective function
+function f = ObjectiveFunction(X)
+ g(1) = 0;
+ g(2) = -2*X(1)^2 - 3*X(2)^4 - X(3) - 4*X(4)^2 - 5*X(5) + 127;
+ g(3) = -7*X(1) - 3*X(2) - 10*X(3)^2 - X(4) + X(5) + 282;
+ g(4) = -23*X(1) - X(2)^2 - 6*X(6)^2 + 8*X(7) + 196;
+ g(5) = -4*X(1)^2 - X(2)^2 + 3*X(1)*X(2) - 2*X(3)^2 - 5*X(6) + 11*X(7);
+ f(1) = (X(1) - 10)^2 + 5*(X(2) - 12)^2 + X(3)^4 + 3*(X(4) - 11)^2 + 10*X(5)^6 + 7*X(6)^2 + X(7)^4 - 4*X(6)*X(7) - 10*X(6) - 8*X(7);
+ for i = 2:5
+ f(i) = f(1) - 10*g(i);
+ end
+ f1(2:5) = f(1) + 10*g(2:5);
+endfunction
+// Non linear inequality constraints
+function [C, Ceq] = NLConstraints(X)
+ C(1) = -(-2*X(1)^2 - 3*X(2)^4 - X(3) - 4*X(4)^2 - 5*X(5) + 127);
+ C(2) = -(-7*X(1) - 3*X(2) - 10*X(3)^2 - X(4) + X(5) + 282);
+ C(3) = -(-23*X(1) - X(2)^2 - 6*X(6)^2 + 8*X(7) + 196);
+ C(4) = -(-4*X(1)^2 - X(2)^2 + 3*X(1)*X(2) - 2*X(3)^2 - 5*X(6) + 11*X(7));
+ C = C';
+ Ceq = [];
+endfunction
+
+A =[]; b = []; Aeq = []; beq = [];lb = [];ub = [];
+// Initial guess given to the solver
+x0 = [2.33050, 1.95137, -0.47754, 4.36573, -0.62449, 1.03813, 1.59423];
+// Solving the solvers
+options = list("maxiter", 4000, "cputime", [6000]);
+[x,fval,maxfval,exitflag,output,lambda] = fminimax(ObjectiveFunction,x0,A,b,Aeq,beq,lb,ub,NLConstraints,options);
+
+// Result representation
+clc
+select exitflag
+case 0
+ disp("Optimal Solution Found")
+ disp(x0,"The initial guess given to the solver")
+ disp(x',"The optimal solution determined by the solver")
+ disp(maxfval,"The optimum value of the objective function")
+case 1
+ disp("Maximum Number of Iterations Exceeded. Output may not be optimal")
+case 2
+ disp("Maximum amount of CPU Time exceeded. Output may not be optimal")
+case 3
+ disp("Stop at Tiny Step")
+case 4
+ disp("Solved To Acceptable Level")
+case 5
+ disp("Converged to a point of local infeasibility")
+end