ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:16.59KB ,
资源ID:26360557      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26360557.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(带交叉因子的粒子群优化算法MATLAB源程序.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

带交叉因子的粒子群优化算法MATLAB源程序.docx

1、带交叉因子的粒子群优化算法MATLAB源程序带交叉因子的粒子群优化算法matlab源程序(2009-08-28 11:05:06)标签: 分类:程序源代码:其中文件,也就是主程序如下 %-%-名称:带交叉因子的改进PSO算法%-功能:求解多维无约束优化问题%-特点:收敛性强,还可以加入变异算子%-作者:孙明杰 %-单位:中国矿业大学计算数学硕2005%-日期: 2006年8月26日%-%格式标准化clear all;clc;format long;%初始化各个因子c1=; %学习因子c1c2=; %学习因子c2w=; %惯性权重wN=20; %粒子群规模D=6; %搜索空间维数(本程序适合3维

2、及以上,不能求解1,2维)eps=10(-6); %满足条件限制的误差(在不知道最小值时候不用设置)MaxDT=500; %粒子群繁殖的代数%初始化粒子的速度和位置,数据结构用矩阵A表示for i=1:N for j=1:2*D A(i,j)=rand; endendfor i=1:N for j=2*D+1:3*D A(i,j)=A(i,j-2*D); endend%计算各个粒子的适应度for i=1:N A(i,3*D+1)=fitness(A(i,1:D),D);end%对粒子的适应度进行排序B=sortrows(A,3*D+1);%排序后适应度低的前面一半粒子直接进入下一代NextGe

3、neration=zeros(N,3*D+1);for i=1:N/2 for j=1:3*D+1 NextGeneration(i,j)=B(i,j); endend%后一半粒子进行遗传选择和交叉操作for i=1:N/2 for j=1:3*D+1 Cross(i,j)=B(i+N/2,j); endend%产生一个随机的交叉位置for i=1:N/4 Anumber=randperm(D-1); if Anumber(1)=1 position=Anumber(1); else position=Anumber(2); end %交叉进行 for j=position:D-1 temp=

4、Cross(i,j); Cross(i,j)=Cross(N/2-i+1,j); Cross(N/2-i+1,j)=temp; endend%交叉结束,进行更新for i=1:N/2 Cross(i,3*D+1)=fitness(Cross(i,1:D),D); if Cross(i,3*D+1)B(i+N/2,3*D+1) for j=2*D+1:3*D Cross(i,j)=Cross(i,j-2*D); end else for j=2*D+1:3*D Cross(i,j)=B(i,j); end endend%下面选择最好的粒子N/2个进入下一代Pool=zeros(N,3*D+1);

5、for i=1:N/2 for j=1:3*D+1 Pool(i,j)=B(i+N/2,j); endendfor i=1+N/2:N for j=1:3*D+1 Pool(i,j)=Cross(i-N/2,j); endend%POOLX表示排序后的粒子选择池PoolX=sortrows(Pool,3*D+1);for i=1+N/2:N for j=1:3*D+1 NextGeneration(i,j)=PoolX(i-N/2,j); endendPbest=NextGeneration(i,2*D+1:3*D);for i=2:N if NextGeneration(i,3*D+1)fi

6、tness(Pbest,D) Pbest=NextGeneration(i,2*D+1:3*D); endend%根据粒子群公式进行迭代(Stander PSO Step)%速度更新for i=1:N for j=D+1:2*D A(i,j)=w*NextGeneration(i,j)+c1*rand*(NextGeneration(i,j+D)-NextGeneration(i,j-D)+c2*rand*(Pbest(j-D)-NextGeneration(i,j-D); endend%位置更新for i=1:N for j=1:D A(i,j)=NextGeneration(i,j)+A(

7、i,j+D); end A(i,3*D+1)=fitness(A(i,1:D),D); if A(i,3*D+1)NextGeneration(i,3*D+1) for j=2*D+1:3*D A(i,j)=A(i,j-2*D); end else for j=2*D+1:3*D A(i,j)=NextGeneration(i,j-2*D); end endend%下面进入主要循环,循环到最大次数得到最优解和最小值%DDTime=1;for time=1:MaxDT B=sortrows(A,3*D+1); NextGeneration=zeros(N,3*D+1); for i=1:N/2

8、for j=1:3*D+1 NextGeneration(i,j)=B(i,j); end end %遗传选择交叉 for i=1:N/2 for j=1:3*D+1 Cross(i,j)=B(i+N/2,j); end end for i=1:N/4 Anumber=randperm(D-1); if Anumber(1)=1 position=Anumber(1); else position=Anumber(2); end for j=position:D-1 temp=Cross(i,j); Cross(i,j)=Cross(N/2-i+1,j); Cross(N/2-i+1,j)=t

9、emp; end end %交叉结束,进行更新 for i=1:N/2 Cross(i,3*D+1)=fitness(Cross(i,1:D),D); if Cross(i,3*D+1)B(i+N/2,3*D+1) for j=2*D+1:3*D Cross(i,j)=Cross(i,j-2*D); end else for j=2*D+1:3*D Cross(i,j)=B(i,j); end end end %下面选择最好的粒子N/2个进入下一代 Pool=zeros(N,3*D+1); for i=1:N/2 for j=1:3*D+1 Pool(i,j)=B(i+N/2,j); end

10、end for i=1+N/2:N for j=1:3*D+1 Pool(i,j)=Cross(i-N/2,j); end end PoolX=sortrows(Pool,3*D+1); for i=1+N/2:N for j=1:3*D+1 NextGeneration(i,j)=PoolX(i-N/2,j); end end Pbest=NextGeneration(i,2*D+1:3*D); for i=2:N if NextGeneration(i,3*D+1)fitness(Pbest,D) Pbest=NextGeneration(i,2*D+1:3*D); end end %根据

11、粒子群公式进行迭代 for i=1:N for j=D+1:2*D A(i,j)=w*NextGeneration(i,j)+c1*rand*(NextGeneration(i,j+D)-NextGeneration(i,j-D)+c2*rand*(Pbest(j-D)-NextGeneration(i,j-D); end end for i=1:N for j=1:D A(i,j)=NextGeneration(i,j)+A(i,j+D); end A(i,3*D+1)=fitness(A(i,1:D),D); if A(i,3*D+1)NextGeneration(i,3*D+1) for

12、 j=2*D+1:3*D A(i,j)=A(i,j-2*D); end else for j=2*D+1:3*D A(i,j)=NextGeneration(i,j-2*D); end end end Pg(time)=fitness(Pbest,D); %DDTime=DDTime+1; %if fitness(Pbest,D)eps %break; %endend%算法结束,得到的结果显示如下:disp(*)disp(最后得到的最优位置为:)X=Pbestdisp(得到的函数最小值为:)Minimize=fitness(Pbest,D)disp(*)%绘制进化代数和适应度关系曲线图xx=linspace(1,MaxDT,MaxDT);yy=Pg(xx);plot(xx,yy,b-)hold ongrid ontitle(带交叉因子的粒子群优化算法进化代数与适应度值关系曲线图)legend(粒子适应度曲线走势)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1