网站大量收购独家精品文档,联系QQ:2885784924

《MATLAB基础及应用》课件 第6章 进化算法.pptx

《MATLAB基础及应用》课件 第6章 进化算法.pptx

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

MATLAB基础及应用;第6章进化算法;第6章进化算法;第6章进化算法;6.1模拟退火法;6.1模拟退火法;6.1.1经典Metropolis退火法;6.1.1经典Metropolis退火法;6.1.1经典Metropolis退火法;function[glx,gly,k]=MinSimulatedAnnealing(f,x,sigma)

%使用模拟退火法求函数最小值

%f 目标函数(句柄)

%x 迭代初值

%sigma扰动系数

%glx 历史最优解

%gly 最优解的函数值

%k 迭代次数

if(nargin3),sigma=1;end

h=@(delta,T)1/(1+exp(delta/T)); %接受新解的概率密度函数

y=f(x);

glx=x;

gly=y;

N=0;

k=1;

T0=100; %初始温度

T=T0;;while(N=10)

x1=x+1/(N+1)*sigma^2*randn(size(x));%产生新解

y1=f(x1); %计算新解的函数值

delta=y1-y;

if(delta0)%如果新解更优,则接受新解为当前解

x=x1;

y=y1;

N=0;

if(glyy) %历史最优保存策略

glx=x;

gly=y;

end

else

if(randh(delta,T))%以一定概率接受新解

x=x1;

y=y1;

end

N=N+1;%计算连续没有找到更好的解的次数

end

k=k+1;

T=T0/log(k); %降温

end

end;6.1.1经典Metropolis退火法;6.1.1经典Metropolis退火法;6.1.2快速退火法;function[glx,gly,k]=MinFastSimulatedAnnealing(f,x,sigma)

......

x1=x+1/(N+1)*sigma^2*tan(-pi/2+pi*rand(size(x))); %产生新解

......

T=T0/k; %降温

......;6.1.2快速退火法;6.1.3极快速退火法;6.1.3极快速退火法;function[glx,gly,k]=MinVeryFastSimulatedAnnealing(f,x,a,b,c)

%使用极快速模拟退火法求函数最小值

%f 目标函数(句柄)

%x 迭代初值

%[a,b] 变量取值范围,若f是多元函数,则a和b都是向量

%c 衰减因子

%glx 历史最优解

%gly 最优解的函数值

%k 迭代次数

if(nargin5),c=0.7;end

n=size(x,2);

h=1/2;

H=@(delta,T)(1-(1-h)*delta./T).^(1/(1-h));%接受新解的概率密度函数

y=f(x);

glx=x;gly=y;

N=0;k=1;

T0=100;T=T0; %初始温度

while(N=10)

upsilon=2*rand()-1;

u=rand(size(x));

zeta=sign(upsilon)*T*((1+1/T).^u-1);;x1=1/3*(x+zeta.*(b-a)+a+b);%产生新解

y1=f(x1); %计算新解的函数值

delta=y1-y;

if(delta0) %如果新解更优,则接受新解为当前解

x=x1;y=y1;

N=0;

if(glyy) %历史最优保存策略

glx=x;

gly=y;

end

else

if(randH(delta,T))%否则以一定概率接受新解

x=x1;y=y1;

end

N=N+1;%计算连续没有找到更好的解的次数

end

k=k+1;

T=T0*exp(-c*k^(1/n)); %降温

end

end;6.1.3极快速退火法;从图中可以看出,该函数存在非常多的极小值点,使用传统方法求解容易陷入局部极小值;6.2进化策略

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档