博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟退火算法
阅读量:3948 次
发布时间:2019-05-24

本文共 1409 字,大约阅读时间需要 4 分钟。

模拟退火算法求最大值:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

clear,close all;clc;y=@(x)10*(x-2*(sin(x)).^2).^2 %目标函数%……初始参数表……%t1=100; %初始温度t0=1; %终止温度w=0.9 %衰减系数(经验在0.9-0.99之间,w越大搜索次数越多)xmax=13,xmin=-13;%搜索范围在[-13,13]之间xcurrent=0 %当前解xnew=0 %新解xbest=0%最优解%……初始参数表……%[hp,hn,hb]=show(y,xmax,xmin,xcurrent,xnew,xbest);%作图while t1>t0    for i=1:100%降一次温搜索100次        step=0.3;%搜索步长        xnew=xcurrent+step*xmax*(rand-0.5);%扰动(rand-0.5)是(-0.5,0.5)之间的随机数        if xnew>xmax||xnew
y(xcurrent) xcurrent=xnew; %记忆化过程 if y(xnew)>y(xbest) xbest=xnew; end %Metroplis准则 elseif exp(y(xnew)-y(xcurrent)./t1)>rand %(y(xnew)-y(xcurrent))<0 xcurrent=xnew;%以一定的概率接受新解 else xcurrent=xcurrent;%否则不接受 end %%更新图像 set(hn,'xdata',xnew,'ydata',y(xnew)); pause(0.1); %0.1秒暂停一下 set(hp,'xdata',xcurrent,'ydata',y(xcurrent)); set(hb,'xdata',xbest,'ydata',y(xbest)); end t1=t1*w;%降温 xlabel(sprintf('最大值=%.1f',y(xbest)),'fontsize',13);%x轴显示动态的最大值,即从局部最优解变化到全局最优解的过程 title(sprintf('T=%.1f',t1),'fontsize',13);%标题显示温度的变化 endfunction [hp,hn,hb]=show(y,xmax,xmin,xcurrent,xnew,xbest)x=xmin:0.1:xmax;plot(x,y(x),'-k');hold onhp=plot(xcurrent,y(xcurrent),'o','markersize',10,'markerfacecolor','r');hn=plot(xnew,y(xnew),'o','markersize',10,'markerfacecolor','y');hb=plot(xbest,y(xbest),'o','markersize',10,'markerfacecolor','b')end

转载地址:http://nsgwi.baihongyu.com/

你可能感兴趣的文章
利用sudo命令为Ubuntu分配管理权限
查看>>
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>
使用tar命令备份Ubuntu系统
查看>>
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>
ubuntu安装命令
查看>>
和上司沟通必备8个黄金句
查看>>
联系查看两张卡的未接电话记录
查看>>
把拒接电话作为已经接电话写到call log中
查看>>
FDN号码完全匹配
查看>>
Cosmos 拨号界面保存号码时先提示选择存储位置
查看>>
换卡或不插卡时删除通话记录
查看>>
静音模式下,来闹钟能响铃。
查看>>
调整提醒的优先级
查看>>
如何添加一个提醒
查看>>
Displaying Card Flip Animations 显示卡片翻转动画
查看>>
Zooming a View 缩放视图
查看>>
Animating Layout Changes 动画布局的更改
查看>>
Controlling Your App’s Volume and Playback 控制应用程序的音量和播放
查看>>