⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 td.asv

📁 神经网络(应用模拟退火算法求函数极值问题)
💻 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 + -