【优化选址】遗传算法求解物流配送中心选址【含Matlab源码 1917期】

news2024/11/16 5:35:17

⛄一、物流选址简介

1 引言
配送中心是物流系统网络中的关键节点和重要的基础设施,在整个物流系统网络规划中起着枢纽性的作用[1]。快递物流配送中心选址是指在具有若干个发件网点或者若干个收件网点的物流配送区域内,综合考虑物流运输成本、配送中心建设成本等成本因素,采用定性与定量分析方法,选取最符合经济社会情况的单个或者多个位置设置配送中心的物流系统网络规划过程。在整个快递物流供应链环节中,快递配送中心,对上承接来自发件网点包裹的集运任务,对下承接收件网点的配送运输任务,其选址结果将会对配送路径的规划、运营成本、配送效率等产生直接的影响。

2 研究综述
基于配送中心对国家流通经济发展的重要作用,国内学者们针对各种类型的配送中心的选址问题,分别采用不同的算法模型,对其进行了深入研究:如李茂林认为物流配送中心选址难以优化以至于会影响整个物流系统的配送效率,针对这一问题他提出一系列的猴群优化算法求解策略,对模型进行求解,通过对线性函数表达式中多个影响因子的非线性调节,改进了猴群算法的爬行过程,提高了算法模型的求解精度和求解能力,最终更加精确地求解出物流配送中心优化选址位置;张于贤等通过构建带有物流收益(输出)和物流成本(输入)之差的数据包络评估模型(data envelopment evaluation analysis,DEA),对现有配送中心的各项指标进行评估,根据评估的结果得到配送中心的再选址方案,但其基于DEA选址方法所构建的线性函数选址评价模型与通常利用CCR模型、BCC模型等具有矩阵性质的评价模型方法不同,该选址评价研究方法的可行性有待进一步实证;崔杨等针对第三方物流配送过程中产生的如延误、爆仓等配送异常问题,综合运用层次分析法中的定性分析方法和定量分析方法,对第三方物流配送中心选址问题进行了评价研究,通过构造层次分析模型、判断矩阵,求解出最优位置作为第三方物流配送中心的选址位置;于蕾综合采用定性与定量分析法对安徽省农产品的供给与需求状况进行了分析,构建了基于重心法的农产品配送中心选址模型,并采用R语言编程对具有迭代性质的选址模型进行求解,但存在绝对假设条件限制、去市场化、需求量计算过于简单等局限性;生力军[6]指出,经典粒子群选址模型在求解过程中存在局部最优和过早收敛等问题,为了克服此缺点,将量子进化算法与粒子群算法相结合,构建了基于量子粒子群算法的物流配送中心选址模型,并通过粒子编码和量子交换、变异等操作,有效避免了模型在选址求解中存在局部最优和过早收敛等问题。

基于遗传算法选址国内学者们针对不同类型的选址问题进行了大量创新性的研究:如赵斌等指出,传统单一的遗传算法难以快速有效求解出系统复杂的医疗器械物流园区选址问题的最优化问题,通过将遗传算法和免疫算法相结合,建立了免疫遗传算法的选址模型,针对医疗器械物流园区选址的特点,构建了包含多种成本要素的医疗器械物流园区选址问题的目标函数模型,并且对选址模型的求解方法进行了设计,从而求解出最优的物流园区选址方案;郭静文等为了优化消防站网络规划布局结构、降低消防站选址的系统选址成本,以及提升消防站空间资源利用率,对传统的遗传算法进行了改进,使其具有自适应性质,可自行求解出优化后的消防站规划建设个数和选址位置,有效克服了在已有选址规划方案中选择消防站建设个数和选址位置等的缺陷,但在实证研究中,并未给出具体的求解方法或求解过程;周思育等为了解决湖北省内烟草资源物流配送不均衡和配送成本高昂等的问题,构建了综合考虑多种选址成本要素的遗传算法选址模型,并且通过Matlab数据分析软件,对配送中心选址模型进行求解,选取最佳的位置设置配送中心,提高了烟草资源物流配送的效率,并降低了配送中心系统选址的成本;张钰川等为兼顾物流园的配送运输、货物集散、仓储分拨、管理服务等的作用和功能,基于物流成本的基础上,构建了带有双层规划的遗传算法物流园选址模型:上层模型由影响物流园选址要素的各种成本函数所构成,下层模型由影响决策者和客户利益诉求的成本函数所构成,并通过遗传算法对双层规划模型进行求解,最后通过实例验证了遗传算法模型对物流园选址成本问题具有一定的优化作用。

