【布局优化】基于粒子群货物配装问题最优化matlab源码
2021/10/1 9:41:01
本文主要是介绍【布局优化】基于粒子群货物配装问题最优化matlab源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 模型介绍
模型参考这里。
2 部分代码
%clear all; tic clc; %format long; %------给定初始化条件---------------------------------------------- c1=2; %学习因子1 c2=2; %学习因子2 w=0.7; %惯性权重 MaxDT=20; %最大迭代次数 HX=10; D=8; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 %K=10^6; %设置精度(在已知最小值时候用) M=110;%货车载重 V=250;%货车容积 weight=[64,52,50,41,22,20,14,2];%物体重量 volume=[110,108,96,80,49,50,40,7];%物体体积 %load('psodata.mat'); %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ x=round(rand([N D])); %随机初始化位置 v=rand([N D]); %随机初始化速度 %------先计算各个粒子的适应度,并初始化Pi和Pg---------------------- for i=1:N plbest=fitness(x(i,:),D,M,V,weight,volume);%plbest表示个体最优值 pxbest=x(i,:);%pxbest表示个体最优位置 end gxbest=x(1,:); %gxbest为全局最优位置 for i=2:N if fitness(x(i,:),D,M,V,weight,volume)>fitness(gxbest,D,M,V,weight,volume) gxbest=x(i,:); end end %fitness(gxbest,D,M,V,weight,volume) %%------进入主要循环,按照公式依次迭代,直到满足精度要求------------ sumv=0; summ=0; for H=1:HX Sum=0; SUM=0; for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand()*(pxbest-floor(x(i,:)))+c2*rand()*(gxbest-floor(x(i,:))); x(i,:)=x(i,:)+v(i,:); %%用于把每个分量取为0和1 for j=1:D if rand()<=1/(1+exp(-v(i,j))) %Sigmoid函数 x(i,j)=0; else x(i,j)=1; end end %x(i,:) x1=crossover(x(i,:),gxbest,D);%把当前粒子与全局最优粒子的位置进行交叉 %x2=crossover(x1,y,D); x3=mutation(x1);%把当前粒子的位置进行变异 if fitness(x3,D,M,V,weight,volume)>plbest plbest=fitness(x3,D,M,V,weight,volume); pxbest=x3; end end if plbest>fitness(gxbest,D,M,V,weight,volume) gxbest=pxbest; end glbest=fitness(gxbest,D,M,V,weight,volume);%glbest表示全局最优值 Sum=Sum+glbest(1); aveg1=Sum/t;%体积平均 SUM=SUM+glbest(2); aveg2=SUM/t;%载重平均 Z1(t)=aveg1; Z2(t)=aveg2; % X(t)=Pbest(1); %Y(t)=Pbest(2); %Q(t)=Pbest(3); end %%----------------最后给出计算结果----------------------------- disp('*************************************************************') disp('函数的全局最优位置为:') Solution=gxbest disp('最后得到的优化极值为:') Result=fitness(gxbest,D,M,V,weight,volume) WV=Result(1) WM=Result(2) Z1(H)=WV; Z2(H)=WM; %disp('箱子的体积利用率:') sumv=sumv+WV; %disp('货车的载重利用率:') summ=summ+WM; end for i=1:N plbest=fitness(x(i,:),D,M,V,weight,volume);%%plbest表示个体最优值 pxbest=x(i,:);%pxbest表示个体最优位置 end gxbest=x(1,:); %gxbest为全局最优位置 for i=2:N if fitness(x(i,:),D,M,V,weight,volume)>fitness(gxbest,D,M,V,weight,volume) gxbest=x(i,:); end end %fitness(pg,D,M,V,weight,volume) %%------进入主要循环,按照公式依次迭代,直到满足精度要求------------ Sum=0; SUM=0; for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand()*(pxbest-floor(x(i,:)))+c2*rand()*(gxbest-floor(x(i,:))); x(i,:)=x(i,:)+v(i,:); %用于把每个分量取为0和1 for j=1:D if rand()<=1/(1+exp(-v(i,j))) %Sigmoid函数 x(i,j)=0; else x(i,j)=1; end end if fitness(x(i,:),D,M,V,weight,volume)>plbest plbest=fitness(x(i,:),D,M,V,weight,volume); end if plbest>fitness(gxbest,D,M,V,weight,volume) gxbest=pxbest; end glbest=fitness(gxbest,D,M,V,weight,volume);%glbest表示全局最优值 Sum=Sum+glbest(1); aveg1=Sum/t;%体积平均 SUM=SUM+glbest(2); aveg2=SUM/t;%载重平均 Z3(t)=aveg1; Z4(t)=aveg2; %X(t)=Pbest(1); %Y(t)=Pbest(2); %Q(t)=Pbest(3); end
3 运行结果
4 参考文献
[1]胥珠峰. 基于优化粒子群的货物装箱管理方案[J]. 计算机与数字工程, 2018, 046(008):1520-1524,1626.
这篇关于【布局优化】基于粒子群货物配装问题最优化matlab源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)