天天看点

优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)

我们在​​免疫算法求解配送中心选址问题(附MATLAB代码)​​这篇推文中讲解了使用免疫算法求解配送中心选址问题,在这篇推文基础上,今天我们来讲一讲使用模拟退火算法(SA)求解配送中心选址问题。

▎引言

从物流发展的趋势来看,配送中心不仅执行一般的物流职能,而且要越来越多地执行指挥调度、处理信息等职能,是整个物流网络的关键所在,受到各方面的广泛重视,因此,物流配送中心的合理选择是企业发展的战略决策问题。

一个成功的配送中心选址方案,可以缩短配送距离,加快配送速度,降低配送成本,提高服务质量,还可以促进生产和消费的有机协调与衔接,使整个物流系统处于平衡发展的状态。配送中心选址决策就是要确定配送中心的数量、位置及每个配送中心服务的客户群体。

配送中心的选择要遵循经济性原则,即要找到成本最低的地方,所以通常我们建立的配送中心选址模型的目标函数基本上都是总费用最低。为了建模方便以及简化计算,文献中通常会做出若干假设,从而简化总费用的计算,如现有文献中基本上都只考虑固定建设费用和运输费用,不考虑货物周转费用。

在实际的选址过程中,存储费用是影响配送中心运行效益的一个重要因素。存储费用是物资在库存过程中发生的费用,一般与存储数量和存储时间成正比关系,存储费用包括仓库保管费用、存货损坏费用等。仓库保管费用是指仓库的保险费、税金等,存货损坏费用是指存货的陈旧贬值及过时削价损失等。由于不同仓库存储条件不同,因而存储费率会有所不同。

▎数学模型

多配送中心选址问题可以描述为:某个地区内有若干个需求点,已知各个需求点的需求量,现欲在该区域内若干个配送中心备选点中选择一部分,建立配送中心,以满足该地区需求点的需求,并使得包括固定费用、运输费用以及存储费用在内的总费用最少。

为了简化问题,我们先做出如下假设:

1)仅在给定的配送中心备选点中选择一部分建立配送中心。

2)运输费用与运量成正比。

3)配送中心容量足够大,可以满足所有需求。

4)各需求点的需求量已知

假设有​个需求点,各个需求点的需求量已知,现欲从​个备选地中选取​个建立配送中心,使得整个配送系统的总费用最少。

为了建立数学模型,首先引入以下变量:

:需求点个数;

:配送中心备选地个数;

:拟建配送中心个数;

  :第个需求点的年需求量;

  :配送中心为需求点供应的货物量;

  :从配送中心到需求点的单位运费(包括装卸、运输费);

  :在第个备选点建立配送中心的年固定费用;

  :在第个配送中心存储单位货物的存储费;

在备选地建立配送中心未在备选地建立配送中心

使得总费用最低的多配送中心选址问题可以表示成如下整数线性规划模型:

模型中的目标函数(1)表示极小化总费用,其中第一项表示从配送中心到需求点的总运输费用,第二项表示配送中心的固定费用,第三项表示配送中心的存储费用。

约束条件(2)式表示各个需求点的需求量必须得到满足;(3)式表示在个备选地中选取个建立配送中心;(4)式表示如果一个备选地为某些需求点提供货物,则需要在该地建立配送中心,其中是一个很大的正数;(5)式表示变量的取值限制。

▎模拟退火算法

01 | 模拟退火算法原理

模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其冷却。加温时,固体内部粒子随温升变为无序状,内能增大;而冷却时粒子渐趋有序,在每个温度上都达到平衡态,最后在常温时达到基态,内能减为最小。

根据Metropolis准则,粒子在温度  时趋于平衡的概率为  ,其中  为温度  时的内能,  为其改变量。用固体退火模拟组合优化问题,将内能  模拟为目标承数值,温度演化成控制参数,即得到解组合优化问题的模拟退火算法。

由初始解  和控制参数初值开始,对当前解重复“产生新解→计算目标承数差→接受或舍弃”的迭代,并逐步减小 ,算法终止时的当前解即为所得近似最优解,这是基于Monte Carlo 迭代求解法的一种启发式随机搜索过程。

退火过程由冷却进度表控制,包括控制参数的初值  及其衰减因子  、每个  值时的迭代次数 

02 | 模拟退火算法主要思想

模拟退火的主要思想是:在搜索区间随机游走(即随机选择点),再利用Metropolis抽样准则,使随机游走逐渐收敛于局部最优解。而温度是Metropolis算法中的一个重要控制参数,可以认为这个参数的大小控制了随机过程向局部或全局最优解移动的快慢。

Metropolis是一种有效的重点抽样法,其算法为:系统从一个能量状态变化到另一个状态时,相应的能量从变化到,其概率为:

如果  ,系统接受此状态;否则,以一个随机的概率接受或丢弃此状态。状态2被接受的概率为:

这样经过一定次数的迭代,系统会逐渐趋于一个稳定的分布状态。重点抽样时,新状态下如果向下,则接受(局部最优);若向上(全局搜索),则以一定概率接受。

模拟退火算法从某个初始解出发,经过大量解的变换后,可以求得给定控制参数值时组合优化问题的相对最优解。然后减小控制参数的值,重复执行Metropolis算法,就可以在控制参数趋于零时,最终求得组合优化问题的整体最优解。控制参数的值必须缓慢衰减。

温度是Metropolis算法的一个重要控制参数,模拟退火可视为递减控制参数Metropolis算法的迭代。开始时 ,可以接受较差的恶化解;随着  的减小,只能接受较好的恶化解;最后在  趋于0时,就不再接受任何恶化解了。

在无限高温时,系统立即均匀分布,接受所有提出的变换。  的衰减越小,  到达终点的时间越长;但可使马尔可夫(Markov)链减小,以使到达准平衡分布的时间变短。

03 | 模拟退火算法的特点

模拟退火算法适用范围广,求得全局最优解的可靠性高,算法简单,便于实现;该算法的搜索策略有利于避免搜索过程因陷入局部最优解的缺陷,有利于提高求得全局最优解的可靠性。模拟退火算法具有较强的鲁棒性,这是因为比起普通的优化搜索方法,它采用许多独特的方法和技术。主要有以下几个方面:

  • 以一定的概率接受恶化解
  • 引进算法控制参数
  • 对目标函数要求少

04 | 模拟退火算法流程

优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)

图1 模拟退火算法流程图

▎实际案例

某连锁企业的需求点分布在江苏省的 20 个城市(如表1所示),为了提高客户服务效率以及降低物流成本,该企业决定在省内建立若干配送中心,配送中心备选地分别是灌云县、宿迁市、淮安市、高邮市、宝应县、南通市、高淳县、溧水县。表1是需求点和序号的对应表格,表2~表4分别列出了各个需求点的需求量、单位存储费用、年固定成本以及需求点与备选点之间的单位运费等。采用模拟退火算法从8个备选地中选择3个建立配送中心,使得总费用最低。

优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)
优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)
优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)
优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)

▎算法结果

采用Matlab求解,得到3个配送中心分别应该建在淮安市、宝应县和高淳县,最小总费用为1613952元。根据计算结果,画出模拟退火算法求出的配送中心与需求点之间的分配表(见表5)及总成本变化趋势图(见图2)。

优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)
优化算法 | 模拟退火算法(SA)求解多配送中心选址问题(附MATLAB代码)

图2 总成本变化趋势图

▎代码获取方式

在公众号后台回复关键词【SADCLP】,即可提取本篇推文代码。

▎参考

[1]李珍萍. 物流配送中心选址与路径优化问题[M]. 机械工业出版社,2014.

继续阅读