本文选择利用遗传算法模型对快递物流配送中心的选址问题进行研究,针对配送中心选址的特点,构建了包含固定成本、分拣成本等多个成本要素的线性目标函数,建立了基于遗传算法的选址模型。遗传算法选址问题属于NP难题,利用传统的算法求解方法容易产生局部最优等问题,为了克服遗传算法模型在选址问题求解过程中所产生的局部收敛和早熟收敛等局限性,本文提出了一系列经过改进后的遗传算法求解策略,具体包括编码方法、自适应交叉概率函数、自适应变异概率函数等求解方法,这在很大层度上提高了遗传算法模型在选址问题中的求解精度和求解效率。

3 遗传算法的配送中心选址模型
3.1 模型假设

为了便于构建快递物流配送中心遗传算法选址模型,简化算法模型计算复杂性和使其具有很好的适用性,现对模型做如下假设:

1)在一定备选范围内进行配送中心的选取;

2)发件网点或收件网点数目多于配送中心数目;

3)一个网点仅由一个配送中心提供配送服务,但一个配送中心可覆盖多个网点;

4)配送中心容量可满足各配送网点的总需求量;

5)各网点配送需求一次性运输完成,且假设匀速行驶;

6)物流系统中包含两个层次的运输,即从发件网点到配送中心的运输和从配送中心到收件网点的运输,且均采用公路运输;

7)系统总费用不考虑包裹在分拣中心的装卸搬运成本和暂存成本,只考虑配送中心建设成本、运输费用和变动成本。

3.2 变量设置
假设发件网点数量有m个,配送中心数量有n个,收件网点数量有l个。其他参数符号及变量设置如表1所示。

表1 变量设置
在这里插入图片描述
3.3 模型构建
在这里插入图片描述
zi=1或0,(7)
αki,βij≥0,(8)
式中:i=1,2,…,n;
k=1,2,…,m;
j=1,2,…,l。

在上述各式中,式(1)表示目标函数,等号右边第1项为从发件网点到配送中心的运输成本,第2项为从配送中心到收件网点的运输费用,第3项为建设配送中心的固定投资成本,第4项和第5项为配送中心的变动成本(分别为管理成本和分拣成本);式(2)表示配送中心可以满足所有收件网点的配送需求;式(3)表示从收件网点到配送中心的集运量恒等于从配送中心到收件网点的配送量;式(4)表示所有发件网点被配送中心所覆盖;式(5)表示从发件网点到配送中心的运输量小于等于配送中心的最大容量限制即流量限制;式(6)表示配送中心的建设数量不大于其最大建设数量;式(7)(8)为决策变量的约束。

4 基于遗传算法模型的求解
遗传算法(gentic algorithm,GA)这一术语于20世纪50年代由美国学者J.Holland所提出,是基于模拟自然选择和遗传机制的典型启发式算法模型,具有操作简单、鲁棒性强等优点。

在使用遗传算法对快递物流配送中心选址问题的求解过程中,容易产生过早收敛和局部最优等问题。为了提高算法模型的全局搜索能力以及保证种群的多样性,防止遗传算法在求解的过程中出现过早收敛和局部最优问题,需要对传统的遗传算法求解进行改进。因此本文提出了一系列的遗传算法选址模型的改进求解策略,从对染色体的编码策略的选择到自适应变异概率的计算,这些求解策略有效解决了传统遗传算法出现的过早收敛和局部最优问题,使GA空间搜索能力明显增强,提高了算法模型的求解能力和求解效率。

4.1 遗传算法模型求解策略
1)染色体编码
将所需要解决的问题采用编码的方式是遗传算法的重要操作,即将求解的问题映射为编码问题,遗传算法中常见的编码方法有二进制编码、格雷编码、排列编码和浮点数编码等。对编码的性质进行评价的指标主要有完备性、健全性和非冗余性。

对于决策变量zi,课题组采用二进制编码[12]方法,利用{0,1}自然数,将配送中心zi通过二进制编码成为由{0,1}所构成的染色体或个体,编码串即染色体的长度L和数量K是由所要求解的精确度来确定的。二进制编码方式具有操作方便、计算简单等优点,但也存在求解精度低、易造成算法搜索空间过大等缺点,且不适应于连续函数问题的编码。

