📄 td.asv
字号:
%%初始化
clear all;clc;
%构造函数
[x,y] = meshgrid([-4:0.5:4]);
z=(sin(x.*y)+x.^2+y.^2);
%初始化各个参数
k=1;alpha=0.95;
%初始温度
T=1000;
%给一个随机位置
xx=(rand-1/2)*8;yy=(rand-1/2)*8;
%记录坐标
xxx=[xx];yyy=[yy];
%%退火算法
for i=1:10000
deltax=(rand-0.5)*0.04;deltay=(rand-0.5)*0.04;
deltaz=sin((xx+deltax)*(yy+deltay))+(xx+deltax)^2+(yy+deltay)^2 ...
-(sin(xx*yy)+xx^2+yy^2);
P=exp(-deltaz/(k*T));
if sign(deltaz) == -1
xx=xx+deltax;
yy=yy+deltay;
else if sign(rand-P) == -1
xx=xx+deltax;
yy=yy+deltay;
end
end
T=alpha*T;
%%xxx=[xxx xx];
%%yyy=[yyy yy];
if i/100 == fix(i/100)
xxx=[xxx xx];
yyy=[yyy yy];
end
end
subplot(2,2,1);surf(x,y,z);
subplot(2,2,2);plot3(x,y,z);hold on;plot3(xxx,yyy,sin(xxx.*yyy)+xxx.^2+yyy.^2,'-*');
subplot(2,2,3);plot3(xxx,yyy,sin(xxx.*yyy)+xxx.^2+yyy.^2,'-*');
subplot(2,2,4);plot(xxx,yyy);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -