m基于PSO粒子群优化的物流作业整合matlab仿真,计算最低运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用

1.算法概述

粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。  



PSO 过程:

第1 步: 种群随机初始化。

第2 步: 对种群内的每一个个体计算适应值(fitness value) , 适应值与最优解的距离直接有关。

第3 步: 种群根据适应值进行复制。

第4 步: 如果终止条件满足, 则停止; 否则转到第2 步。

PSO 算法中每个优化问题的解都有是搜索空间中的一只鸟, 称为粒子。与其他进化计算技术不同的是群体中的每个粒子可以记忆自己到过的最优位置, 并能感知邻近群体已达到的最优位置, 每个粒子能够根据自身到过的最优位置和邻近群体已到过的最优位置来更新自己, 然后粒子们不断地追随当前的最优粒子在解空间搜索。


有M个作业(运输任务),S个代理人,k种运输方式,n个节点(城市)。每个作业都有时间限制,由第四方物流对各作业、各代理人、各种运输方式进行整合。各作业在任意节点上可由任意代理人进行代理,即在各节点可进行代理人之间的代理转换;各作业在任意节点之间只可选择一种运输方式,代理人在节点之间的运输能力不同,根据不同运量提供的代理价格折扣不同。模型为求解出各作业的运输路线及在各节点上选择由哪个代理人选择哪种运输方式。







成本分为四个部分:运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用。





2.仿真效果预览

matlab2022a仿真结果如下:






3.核心MATLAB程序

..............................................................

%PSO

%x(s,k,m,i,j) = 1 表示作业m在节点i和节点j之间由代理人s采用k种运输方式代理;否则x(s,k,m,i,j)=0;

%r(s,l,m,i)   = 1 表示作业m在节点i由代理人s转换成代理人l;否则r(s,l,m,i)=0;

%R(k,v,m,i)   = 1 表示作业m在节点i由k种运输方式转换为v种运输方式,否则R(k,v,m,i)=0;

%由于算法较为复杂,这里无法直接将所有因素考虑,这里采用分级优化,即对性能影响最大的因素进行优化,再给予优化结果进行次级因素优化


%确定路线

%确定路线

%确定路线

%初始化x,r,R,初始化的值是随便设置的

for i = 1:n

for j = 1:n

if d(i,j) ~= 0 & d(i,j) ~= F

x(:,:,:,i,j) = 1;

r(:,:,:,i)   = 1;

R(:,:,:,i)   = 1;

else

x(:,:,:,i,j) = 0;

r(:,:,:,i)   = 0;

R(:,:,:,i)   = 0;

end

end

end


All_cost = fitness(M,n,g,G,C,q,d,p,Z,T,LT,ET,R,r,x);



%下面开始PSO优化

itmax               = 300;%进化代数,就是预设的迭代次数。

W(1)                = 0.729;% 粒子先前速度保持。惯性权重

a(1)                = 0.316;% 用于计算W。

c1                  = 2; %认知部分 加速系数

c2                  = 2; %社会部分 加速系数

xmax                = 1;

xmin                = 0;

ii                  = 1;

num_particle        = 100;

D                   = size(d,1);

particle            = zeros(2*num_particle,D,D,M,itmax);


particle(:,:,:,:,1) = xmin+(xmax-xmin)*rand(2*num_particle,D,D,M);

V(:,:,:,:,1)        = round((xmin-xmax)+2*(xmax-xmin)*rand(2*num_particle,D,D,M));


fit                 = zeros(num_particle,itmax);% 用于存储粒子的适应值

pbest               = zeros(2*num_particle,D,D,M,itmax); % 用于存储粒子的位置


x2                  = zeros(g,G,M,n,n,2*num_particle);


for m = 1:M

for i = 1:n

for j = 1:n

for nn = 1 : 2*num_particle

x2(:,:,m,i,j,nn) = particle(nn,i,j,m,1);

end

end  

end   

end


x_tmp = zeros(g,G,M,n,n);

for nn = 1 : num_particle

x_tmp     = x2(:,:,:,:,:,nn);

fit(nn,1) = fitness(M,n,g,G,C,q,d,p,Z,T,LT,ET,R,r,x_tmp);

end


%*********************************************************

pbest(:,:,:,:,1)   = particle(:,:,:,:,1);

pbest_value(:,1) = fit(:,1);  %个体最优值

[Cs,I]           = min(pbest_value(:,1));

gbest_value(1)   = Cs; % 群最优值


for i=1:num_particle

gbest(2*i-1:2*i,:,:,:,1)=particle(2*I-1:2*I,:,:,:,1);  %群最优粒子位置

end


tmps = 0;

route = zeros(n,n,M,2*num_particle);

for ii=2:itmax


ii


V(:,:,:,:,ii)        = 0.729*V(:,:,:,:,ii-1)+c1*rand*(pbest(:,:,:,:,ii-1)-particle(:,:,:,:,ii-1))+...

c2*rand*(gbest(:,:,:,:,ii-1)-particle(:,:,:,:,ii-1));


V(:,:,:,:,ii)        = min(V(:,:,:,:,ii),xmax-xmin);

V(:,:,:,:,ii)        = max(V(:,:,:,:,ii),xmin-xmax);

particle(:,:,:,:,ii) = particle(:,:,:,:,ii-1)+V(:,:,:,:,ii);

particle(:,:,:,:,ii) = min(particle(:,:,:,:,ii),xmax);  

particle(:,:,:,:,ii) = max(particle(:,:,:,:,ii),xmin);

for m = 1:M

for i = 1:n

for j = 1:n

for nn = 1 : 2*num_particle

if d(i,j) > 0

x2(:,:,m,i,j,nn) = double(particle(nn,i,j,m,ii)>0.5);%对于优化结果,只取0或者1

else

x2(:,:,m,i,j,nn) = 0;%对于优化结果,只取0或者1

end

end

end  

end  

end

for m = 1:M

for i = 1:n

for j = 1:n

for nn = 1 : 2*num_particle

if d(i,j) > 0

route(i,j,m,nn)    = particle(nn,i,j,m,ii);

else

route(i,j,m,nn)    = 0;

end

end

end  

end    

end



for nn = 1 : num_particle

x_tmp      = x2(:,:,:,:,:,nn);

fit(:,ii)  = fitness(M,n,g,G,C,q,d,p,Z,T,LT,ET,R,r,x_tmp);

end    


%下面更新 pbest and pbest_value

pbest_value(:,ii)=min(pbest_value(:,ii-1),fit(:,ii));


for i=1:num_particle

if pbest_value(i,ii) == fit(i,ii)   

pbest(2*i-1:2*i,:,:,:,ii) = particle(2*i-1:2*i,:,:,:,ii);

else

pbest(2*i-1:2*i,:,:,:,ii) = pbest(2*i-1:2*i,:,:,:,ii-1);

end

end


........................................................

02-006m

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容