单一的编码方式无法将所有优化问题的决策变量约束表示出来,对于决策变量αki、βij,由于其对应的变量个数比较多,且编码串的长度由决策变量中的变量个数所决定,所以对其采用浮点编码的方法,使得编码后染色体的长度L不至于太长,增强了算法模型的空间搜索能力,有利于算法解码。浮点编码适用于对于求解要求精度较高、具有较大的搜索空间、需要处理复杂的决策变量及约束等特点的编码方法,它降低了遗传算法编码后计算的复杂性,提高了遗传算法的求解效率。

2)适应度函数
为了保证染色体中具有优良性质的个体基因遗传到下一代,通过模拟遗传进化过程中适者生存原理,建立唯一具有评价群体生存选择机会大小的适应度函数,适应度函数值越大,则种群中优良基因作为父代基因遗传到下一代的可能性越大;否则可能性越小。根据这种优化原理,建立如下与目标函数之间存在映射关系的适应度函数:
在这里插入图片描述
式中:Fit(f(x))为适应度函数;

Cmax表示截止当前进化进度(代数)所产生的g(x)的最大值,此时Cmax会随着进化进度(代数)的变化而变化;

g(x)为目标函数的期望值。

3)选择算子
选择算子操作,通过所构建的适应度函数,可以对群体中染色体遗传性质的优劣进行判断和评价,选择或复制那些群体中适应度值高的个体作为父代基因遗传到下一代,而适应度值低的个体则被淘汰,这种操作有效提高了算法的收敛性和计算效果。本文采用轮盘赌的方法进行选择算子操作[13],建立如下与适应度函数之间存在映射关系的选择概率:
在这里插入图片描述
式中:Pi表示个体i被选择的概率;

f(xi)表示各染色体个体的适应度函数值;

xi表示种群中的个体。

4)自适应交叉算子操作
交叉算子模仿自然进化过程中的遗传规律,将具有优良基因的两个父代染色中的部分基因通过交叉算子操作的方式进行基因重组,从而产生新的更适应于适应度函数值的子代个体,交叉算子操作是遗传算法中的核心操作步骤。交叉操作具有随机性和多样性等特点,其类型主要包括单点交叉、多点交叉、部分匹配交叉、顺序交叉等。

交叉算子操作中的交叉概率是影响遗传算法性能的关键所在,对算法的收敛性产生直接的影响。交叉概率越大,染色体产生交叉的速度越快,则其产生新的个体的速度也越快。当交叉概率过大时,在迭代初期会增强算法的搜索能力使其快速收敛,但在迭代后期对具有较高适应度函数值的个体基因的结构破坏性会增大,不利于算法最优解的产生;交叉概率过小时,算法的搜索能力即交叉操作能力过于缓慢,同样不利于寻求算法的最优解。基于这种优化问题,本文引入了自适应交叉概率,计算过程中交叉概率会随着适应度函数值的不同而自动调整,具体的计算公式如下:
在这里插入图片描述
式中:Pc为自适应交叉概率;
fmax为群体中个体为最大的适应度函数值;
favg为每代群体的平均适应度函数值;
f为产生交叉的两个个体其中一个个体为较大的适应度函数值;
K1、K2为区间为(0,1)的常数。

5)自适应变异算子操作
变异算子操作是模仿自然基因在遗传过程中发生基因突变现象,即某条染色体中的一个或者多个基因发生变异的现象,但一般发生变异的概率比较小(通常在为0.01~0.10)。当变异概率太小时,不利于染色体新个体结构的产生;当变异概率太大时,染色体结构遭到破坏的可能性会增大,遗传算法搜索的有效性随之降低。针对变异算子操作中的寻优问题,本文采用自适应变异概率:
在这里插入图片描述
式中:Pm为自适应变异概率;
K3、K4为区间(0,1)的常数。

4.2 遗传算法求解步骤
STEP 1 染色体编码。随机产生K条染色体,并通过二进制的方法进行编码,每条染色体即代表一种可行解。
STEP 2 群体初始化。建立适当规模的由染色体或个体所构成的初始化群体。
STEP 3 适应度函数。适应度函数值是判断个体生存机率大小的唯一标准,对群体进化进度和形势具有直接的影响,可利用式(9)计算出适应度函数值f(xi)。
STEP 4 选择算子。对于种群中适应度高的个体进行操作选择,可直接作为父代染色体进行繁殖,其他的染色体则采用轮盘赌的方式操作选择。
STEP 5 交叉算子。对于被选中的染色体,通过交叉算子操作,将具有优良性质的两个染色体中的部分基因通过交叉位移的方式产生新的个体,并利用式(11)计算出不同个体的自适应交叉概率Pc。
STEP 6 变异算子。对不同的个体采取自适应调整策略,利用式(12)计算出自适应变异概率Pm。
STEP 7 判断适应度函数值。完成STEP 6后跳转至STEP 3,重新计算适应度函数值并作出判断,然后继续进行循环求解。
STEP 8 终止条件:根据预先设定的最大迭代次数Tmax,当达到所规定的迭代规模后则终止算法运行。

