summaryrefslogtreecommitdiff
path: root/code/fminunc/SStemperature.sce
blob: cdbd08d96dfc47085d5c8d3d2564ebb4e20d8e17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//Reference: S.S. Rao,Engineering Optimization Theory and Practice, 3rd enlarged edition, New age international publishers,2011,chapter 6
// The steady state temperature (t1 and t2) at two points (mid point and the free end) of the one dimensional fin correspond to the minimum of the function. 
//   f(t1,t2) = 0.6382*t(1)^2 + 0.3191*t(2)^2 - 0.2809*t(1)*t(2) - 67.906*t(1) - 14.29*t(2)
//=====================================================================
// 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(t)
    f = 0.6382*t(1)^2 + 0.3191*t(2)^2 - 0.2809*t(1)*t(2) - 67.906*t(1) - 14.29*t(2);
endfunction
// Initial guess
x0 = [100 200];
disp(x0, "Initial guess given to the solver is ")
input("Press enter to proceed: ")
[xopt,fopt,exitflag,output,gradient,hessian] = fminunc(ObjectiveFunction,x0)
// Result representation
clc
select exitflag
case 0 
    disp("Optimal Solution Found")
    disp(xopt', "The steady state temperature at the points are")
    disp(fopt, "The optimum objective function value is")
case 1
    disp("Maximum Number of Iterations Exceeded. Output may not be optimal.")
    disp(xopt', "The temperature at the points are")
    disp(fopt, "The objective function value is")
case 2
    disp("Maximum CPU Time exceeded. Output may not be optimal.")
    disp(xopt', "The temperature at the points are")
    disp(fopt, "The objective function value is")
case 3
    disp("Stop at Tiny Step.")
    disp(xopt', "The temperature at the points are")
    disp(fopt, "The objective function value is")
case 4
    disp("Solved To Acceptable Level.")
    disp(xopt', "The temperature at the points are")
    disp(fopt, "The objective function value is")
case 5 
    disp("Converged to a point of local infeasibility.")
end

disp(output)