200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【免疫算法】物流配送中心选址问题(Matlab代码实现)

【免疫算法】物流配送中心选址问题(Matlab代码实现)

时间:2020-06-06 16:14:21

相关推荐

【免疫算法】物流配送中心选址问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

💥1 概述

📚2 运行结果

🎉3参考文献

🌈4 Matlab代码实现

💥1 概述

传统免疫算法是通过仿真免疫系统的多样性机制设计出来的一种算法。传统免疫算法在求解问题时候,算法存在收敛速度慢、容易陷入局部最优等问题,与传统的遗传算法相比,免疫遗传算法对个体的选择和评价更为全面与合理。针对物流配送中心选址问题,以物流成本为目标函数,采用免疫算法对配送中心选址进行优化。通过一个中等规模的物流需求点实例,仿真结果表明,该方法能够快速有效地求得物流配送中心选址问题的全局最优解。影响物流配送中心选址的因素有很多,精确选址优化问题亟待解决。通过充分考虑货物的配送时间,将免疫算法加入其中,介绍了物流配送选址模型的构建以及免疫算法实现的相关步骤,最后进行分析,,出的数学模型以及免疫优化算法在收敛时间和配送选址规划方面优化的合理性得到了验证,证明所提出的解决物流配送中心选址问题的免疫优化算法的有效性。把免疫算法用于物流配送中心选址问题中,在考虑该问题的约束条件和优化目标的基础上,建立了物流配送中心选址问题的数学模型,并采用免疫优化算法求解最佳物流配送中心选址模型。

📚2 运行结果

部分代码:

%% 免疫优化算法在物流配送中心选址中的应用

%% 清空环境

clc

clear

%% 算法基本参数

sizepop=50;% 种群规模

overbest=10;% 记忆库容量

MAXGEN=100;% 迭代次数

pcross=0.5;% 交叉概率

pmutation=0.4; % 变异概率

ps=0.95; % 多样性评价参数

length=6; % 配送中心数

M=sizepop+overbest;

%% step1 识别抗原,将种群信息定义为一个结构体

individuals = struct('fitness',zeros(1,M), 'concentration',zeros(1,M),'excellence',zeros(1,M),'chrom',[]);

%% step2 产生初始抗体群

individuals.chrom = popinit(M,length);

trace=[]; %记录每代最个体优适应度和平均适应度

%% 迭代寻优

for iii=1:MAXGEN

%% step3 抗体群多样性评价

for i=1:M

individuals.fitness(i) = fitness(individuals.chrom(i,:)); % 抗体与抗原亲和度(适应度值)计算

individuals.concentration(i) = concentration(i,M,individuals); % 抗体浓度计算

end

% 综合亲和度和浓度评价抗体优秀程度,得出繁殖概率

individuals.excellence = excellence(individuals,M,ps);

% 记录当代最佳个体和种群平均适应度

[best,index] = min(individuals.fitness); % 找出最优适应度

bestchrom = individuals.chrom(index,:); % 找出最优个体

average = mean(individuals.fitness); % 计算平均适应度

trace = [trace;best,average]; % 记录

%% step4 根据excellence,形成父代群,更新记忆库(加入精英保留策略,可由s控制)

bestindividuals = bestselect(individuals,M,overbest); % 更新记忆库

individuals = bestselect(individuals,M,sizepop); % 形成父代群

%% step5 选择,交叉,变异操作,再加入记忆库中抗体,产生新种群

individuals = Select(individuals,sizepop); % 选择

individuals.chrom = Cross(pcross,individuals.chrom,sizepop,length); % 交叉

individuals.chrom = Mutation(pmutation,individuals.chrom,sizepop,length); % 变异

individuals = incorporate(individuals,sizepop,bestindividuals,overbest);% 加入记忆库中抗体

end

%% 画出免疫算法收敛曲线

figure(1)

plot(trace(:,1));

hold on

plot(trace(:,2),'--');

legend('最优适应度值','平均适应度值')

title('免疫算法收敛曲线','fontsize',12)

xlabel('迭代次数','fontsize',12)

ylabel('适应度值','fontsize',12)

%% 画出配送中心选址图

%城市坐标

city_coordinate=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556;3238,1229;4196,1044;4312,790;4386,570;

3007,1970;2562,1756;2788,1491;2381,1676;1332,695;3715,1678;3918,2179;4061,2370;3780,2212;3676,2578;

4029,2838;4263,2931;3429,1908;3507,2376;3394,2643;3439,3201;2935,3240;3140,3550;2545,2357;2778,2826;2370,2975];

carge=[20,90,90,60,70,70,40,90,90,70,60,40,40,40,20,80,90,70,100,50,50,50,80,70,80,40,40,60,70,50,30];

%找出最近配送点

for i=1:31

distance(i,:)=dist(city_coordinate(i,:),city_coordinate(bestchrom,:)');

end

[a,b]=min(distance');

index=cell(1,length);

for i=1:length

%计算各个派送点的地址

index{i}=find(b==i);

end

figure(2)

title('最优规划派送路线')

cargox=city_coordinate(bestchrom,1);

cargoy=city_coordinate(bestchrom,2);

plot(cargox,cargoy,'rs','LineWidth',2,...

'MarkerEdgeColor','r',...

'MarkerFaceColor','b',...

'MarkerSize',20)

hold on

plot(city_coordinate(:,1),city_coordinate(:,2),'o','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10)

for i=1:31

x=[city_coordinate(i,1),city_coordinate(bestchrom(b(i)),1)];

y=[city_coordinate(i,2),city_coordinate(bestchrom(b(i)),2)];

plot(x,y,'c');hold on

end

🎉3参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]张晴. 基于生命周期的快递包装物逆向物流中心选址研究[D].华北电力大学,.DOI:10.27139/ki.ghbdu..000325.

[2]倪卫红,岳晓伟,邵建峰,钱伟民.基于自适应免疫算法的物流配送中心选址问题研究[J].价值工程,,37(36):96-99.DOI:10.14018/13-1085/n..36.045.

🌈4 Matlab代码实现

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。