⛄二、部分源代码

%% 遗传算法 优化函数
clc;close all;clear all;%清除变量
rand('seed', 100);

global XY p nodenumber maxlink;
filename='需求点分布.xlsx';
[adata,bdata,cdata]=xlsread(filename);
XY=adata(2:end,:)';
nodenumber=size(XY,1);
p=4;% 配送中心个数
maxlink=5;% 最大连接数

N=p*2;%优化问题
lb=[min(XY(:,1))*ones(1,p),min(XY(:,2))*ones(1,p)];
ub=[max(XY(:,1))*ones(1,p),max(XY(:,2))*ones(1,p)];


% 遗传算法参数
popsize=200;%遗传算法种群数
ga_max=500;%遗传算法迭代次数
PM=0.05;%变异概率
PC=0.8;%交叉概率

%% 遗传算法主程序
%性能跟踪
tracemat=zeros(ga_max,2);
gen=0;
tic;
Chrom=genChrome(popsize,N,lb,ub);% 建立种群
Value=decodingFun(Chrom,popsize);%解码染色体
%% 遗传算法优化的主循环
%进度条
wait_hand = waitbar(0,'run……', 'tag', 'TMWWaitbar');
while gen<ga_max
    %% 遗传算法选择
    FitnV=ranking(Value);%分配适应度值
    Chrom=select('rws',Chrom,FitnV,1);%选择
    Chrom=mutationGA(Chrom,popsize,PM,N,lb,ub);% 种群变异,单点变异
    Chrom=crossGA(Chrom,popsize,PC,N);% 种群交叉,单点交叉
    Value= decodingFun(Chrom,popsize);%解码染色体
    %% 计算最优
    [v1,index1]=min(Value);
    gen=gen+1;
    tracemat(gen,2)=mean(Value);
    %% 记录最优
    if gen==1
        bestChrom1=Chrom(index1,:);%记录最优染色体
        bestValue1=v1;%记录的最优值
    end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]刘善球,樊兵鹏.基于遗传算法的快递物流配送中心选址[J].湖南工业大学学报. 2021,35(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】Servlet API重点知识汇总

目录 1.HttpServlet&#xff1a; 2.HttpServletRequest&#xff1a; 3.HttpServletRequest代码实例&#xff1a; 3.1.打印请求的内容&#xff1a; 3.2.获取请求中的重要参数 &#xff08;query string中的值&#xff09;&#xff1a; 3.3.获取请求中的重要参数 &#x…

关于循环浅析

从c,c,python,scala到java&#xff0c;简单接触了这样一些编程语言&#xff0c;对于它们的基本语法中的循环想做个总结。 一、c&#xff0c;c C语言for循环&#xff08;for语句&#xff09;详解 (biancheng.net) //这个链接比较详细&#xff0c;本人也从中摘取了一些知识点。…

【javaEE】网络原理(传输层Part2)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言TCP相关机制4. 【滑动窗口】5.【流量控制】6.【拥塞控制】总结前言 一个人最大的痛苦来源于对自己无能的愤怒&#xff01; Hi&#xff0c;这里是不想秃头的宝贝儿&#xff01; 本文主要内容是 传输层中TCP相关…

什么是SRM,SRM有什么作用,SRM主要用途是什么?

简道云SRM管理应用一、什么是SRM? SRM是 Supplier Relationship Management 的英文缩写&#xff0c;即供应商关系管理。 SRM的最基本内容包括供应商分类选择、战略关系发展、供应商谈判和供应商绩效评价四个方面。 SRM是用来改善企业与供应商的关系&#xff0c;它是一种致力…

了解一下OAuth2.0到底是什么,有图解有案例

理论 OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;用来授权第三方应用获取用户数据&#xff0c;是目前最流行的授权机制&#xff0c;它当前的版本是2.0。 应用场景 假如你正在“网站A”上冲浪&#xff0c;看到一篇帖子表示非常喜欢…

Python交互Mysql数据库基本操作

安装pymysql第三方包 1. 安装pymysql 2. 查看安装情况 ​ 3. 卸载pymysq ​ Pymysql的使用 1. 导包 ​ 2. 创建和mysql服务端的连接对象 ​ 3. 获取游标对象 ​ 4. 执行sql语句 ​ 5. 获取查询结果集 ​ 6. 将增加和修改操作提交到数据库 7. 回滚数据 8. 关闭游标对象 …

【网页设计】期末大作业html+css(体育网站--足球 6页 )

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&…

mTD-SCDMA与TD-LTE双网络垂直切换matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 TD-SCDMA与TD-LTE共覆盖的范围内覆盖半径1000m&#xff1b; TD-SCDMA中心坐标(0,0)&#xff0c;覆盖半径1000m&#xff1b; 两个TD-LTE基站的中心坐标为&#xff08;150&#xff0c;0…

刚毕业被骗去了小公司,天天“取数做表”,后悔没早点用上这工具

经常看到年轻人提问“究竟是去大公司打杂好&#xff0c;还是去小公司磨练好&#xff1f;”这个问题我年轻的时候也想过&#xff0c;当时觉得去大公司只能当螺丝钉&#xff0c;做按部就班的工作&#xff0c;于是毅然决然放弃了大厂offer去了一家IT部门只有3个人的公司。当时我在…

通过电子文档管理改善患者体验和办公效率

通过电子文档管理改善患者体验和办公效率 在不远的过去&#xff0c;手动输入医疗信息和物理归档系统是所有医疗办公室的标准操作程序。医生和工作人员别无选择&#xff0c;只能写下信息&#xff0c;然后手动将数据输入办公系统。 当要求所有从业者使用电子病历的授权作为“患…

亚马逊买家号造成被封的原因有哪些?

现在很多人反馈说亚马逊买家号太容易被封了&#xff0c;去下单时都不知道什么情况都就砍单&#xff0c;账号登录不上了&#xff0c;而关于亚马逊买家号被封这个问题&#xff0c;不是一两个因素就能决定的&#xff0c;那么亚马逊买家号造成被封的原因有哪些&#xff1f; 1、账号…

虚拟机三种网络模式

基本知识 ipconfig查看信息。 网关(Gateway)又称网间连接器、协议转换器。是你连接到的上层节点的地址。 ip地址是你本身的地址&#xff08;如果是路由器分配的 那么是路由器所构建的内网地址&#xff09; 网卡&#xff1a;需要网卡才能连接其他设备 是设备端的 交换机&#x…

[附源码]SSM计算机毕业设计教师业绩考核系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Mybatis-Plus条件构造器学习and方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Mybatis-Plus条件构造器学习and方法一、代码1.Controller2、Service3、效果一、代码 1.Controller GetMapping("/queryProductList1")public List<ProductDTO&…

panads基础入门

目录 一、查看数据 二、选择数据 1、选择单列 2、 用 [ ] 切片行&#xff1a; 3、标签选择 1、选择某列的某一行&#xff0c;如下是 A 列 第 51 行的值 2、B列与A列的数据相互替换 3、用标签选取多列 4、用标签切片&#xff0c;包含行与列结束点&#xff1a; 5、提取标…

传奇列表格式怎么上传以及公告小窗口皮肤如何设置

相信各位新手小白GM在架设传奇配置登录器的时候都会遇到列表格式的问题&#xff0c;接下来我来教各位登录器的这个列表格式该怎么上传&#xff0c;列表上传地址&#xff1a;传奇常用引擎免费单机列表格式-传奇入门GOM-GEE引擎教学 我们版本是什么引擎我们就用什么引擎的列表格式…

基于Zookeeper实现高可用架构

Zookeeper高可用相关特性 Zookeeper介绍 ZooKeeper is a distributed, open-source coordination service for distributed applications It exposes a simple set of primitives that distributed applications can build upon to implement higher level services for sync…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识&#xff0c;高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper&#xff1f; Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…

EasyX图形库的下载安装与Dev-C++配置

1.下载Dev-Cpp 6.3版本&#xff08;红色logo&#xff09; 下载地址&#xff1a;Download Dev-C for Windows 10/8/7 from SourceForge.netA fast, portable, simple, and free C/C IDEhttps://sourceforge.net/projects/embarcadero-devcpp/files/v6.3/Embarcadero_Dev-Cpp_6.3…

详细介绍百度ERNIE 2.0:A Continual Pre-Training Framework for Language Understanding

阅读更多&#xff1a;详细介绍百度ERNIE&#xff1a;Enhanced Representation through Knowledge Integration 文章目录ERNIE 2.0简介相关工作语言表征的无监督学习持续学习ERNIE2.0 框架持续的预训练预训练任务的构建持续的多任务学习针对应用任务的微调ERNIE 2.0模型模型结构…