第一范文网 - 专业文章范例文档资料分享平台

二维粒子群算法的matlab源程序 (2)

来源:用户分享 时间:2020-06-17 本文由哽喉的话 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

cxl(j)=0.9; end end %2映射

al=-30;bl=30; rxl=al+(bl-al)*cxl; %3搜索

bate = 0.1;

xlhd=xlhd+bate*rxl;

if fitness(part_size,xlhd)>gbest(end) gbest(1:part_size)=xlhd;

gbest(end)=fitness(part_size,xlhd); end %4更新

for j=1:part_size

cxl(j)=4*cxl(j)*(1-cxl(j)); end end end

%-------------混沌--------------------------------

%当前代的最优粒子的适应度(取自)保存

best_record(:,i) = gbest; % gbest:一个行向量 end

pso = gbest; % 最优个体 display(gbest);

figure;

plot(best_record(end,:));% 最优解与代数的进化关系图

best=zeros(part_size,max_gen); for i=1:part_size-1

best(i,:)=best_record(i,:); end

pareto1= zeros(1,max_gen); pareto2= zeros(1,max_gen); for i=1:max_gen

pareto1(i)=f1(part_size, best(:,i) ); pareto2(i)=f2(part_size, best(:,i) ); end figure; i=1:max_gen;

%plot(i,pareto1(i),'r*',i,pareto2(i),'g*'); plot(pareto1(i),pareto2(i),'r+'); xlabel('f1');ylabel('f2'); title('Pareto曲线');

%figure;

%plot(,f2(best_record),);

% movie2avi(F,'pso_2D1.avi','compression','MSVC');

%子函数

%------------------------------------------------------------------------- %------------------------------------------------------------------------- %返回随机的位置

function ini_present=ini_pos(pop_size,part_size)

ini_present = 10*3*rand(pop_size,part_size+1); %初始化当前粒子位置,使其随机的分布在工作空间

%返回一个随机的矩阵,10*(2+1),最后一列将用来保存适应度

%返回随机的速度

function ini_velocity=ini_v(pop_size,part_size)

ini_velocity =20*(rand(pop_size,part_size)); %初始化当前粒子速度,使其随机的分布在速度范围内

%判断是否处于范围内

function flag = Region_in(pos_present,region) [m n]=size(pos_present); % 1*11 n返回解的维数10 flag=1; for j=1:n-1

flag = flag & ( pos_present(1,j)>=region(j,1) ( pos_present(1,j)<=region(j,2) ); end

%初始化适应度

function arr_fitness = ini_fit(pos_present,pop_size,part_size) for k=1:pop_size

arr_fitness(k,1) = fitness(part_size,pos_present(k,1:part_size)); %计算原

)

&

始种群的适应度 end

%*************************************************************************** % 计算适应度

%*************************************************************************** function fit = fitness(n,xp)

%需要求极值的函数,本例即peaks函数

%y0=[-85.4974,-29.9217]; % 注意:这是基准序列,也就是单个最优的极值 y0=[-9.9907,-7.7507]; %y0=[-39.6162,-18.4561]; % y0=[-86.8312,-29.9217];

y1=[f1(n,xp),f2(n,xp)]; % n为粒子维数

fit=graydegree(2,y0,y1); % 关联度在某种意义上就是适应度

%目标函数1 function r=f1(n,x) r=0; for i=1:n-1

r=r+(-10)*exp((-0.2)*sqrt(x(i)^2+x(i+1)^2)); end

%目标函数2 function r=f2(n,x) r=0; for i=1:n

r=r+(abs(x(i)))^0.8+5*sin(x(i)^3); end

%约束函数1 function r=g1(n,x) r=0; for i=1:n r=0; end

%约束函数2 function r=g2(n,x) r=0; for i=1:n r=0; end

% 灰色关联度计算函数 ( 越大相似性越好 )

% tn目标函数个数 x0基准序列(一组值) x1贷检(一组值) function gama = graydegree( tn,y0,y1 ) gama=0; rou =0.5;

kesa= zeros(tn,1); m1= abs(y0(1)-y1(1)) ; m2= abs(y0(1)-y1(1)) ; for i=1:tn

if( abs(y0(i)-y1(i))>m2 ) %------------------应该取大于呢还是小于 m2= abs(y0(i)-y1(i)); end end for i=1:tn

kesa(i) = ( m1+rou*m2)/( abs(y0(i)-y1(i)) +rou*m2 );

gama = gama + kesa(i); end

gama = gama/tn;

% 可行解的判决函数 gn为约束条件的个数(暂时未用) n为解(粒子)的维数 function bool = feasible( x,n ) r=0; %for i=1:gn

r=max( 0, g1(n,x), g2(n,x) );%判断约束条件 %end if(r>0)

bool=0; %不可行解 else

bool=1; %可行解 end

我正在玩搜狐微博,快来“关注”我,了解我的最新动态吧。

http://t.sohu.com/u/19878919

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新经管营销二维粒子群算法的matlab源程序 (2)全文阅读和word下载服务。

二维粒子群算法的matlab源程序 (2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1082012.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top