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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

用粒子群算法求解多目标优化问题的Pareto解.docx

1、用粒子群算法求解多目标优化问题的Pareto解粒子群算法程序ticD=10;%粒子群中粒子的个数%w=0.729;%w 为惯性因子 wmin=1.2;wmax=1.4;c1=1.49445;%正常数,成为加速因子c2=1 .49445;%正常数,成为加速因子Loop_max=50;%最大迭代次数%初始化粒子群for i=1:DX(i)=rand(1)*(-5-7)+7;V(i)=1;f1(i)=X(y2;f2(i)=(X(i)-2)A2;endLoop=1;%迭代计数器while Loop0%判断第一辆车配送城市个数是否大于 0,如果大于0则a1=Xr(i,k1(:);%找出第一辆车配送城市顺

2、序号b1=sort(a1);%对找出第一辆车的顺序号进行排序G1(i)=0;%初始化第一辆车的配送量k51=;am=;for j1=1:nb1am=find(b1(j1)=Xr(i,:);k51(j1)=intersect(k1,am);% 计算第一辆车配送城市的顺序号G1(i)=G1(i)+g(k51(j1)+1);%计算第一辆车的配送量endk61=;k6仁0,k51,0;%定义第一辆车的配送路径L1(i)=0;%初始化第一辆车的配送路径长度for k11=1:nb1+1L1(i)=L1(i)+Dista nce(k61(k11)+1,k61(k11+1)+1);% 计算第一辆车的配送路径

3、长度 endelse%如果第一辆车配送的城市个数不大于 0则G1(i)=0;%第一辆车的配送量设为 0L1(i)=0;%第一辆车的配送路径长度设为 0endk2=fi nd(2=Xv(i,:);%找出第二辆车配送的城市编号 nb2=size(k2,2);%计算第二辆车配送城市的个数if nb20%判断第二辆车配送城市个数是否大于 0,如果大于0则a2=Xr(i,k2(:);%找出第二辆车配送城市的顺序号b2=sort(a2);%对找出的第二辆车的顺序号进行排序 G2(i)=0;%初始化第二辆车的配送量k52=;bm=;for j2=1:nb2bm=find(b2(j2)=Xr(i,:);k52

4、(j2)=intersect(k2,bm);% 计算第二辆车配送城市的顺序号 G2(i)=G2(i)+g(k52(j2)+1);%计算第二辆车的配送量endk62=;k62=0,k52,0;%定义第二辆车的配送路径L2(i)=0;%初始化第二辆车的配送路径长度for k22=1:nb2+1L2(i)=L2(i)+Dista nce(k62(k22)+1,k62(k22+1)+1);% 计算第二辆车的路径长度 endelse%如果第二辆车配送的城市个数不大于 0则G2(i)=0;%第二辆车的配送量设为 0L2(i)=0;%第二辆车的配送路径长度设为 0endk3=fi nd(3=Xv(i,:);

5、%找出第三辆车配送的城市编号 nb3=size(k3,2);%计算第三辆车配送城市的个数if nb30%判断第三辆车配送城市个数是否大于 0,如果大于0则a3=Xr(i,k3(:);%找出第三辆车配送城市的顺序号b3=sort(a3);%对找出的第三辆车的顺序号进行排序 G3(i)=0;%初始化第三辆车的配送量k53=;cm=;for j3=1:nb3cm=find(b3(j3)=Xr(i,:);k53(j3)=intersect(k3,cm);% 计算第三辆车配送城市的顺序号 G3(i)=G3(i)+g(k53(j3)+1);%计算第三辆车的配送量endk63=;k63=0,k53,0;%定

6、义第三辆车的配送路径L3(i)=0;%初始化第三辆车的配送路径长度for k33=1:nb3+1L3(i)=L3(i)+Dista nce(k63(k33)+1,k63(k33+1)+1);% 计算第三辆车的路径长度 endelse%如果第三辆车配送的城市个数不大于 0则G3(i)=0;%第三辆车的配送量设为 0L3(i)=0;%第三辆车的配送路径长度设为 0endL(i)=0;%初始化每个粒子对应的配送方案总路径长度L(i)=L1(i)+L2(i)+L3(i);%计算每个粒子对应的配送方案总路径长度if L(i)Lg&G1(i)Q&G2(i)Q&G3(i)Q%如果第i个粒子的总路径长度优于历

7、史最优粒子并 且满足车辆容量要求Xvg(:)=Xv(i,:);%将粒子i设为历史最优粒子Xrg(:)=Xr(i,:);%将粒子i设为历史最优粒子Lg=L(i);%将粒子i的总路径长度设为最优粒子对应的配送方案的总路径长度 elseXvg(:)=Xvg(:);%最优粒子保持不变Xrg(:)=Xrg(:);%最优粒子保持不变Lg=Lg;%最优粒子所对应的配送方案的总路径长度也不变endLimi n( i)=100000;%初始化每个粒子代表的配送方案的历史最优总路径长度if L(i)K-1Vv(i,j)=K-1;elseif Vv(i,j)KXv(i,j)=K;elseif Xv(i,j)0%判断

8、第一辆车配送城市个数是否大于 0,如果大于0则a1=Xrg(k1(:);%找出第一辆车配送城市顺序号b1=sort(a1);%对找出第一辆车的顺序号进行排序G1=0;%初始化第一辆车的配送量k51=;am=;for j1=1:nb1am=find(b1(j1)=Xrg(:);k51(j1)=intersect(k1,am);% 计算第一辆车配送城市的顺序号G仁G1+g(k51(j1)+1);%计算第一辆车的配送量endk61=;k61=0,k51,0;% 定义第一辆车的配送路径L1=0;%初始化第一辆车的配送路径长度for k11=1:nb1+1L仁L1+Dista nce(k61(k11)+

9、1,k61(k11+1)+1);% 计算第一辆车的配送路径长度 endelse%如果第一辆车配送的城市个数不大于 0则G仁0;%第一辆车的配送量设为 0L1=0;%第 一辆车的配送路径长度设为 0endk2=fi nd(2=Xvg(:);%找出第二辆车配送的城市编号k2=k2;nb2=size(k2,2);%计算第二辆车配送城市的个数if nb20%判断第二辆车配送城市个数是否大于 0,如果大于0则a2=Xrg(k2(:);%找出第二辆车配送城市的顺序号b2=sort(a2);%对找出的第二辆车的顺序号进行排序G2=0;%初始化第二辆车的配送量k52=;bm=;for j2=1:nb2bm=f

10、ind(b2(j2)=Xrg(:);k52(j2)=intersect(k2,bm);% 计算第二辆车配送城市的顺序号 G2=G2+g(k52(j2)+1);%计算第二辆车的配送量endk62=;k62=0,k52,0;%定义第二辆车的配送路径 L2=0;%初始化第二辆车的配送路径长度for k22=1:nb2+1L2=L2+Dista nce(k62(k22)+1,k62(k22+1)+1);% 计算第二辆车的路径长度 endelse%如果第二辆车配送的城市个数不大于 0则G2=0;%第二辆车的配送量设为 0L2=0;%第二辆车的配送路径长度设为 0endk3=fi nd(3=Xvg(:);

11、%找出第三辆车配送的城市编号k3=k3;nb3=size(k3,2);%计算第三辆车配送城市的个数if nb30%判断第三辆车配送城市个数是否大于 0,如果大于0则a3=Xrg(k3(:);%找出第三辆车配送城市的顺序号b3=sort(a3);%对找出的第三辆车的顺序号进行排序G3=0;%初始化第三辆车的配送量k53=;cm=;for j3=1:nb3cm=find(b3(j3)=Xrg(:);k53(j3)=intersect(k3,cm);% 计算第三辆车配送城市的顺序号G3=G3+g(k53(j3)+1);%计算第三辆车的配送量endk63=;k63=0,k53,0;%定义第三辆车的配送

12、路径L3=0;%初始化第三辆车的配送路径长度for k33=1:nb3+1L3=L3+Dista nce(k63(k33)+1,k63(k33+1)+1);% 计算第三辆车的路径长度 endelse%如果第三辆车配送的城市个数不大于 0则G3=0;%第三辆车的配送量设为 0L3=0;%第三辆车的配送路径长度设为 0endk61k62k63x=City(:,1);y=City(:,2);%对各个城市进行顺序标号 max_text=0,1,2,3,4,5,6,7,;text(x+1,y+1,max_text)%画出最优粒子所代表的配送方案路径for i=1:nb1+2 short1(i)=k61(

13、i)+1;endfor i=1:nb2+2short2(i)=k62(i)+1;endfor i=1:nb3+2short3(i)=k63(i)+1;endline(x(short1),y(short1),Marker,o)line(x(short2),y(short2),Marker,o)line(x(short3),y(short3),Marker,o)toc%计算程序的运行时间Time=num2str(toc)clear allticK=3;%车辆数D=200;%粒子群中粒子的个数Q=1;%每辆车的容量%w=0.729;%w 为惯性因子wmi n=1.2;wmax=1.4;c1=1.49

14、445;%正常数,成为加速因子c2=1.49445;%正常数,成为加速因子Loop_max=50;%最大迭代次数%初始化城市坐标City=18,54;22,60;58,69;71,71;83,46;91,38;24,42;18,40;n=size(City,1);%城市个数,包含中心仓库N=n-1;%发货点任务数for i=1:nfor j=1:nDistance(i,j)=sqrt(City(i,1)-City(j,1)A2+(City(i,2)-City(j,2)A2);% 各城市节点之间的距离矩阵 end endg=0,0.89,0.14,0.28,0.33,0.21,0.41,0.57

15、;% 各发货点的货运量%初始化粒子群for i=1:Dfor j=1:NXv(i,j)=ra ndi(K,1);%初始化粒子群中粒子的位置Vv(i,j)=ra ndi(2*K-1,1)-K;%初始化粒子群中粒子的位置变化率Vr(i,j)=randi(2*N-1,1)-N;% 初始化粒子群中离子的位置变化率Xvl(i,j)=Xv(i,j);%初始化粒子群中每个粒子的最优位置endendfor i=1:Da=randperm(N);for j=1:NXr(i,j)=a(j);%初始化粒子群中粒子的位置Xrl(i,j)=Xr(i,j);%初始化粒子群中每个粒子的最优位置endendLg=100000

16、;%初始化最优粒子对应的配送方案的总路径长度Xvg=o nes(1,N);%粒子群中最优的粒子Xrg=o nes(1,N);%粒子群中最优的粒子Loop=1;%迭代计数器while Loop0%判断第一辆车配送城市个数是否大于 0,如果大于0则a1=Xr(i,k1(:);%找出第一辆车配送城市顺序号b1=sort(a1);% 对找出第一辆车的顺序号进行排序G1(i)=0;%初始化第一辆车的配送量k51=;am=;for j1=1:nb1am=find(b1(j1)=Xr(i,:);k51(j1)=intersect(k1,am);% 计算第一辆车配送城市的顺序号G1(i)=G1(i)+g(k5

17、1(j1)+1);%计算第一辆车的配送量 end k61=;k61=0,k51,0;% 定义第一辆车的配送路径L1(i)=0;%初始化第一辆车的配送路径长度for k11=1:nb1+1L1(i)=L1(i)+Dista nce(k61(k11)+1,k61(k11+1)+1);% 计算第一辆车的配送路径长度 endelse%如果第一辆车配送的城市个数不大于 0则G1(i)=0;%第一辆车的配送量设为 0L1(i)=0;%第一辆车的配送路径长度设为 0endk2=fi nd(2=Xv(i,:);%找出第二辆车配送的城市编号 nb2=size(k2,2);%计算第二辆车配送城市的个数if nb2

18、0%判断第二辆车配送城市个数是否大于 0,如果大于0则a2=Xr(i,k2(:);%找出第二辆车配送城市的顺序号b2=sort(a2);% 对找出的第二辆车的顺序号进行排序G2(i)=0;%初始化第二辆车的配送量k52=; bm=;for j2=1:nb2 bm=find(b2(j2)=Xr(i,:);k52(j2)=intersect(k2,bm);% 计算第二辆车配送城市的顺序号 G2(i)=G2(i)+g(k52(j2)+1);%计算第二辆车的配送量endk62=;k62=0,k52,0;% 定义第二辆车的配送路径L2(i)=0;%初始化第二辆车的配送路径长度for k22=1:nb2+

19、1 L2(i)=L2(i)+Dista nce(k62(k22)+1,k62(k22+1)+1);% 计算第二辆车的路径长度 endelse%如果第二辆车配送的城市个数不大于 0则G2(i)=0;%第二辆车的配送量设为 0L2(i)=0;%第二辆车的配送路径长度设为 0endk3=fi nd(3=Xv(i,:);%找出第三辆车配送的城市编号nb3=size(k3,2);%计算第三辆车配送城市的个数if nb30%判断第三辆车配送城市个数是否大于 0,如果大于0则a3=Xr(i,k3(:);%找出第三辆车配送城市的顺序号b3=sort(a3);%对找出的第三辆车的顺序号进行排序G3(i)=0;%

20、初始化第三辆车的配送量k53=;cm=;for j3=1:nb3cm=find(b3(j3)=Xr(i,:);k53(j3)=intersect(k3,cm);% 计算第三辆车配送城市的顺序号G3(i)=G3(i)+g(k53(j3)+1);%计算第三辆车的配送量endk63=;k63=0,k53,0;%定义第三辆车的配送路径L3(i)=0;%初始化第三辆车的配送路径长度for k33=1:nb3+1L3(i)=L3(i)+Dista nce(k63(k33)+1,k63(k33+1)+1);% 计算第三辆车的路径长度endelse%如果第三辆车配送的城市个数不大于 0则G3(i)=0;%第三

21、辆车的配送量设为 0L3(i)=0;%第三辆车的配送路径长度设为 0endL(i)=0;%初始化每个粒子对应的配送方案总路径长度L(i)=L1(i)+L2(i)+L3(i);%计算每个粒子对应的配送方案总路径长度if L(i)Lg&G1(i)Q&G2(i)Q&G3(i)Q%如果第i个粒子的总路径长度优于历史最优粒子并且满足车辆容量要求Xvg(:)=Xv(i,:);%将粒子i设为历史最优粒子Xrg(:)=Xr(i,:);%将粒子i设为历史最优粒子Lg=L(i);%各粒子i的总路径长度设为最优粒子对应的配送方案的总路径长度elseXvg(:)=Xvg(:);%最优粒子保持不变Xrg(:)=Xrg(:);%最优粒子保持不变Lg=Lg;%最优粒子所对应的配送方案的总路径长度也不变endLimi n( i)=100000;%初始化每个粒子代表的配送方案的历史最优总路径长度if L(i)K-1Vv(i,j)=K-1;elseif Vv(i,j)KXv(i,j)=K;elseif Xv(i,j)0%判断第一辆车配送城市个数是否大于 0,如果大于0则a1=Xrg(k1(:);%找出第一辆车配送城市顺序号b1=sort(a1);%对找出第一辆车的顺序号进行排序G1=0;%初始化第一辆车的配送量k51=;am=

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

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