📄 e681.m
字号:
%------------------------------------------------------------------
% Example 6.8.1: Simulated Annealing
%------------------------------------------------------------------
clc
clear
global r1 r2 % coordinates of minimum
r1 = 3;
r2 = 2;
% Initialize
n = 2;
p = 100;
m = 5000;
f0 = -1;
f1 = 1;
e1 = 0.1;
e2 = 1.e-4;
mu = 100;
x1 = zeros (p,1);
x2 = zeros (p,1);
x0 = zeros (n,1);
x = zeros (n,1);
a = zeros (n,1);
b = zeros (n,1);
F = zeros (p,p);
% Initialize
fprintf ('Example 6.8.1: Simulated Annealing\n');
e1 = prompt ('Enter error tolerance',0,1,e1);
c = prompt ('Enter localization parameter',0,1,0.1);
a0 = prompt ('Enter lower limit of x',-1000,1000,-10);
b0 = prompt ('Enter upper limit of x',a0,1000,10);
a = a + a0;
b = b + b0;
% Find the minimum using Boltzmann distribution
seed = 1000;
x = x0;
[x,ev,j] = anneal (x,f0,f1,e1,e2,seed,c,mu,m,a,b,'funf681');
fprintf ('\n\nError tolerance = %.3f',e1);
fprintf ('\nLocalization parameter = %.3f',c);
fprintf ('\n[a,b] = [%f,%f]',a0,b0);
fprintf ('\nTotal iterations = %g.',j);
fprintf ('\nFunction evaluations = %g.',ev);
fprintf ('\nOptimal x = [%.7f,%.7f]',x(1),x(2));
fprintf ('\nOptimal f(x) = %.7f\n',funf681(x));
% Plot objective function
fprintf ('Plotting objective surface ...\n');
for i = 1 : p
x1(i) = (i-1)*2*r1/(p-1);
for j = 1 : p
x2(j) = (j-1)*2*r2/(p-1);
x(1) = x1(i);
x(2) = x2(j);
F(i,j) = funf681(x);
end
end
plotxyz (x1,x2,F,'','x_1','x_2','f(x)')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -