【优化求解】基于matlab遗传算法求解多城市多应急物流中心选址问题【含Matlab源码 1724期】
一、物流选址简介
1 LRP问题本质
LRP问题的本质是为了满足区域类客户的配送需求,需要建立一个多级配送网络,一般由配送枢纽、配送中心、配送末端网点三级构成(其他类型可类比)。要求满足客户的需求量,不同设施有其吞吐容量和服务能力约束,不同级设施之间配送单位费用均不同,客户也有配送的时间约束。在满足多种约束下,求整个配送网络总成本最小的选址和需求分配方案。
2 LRP重难点
LRP问题求解的重难点一般是两个:选址和需求分配。选址的难度是在不同级设施备选点中选择合适数量和位置的设施组合;需求分配的难度是在不同分配路径方案中选择不同路径方案的组合,其中,因为每个客户的需求量从源头流经多级配送设施的流量是未知的,而且这个未知的变量是MGH个的。(M,G,H分别是1,2,3级配送设施的备选点数量),流量取值是连续的变量。因此,通过转化为多变量的目标函数求最值的线性或者非线性函数求解是不可能做到的。
3 LRP思路
因此,如何克服以上难点成为了我们的关键问题。首先,选址的找到一个最有的排列组合,可以通过万能钥匙的遗传算法求解。然后需求分配则需要按照最小费用最大流问题的思路进行分配。最小费用最大流问题指的是,在一个由一个源和汇和中间节点构成的配送网络中,每个路径都有其成本权重和流量约束,在满足流量约束的条件下找到最小配送成本的配送路径,这种方法就称为最小费用最大流方法。
借鉴了这种方法之后,再根据模型的约束进行改进,得到一个新的最小费用最大流方法。
二、案例简介
模型设计
三、部分源代码
clc
clear
close all
MAX_gen=4000; % 最大迭代步数
best.min_f=inf; % 当前最小的适应度f
advance_k=0; %优化的次数
center.Station=[38,31;112,35;119,109;82,76;80,40;30,112;40,64;88,120;50,90;100,500];
center.chubei=[5000,5000,5000,5000,5000,5000,5000,5000,5000,5000];
cost.construction=2000*10000;%元
cost.trans=5;%元/资源/km
cost.storage=100;
P=0.1;%发生灾害的概率
requirement.Station=[123,120;24,32;120,75;96,15;27,53;102,66;54,43;70,16;102,117;17,15;...122,45;10,80;90,104;70,77;65,54;108,57;105,95;115,15;50,107;47,67;...42,44;31,10;28,70;17,122;95,40;75,93;70,35;75,120;124,96;40,121;...45,20;95,85;38,90;128,30;113,82;90,58;63,98;126,60;15,101;87,30];
requirement.need=[750,300,890,450,570,950,1350,670,470,550,760,800,350,950,670,500,550,530,750,800,...450,380,490,560,430,850,870,390,800,550,450,300,650,790,950,600,470,550,1060,800];
pop_length=size(requirement.Station,1);
pop_num=100;
pop_choose=size(center.Station,1);
Pcc=0.8;%交叉概率
Pmm=0.05;%变异概率
popus=init(pop_length,pop_num,pop_choose); %初始化
%%
for gen=1:MAX_gen%%sprintf('迭代次数%d',gen)for i=1:size(popus,1)%种群中每个结果进行计算f=fit(popus,center,requirement,cost,P); if min(f)<=best.min_fadvance_k=advance_k+1;ff_better{advance_k}=f;f_better(advance_k)=min(f);best.min_f=min(f);[re,index]=min(f);best.jieguo=popus{index(1)};best.popus=popus;elseadvance_k=advance_k+1;ff_better{advance_k}=ff_better{advance_k-1};f_better(advance_k)= f_better(advance_k-1);popus=best.popus;endPPP{gen}=popus;popus=choose(popus,f,Pcc,Pmm,center); %选择、交叉、变异end
end
function f=fit(popus,center,requirement,cost,P)%求适应度
%c1固定成本
c1=zeros(1,size(popus,2));
for i=1:size(popus,2)a1=popus{i};c1(i)=length(unique(a1))*cost.construction;
end
%c2运输成本
c2=zeros(1,size(popus,2));
for i=1:size(popus,2)a2=popus{i};for j=1:size(a2,2)C2(i,j)=requirement.need(j)*cost.construction*sqrt((center.Station(a2(j),2)-requirement.Station(j,2))^2+(center.Station(a2(j),1)-requirement.Station(j,1))^2);endc2(i)=sum(C2(i,:));
end
function popus=init(pop_length,pop_num,pop_choose) %初始化
%种群个体数目pop_length
%编码长度pop_length,实数编码
popus=[];
for i=1:pop_numpopus{i}=randsrc(1,pop_length,(1:pop_choose));
end
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
【优化求解】基于matlab遗传算法求解多城市多应急物流中心选址问题【含Matlab源码 1724期】相关推荐
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】
一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab水果蔬菜识别】形态学水果蔬菜识别【含GUI源码 919期】
一.代码运行视频(哔哩哔哩) [Matlab水果蔬菜识别]形态学水果蔬菜识别[含GUI源码 919期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅. ...
- 【Matlab青草识别】形态学马唐草+牛筋草识别【含GUI源码 908期】
一.代码运行视频(哔哩哔哩) [Matlab青草识别]形态学马唐草+牛筋草识别[含GUI源码 908期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab限速标志识别】形态学限速标志识别【含GUI源码 1142期】
一.代码运行视频(哔哩哔哩) [Matlab限速标志识别]形态学限速标志识别[含GUI源码 1142期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...
- 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】
一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】
一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
最新文章
- 图神经网络的表达能力,究竟有多强大?
- StevenBoyd--Convex optimization--0. Contents
- 力压华为小米!安兔兔1月安卓性能榜第一名是它!
- 【设计模式:单例模式】单例模式02:懒汉模式
- HDU 3952 Fruit Ninja
- 计算机专业毕设外文翻译springboot_java毕业设计_springboot框架的计算机系党员信息管理系统...
- Vue生命周期和钩子函数的一些理解
- 通过JDBC来理解反射机制
- php如何实现文件操作,php实现操作文件的各种方式总结(附代码)
- Java EE 常用单词
- 6亿融资,今麦郎有底气上市吗?
- [IMX6DL][Android4.4] 超声波模块HC-SR04 Linux驱动源代码
- 如何查看服务器登录日志文件,服务器登录日志查看
- 完整的境外、港澳台、电信、移动、联通、教育网、国内其他ISP的IPv4列表(数据整理日期2022年4月)-IP列表太长只能份2篇发布(1/2)
- Niushop单商户V4版强大的系统功能震撼来袭
- python nonlocal 的应用
- AndroidStudio安装SVN时忘记勾选command line client tools解决方案
- Python大作业之就诊卡管理信息系统[原创]
- 关西旅游地名读法学习
- 16位CRC循环冗余校验码生成函数