合理的货仓选址对现代物流治理有着重要影响,通过对货仓进行合理计划,不但可以节约配送本钱,还可以提高客户满意度及企业的焦点竞争力
P-中位选址问题(P-Median)是一类典范的组合优化问题,属于NP-hard问题,在设施选址、交通、物流等领域有着较为广泛的应用
本文建立的货仓选址模型考虑了设施点的容量、年建设本钱和车辆行驶本钱。有容量的货仓选址模型需从候选设施点集中选取部分作为设施点,为需求点提供货物运输效劳。包管每个需求点均由设施点提供效劳,且设施点效劳的总需求量不凌驾设施点的效劳容量限制。在选址问题中,车辆的行驶用度与设施点的建造用度往往是相互矛盾的。建立较少的货仓可节省较多的建设用度,但会增加车辆的交通本钱,反之亦然。因此,构建适当数量的货仓可以资助平衡货仓建设本钱与车辆行驶本钱。
为便于选址模型建立,给出以下假设:(1)一个设施点可为多个需求点提供效劳,但一个需求点仅由一个设施点提供效劳;(2)车辆行驶本钱与行驶距离之间保存简单线性关系;(3)区域内的需求点拟用离散型变量漫衍点集N体现,候选设施点从点集M中爆发;(4)设施点货仓建设为统一标准。
模型所用符号说明如下:
荟萃:
N:需求点的荟萃;
M:设施点的荟萃;
参数:
dij:i需求点到j设施点之间的距离,i∈N,j∈M;
p:设施点的个数;
B:设施点的建设本钱;
r:盘算设施点的折现率;
t:新建设一个设施点的使用年限;
k:门路曲折系数;
Di:需求点i的需求量;
G:设施点最大可效劳的容量。
决策变量:
基于上述假设、界说的参数和决策变量,将货仓选址问题的数学模型体现为:
约束条件:
目标函数(1)为设施点的年建设本钱与车辆行驶本钱之和。牢固资产的价值可能会随着时间而变革。在货仓的使用年限内,将牢固本钱折算为年本钱更为合理。贴现率r常用来体现建筑本钱的目今价值与未来价值的关系
相乘获得
免疫优化算法是一种基于生物免疫系统的智能优化算法。在该算法中,模型中的目标函数息争划分对应于生物免疫系统中的“抗原”和“抗体”
Fig.1 Flow chart of immune optimization algorithm
考虑到有容量货仓选址模型的具体特征,设计革新的免疫优化算法,使其更适合有容量的货仓选址模型,并克服经典免疫算法易陷入局部最优解的问题。革新的免疫优化算法主要由3部分组成:(1)初始化:确定解的表达形式,随机爆发初始抗体,将满足条件的一定命量的抗体生存,以便算法能够快速地寻优迭代;(2)抗体评价:抗体评价是通过盘算抗体的亲和力评价抗体优劣,亲和力盘算包括抗体与抗原的亲和值、抗体密度。将质量高的若干抗体存入影象库中,以便算法快速收敛到最优解;(3)遗传操作:在遗传操作中,利用单点交叉、二点交叉、变异算子生成子代抗体,既增强了对有希望空间的搜索利用,又能坚持种群的多样性,使其快速收敛到最优解。
货仓选址模型的选址计划可以形生长度为l的抗体(l为开放设施点的数量),每个抗体体现开放设施点的序列,即解的序列。关于m个候选设施点中选取l个开放设施的选址问题,假设m个候选设施点的编号划分为1,2,…,m (m>1),则抗体l=[M1,M2,…,Ml]体现一个可行的解决计划,其中,M1,M2,…,Ml体现1,2,…,m中不重复的l个序号。
与经典免疫优化算法相同,初始解首先通过洗牌方法爆发:将候选设施点集1,2,…,m (m>1)的顺序打乱,随机选择两个差别位置的数字并进行交换,执行
次。将交换后序列的前l个数字作为初始抗体。但由此爆发的抗体具有随机性,抗体质量较差。因此,本文对抗体进行判断,选择优质抗体作为初始抗体�?固逯械拿扛錾枋┑阄狹j,(j∈M),usdcap(j)为设施点j已效劳的需求量,demandi为需求点i的需求量,Cj为j设施点的效劳容量。将需求点i分派给离其最近且满足容量约束(usdcap(j)+demandi≤Cj)的设施点j,令xij=1,并更新usdcap(j)=usdcap(j)+demandi;遍历完所有需求点i,如果demandi均能被满足,且设施点所效劳的总需求不凌驾该设施点的容量限制,则判定抗体及格;不然,重新爆发新的抗体并检验是否及格。本文在算法中设置影象库存储高质量的抗体,以保存优秀抗体的优秀特征,初始影象库中的抗体是随机生成的及格抗体。将及格的P1个抗体与影象库中P2个抗体组成初始抗体群。
抗体与抗原之间的亲和值体现抗体对抗原的识别水平。通过式(8)盘算抗体与抗原间的亲和值,即适应度值。
抗体间的相似值体现它们之间的相似性。本文接纳Smith等
其中,tk,v为抗体k、v之间的相同位数,l为每个抗体的长度。例如,抗体xk=[53 23 12 45 61 20 37 56 24 65 34 1]和xv=[25 39 53 32 11 47 12 16 15 19 45 5]的相同位数为3,则xk和xv之间的Sk,v为0.25。
抗体密度φk,即抗体浓度,体现群体中相似抗体的比例。
如果Sk,v>R,则Bk,v=1,不然Bk,v=0。R是预界说的阈值
通过式(11)可盘算抗体的期望滋生概率,式(11)由抗体的亲和值和抗体密度两部分组成。
其中,η为[0,1]区间内的常数。
由式(11)可知,抗体与抗原的亲合值越大,期望滋生概率越高;抗体密度越大,期望滋生概率越小。因此,式(11)不但可以勉励选择适应度值好的抗体,并且可以抑制抗体间的密度,从而确保种群的多样性。当免疫优化算法抑制高密度的抗体时,部分高密度的抗体可能已接近于最优解,这样会导致已求得的最优解丧失。因此,本文接纳精英保存战略:在更新影象库时,先将与抗原亲和值高的P个抗体存入影象库中,保存抗体群中精英个体的优秀特征;再提取前P1个抗体作为父代群体,凭据期望滋生概率进行选择和遗传操作,以坚持优良抗体的特性。
通过轮盘赌的机制进行选择操作,轮盘选择法是一种比较受接待的选择要领。凭据抗体的期望滋生概率,在父代群体P1中选择两个抗体。期望滋生概率越大,被选择的概率就越高。
交叉在遗传操作中起着至关重要的作用,它可以提高抗体间的差别度,以便算法快速收敛到最优解�?悸鞘窃谡嗦氲囊糯僮髑榭鱿�,本文使用时间庞漂后低的两种交叉操作方法:单点交叉和两点交叉。关于两种交叉方法的参数选择,设置交叉率的规模为θ∈[θmin,θmax],随机生成[0,1]之间的随机数γ,若γ≤θ,则选择单点交叉,反之,选择两点交叉操作。
单点交叉:给定两个抗体parent1、parent2,首先在2和l-1之间随机选择一个交叉点q。交换两个抗体在q点之后的元素,获得parent1,、parent2,。若parent1,中更改的序号r在parent1中已保存,则找到parent1中序号r所在的位置R,并找到parent2中R位置的序号r,,将parent1,中的序号r改为r,。重复此办法,直到抗体中无重复序号,获得子代抗体child1和child2。
单点交叉操作如图2所示。关于亲本抗体parent1=[102 21 13 9 17 6 23 4]和parent2=[11 8 20 1 15 12 21 14 5],随机选择交叉点q=6。将两个抗体第6个位置后的元素交换获得parent1,=[10 2 21 13 9 12 21 14 5],parent2,=[11 8 20 115 17 6 23 4]。在parent1,中有重复元素21,因此找到parent1中元素21所在的第3个位置,并找到parent2中位置3的序号为20,将parent1,第7个位置的元素改为20。最后,获得无重复元素的子代抗体child1=[10 2 21 13 9 12 20 145]和child2=[11 8 20 1 15 17 6 23 4]。
图2 单点交叉例子
Fig.2 An example of one-point crossover
两点交叉:给定两个亲本抗体parent1、parent2,首先在2和l-1之间随机选择两个差别的交叉点q1、q2,交换两个抗体交换q1和q2之间的元素,获得抗体parent1,、parent2,。与单点交叉相同,需要消除子代抗体中的重复元素,获得子代抗体child1、child2。
两点交叉操作如图3所示。关于亲本抗体parent1=[102 21 13 9 17 6 23 4]和parent2=[11 8 20 1 15 12 21 14 5],随机选择两个交叉点q1=4,q2=6。将两个抗体q1和q2之间的元素交换,获得parent1,=[10 2 21 1 5 12 6 23 4],parent2,=[11 8 20 13 8 17 19 14 5]。parent2,中有重复元素8,因此找到parent2中元素8所在的第2个位置,并找到parent1中第2个位置的元素为2,将parent2,第5个位置的元素改为2。最后,获得无重复元素的子代child1=[10 2 21 1 5 12 6 23 4]和child2=[11 8 20 13 2 17 19 14 5]。
突变指通过在抗体中引入随机变异以增加种群多样性,消除算法在无希望区域的停滞,探索新搜索区域的历程
在实现突变的历程中,还应考虑�;び判憬獾奶卣�,因为在迭代历程中,可能已求得一些解接近于最优解,直接对解执行突变操作,可能会丧失已求得的优秀解
Fig.3 An example of two-point crossover
Fig.4 An illustration of the mutation withμ=3,p=3 and N={1,2,?,12}
图4 μ=3,l=3,N={1,2,…,12}的突变操作例子
以上海市S物流公司为案例,凭据实地调研,S物流公司每天由货仓向各网点运输货物。该公司在上海市共有51个网点漫衍,因此获取51个需求点的坐标与需求量,并选取15个候选货仓点,需求点的需求量为每天运输的车辆数。模型中各参数如表3所示。需求点与设施点的相关数据如表1、表2所示。
凭据经纬坐标盘算两点之间的距离,使用式(12)将经纬距离转换为两个节点i和j之间的实际行驶距离dij:
其中,(xi,yi)、(xj,yj)为两个节点的经度和纬度坐标,6 370为地球半径(km)。通过式
盘算出两点间的线性距离。抽取30组两点间的线性距离,将其与百度地图获得的实际行驶距离相比较,获得误差值k。
参数的合理设置对算法的有效性和盘算效率有着重要影响,算法中的参数:种群规模P=P1+P2(P1为父代群体数量,P2影象库容量)、迭代次数iter、影象库容量P2、交叉率的区间[θmin,θmax]、期望滋生概率评估参数η、突变率μ需要进行合理设置。参数调优和参数控制是元启发式算法中确定参数值的两种常用要领
迭代次数在算法中起重要作用,迭代次数设置较高可能会浪费算法运行时间,迭代次数设置较低可能会提前结束搜索历程,无法找到最优解。首先使用精确软件CPLEX划分对4个案例进行求解,并获得最优值;然后使用本文设计的免疫优化算法对4个案例划分独立运行10次,取得平均结果与平均运行时间。表4给出了4个案例的规模与求解情况,包括每个案例变量个数、约束条件个数、最优解(Best)、结果平均值(BOV)、10次求解中找到最优解的数量(Found)、结果与最优值的偏离水平(APD=((BOV-best) best)×100%)、运行平均时间(Time(s))、求得最优解的迭代次数(Iters)。
表1 需求点坐标与需求量
Table 1 Demands and coordinates of each demand node
表2 设施点坐标
Table 2 Coordinates of each facility node
表3 模型中的其他参数
Table 3 Other parameters in the model
由表4结果可知,4个案例在150次迭代内均求得了最优或接近最优解。因此,本文设置迭代次数Iters=150。
设置种群规模,取6个差别的参数值进行测试。表5给出了差别的种群规模下,4个案例进行10次运行的平均测试结果,包括种群规模、平均运行时间和APD(%)。从表5可以看出,当种群规模大于即是30时,运行时间息争的质量较好。随着种群规模的增大,算法盘算时间也越长�?悸堑浇獾闹柿亢团趟闶奔�,本文设置种群规模P=30。
Table 4 Test results from 10 runs in 4 cases
Table 5 Test results of population size
影象库用于存储每次迭代爆发的精英抗体。精英抗体的数量在种群中占有一定比例。影象库容量设置过大时,算法容易陷入局部最优;影象库容量设置过小时,寻找最优解的盘算时间会增加。因此,设置合理的影象库容量,对保存精英抗体的特征与维持种群的多样性具有重要意义。通过设置6个差别的比例,确定最合适的影象库容量。表6给出了差别的影象库容量值,4个案例运行10次的平均测试结果,其中,[X]体现不大于X的最大整数。由表6可以看出,当影象库容量为[0.35*(P)]时,可以获得较好的解决计划。因此,设置P2=[0.35*(P)],即P=30时,P2=10。
Table 6 Test results of memory capacity
交叉率用于决定抗体的交叉操作为两点交叉或一点交叉,这对决定如何保存亲本特征较为重要。在算法运行时,与牢固交叉率相比,可变的交叉率可以有更大的灵活性去探索更有前景的搜索区域。通过设置18个差别的取值区间,确定最合适的交叉率区间。表7给出了差别的交叉区间下,4个案例运行10次的平均测试结果。由表7所示的测试结果可以看出,在区间[0.5,1]和[0,0.9]内,盘算获得的APD(%)值和盘算时间较好。
Table 7 Test results of crossover rate
变异是遗传操作的主要算子之一,通过变异可以搜索新的区域、逃离目今局部最优情况。确定合适的突变率可以决定抗体变异强度。突变率和交叉率一样重要,会对革新免疫优化算法的盘算效率爆发较大影响。设置较小的突变率容易在寻优历程中陷入局部最优,设置较大的突变率会失去已获得的优秀特征。表8给出了4个案例在差别突变率下运行10次的平均测试结果。从表8可以看出,当突变率为0.5和0.6时,免疫优化算法的性能更好,可以在较短时间内求得较好的解。
Table 8 Test results of mutation rate
期望滋生概率体现对抗体进行评估,参数η用于为抗体对抗原的识别水平、抗体密度付与差别权重,以此获得抗体的期望滋生概率。如表9所示,当参数η设置为0.8或0.85时,算法运行时间较短,且APD(%)较低,求得解的质量较高。
Table 9 Test results of parameterη
差别的参数组合对算法性能也有很大影响。如上所述,交叉率、突变率和参数η有多个较优值,将差别的参数进行组合,获得8种组合方法。使用每种组合方法对4个案例各进行10次运行求解,获得平均运行时间与APD(%)值。差别参数组合的测试结果如表10所示,从测试的运行时间与APD(%)值可以看出,当参数组合[?min,?max]=[0,0.9]、μ=0.5、η=0.8时,算法求解时间与解的质量最优。
Table 10 Test results of different parameter combinations
基于上述讨论和测试,算法参数设置情况为:迭代次数Iters=150、种群规模P=30、影象库容量P2=10、交叉率区间[?min,?max]=[0,0.9]、突变率μ=0.5、抗体评估参数η=0.8。
通过上述革新的免疫优化算法及参数设置,对S物流公司的案例进行求解剖析。实验情况为Intel(R)Core i5-8250u CPU@1.60GHz 8.00GB内存,操作系统为64位Windows 10,使用Matlab R2017b进行编程。求解获得目标函数为9.116 06×105,运行时间为45.70s。所选择的设施点为3、5、6、8、9、10、11、12、13、15,需求点与设施点漫衍情况如图5所示(彩图扫OSID码可见)。图5中的黄色圆点为需求点,红色星星为所选的设施点,绿色圆点体现未被选择的设施点,连线标明需求点与设施点之间的关系。从图5可以看出,每个需求点均有指定的设施点进行效劳,且需求点均被分派给距离较近的设施点。表11为设施点所效劳的需求点和效劳的总需求量,可以看出,每个设施点效劳的总需求量均不凌驾效劳容量限制。因此,本文的货仓选址模型有效可行,能够解决物流公司的货仓选址与需求分派问题,并有效降低车辆本钱与牢固本钱,提高企业对车辆及货仓的控制。
Table 11 Relationship between facility points and demand points
Fig.5 Distribution of facility and demand points
为了验证革新免疫优化算法的有效性,本文使用革新免疫优化算法的求解结果与软件CPLEX精确求得的精确解进行比照剖析。如表12所示,免疫优化算法与CPLEX求解获得的结果相同,且免疫优化算法运行时间更短。因此,免疫优化算法可有效地解决货仓选址问题。
Table 12 Comparison between improved immune optimization algorithm and CPLEX
为了验证革新免疫优化算法的求解性能,将其优化结果与经典免疫优化算法的求解结果进行比照剖析。图6和图7划分为革新的免疫优化算法与经典免疫优化算法的收敛曲线。由图6和图7可以看出,革新的免疫优化算法无论是收敛速度,照旧结果准确度都优于经典免疫优化算法。
Fig.6 Convergence curve of classical immune algorithm
Fig.7 Convergence curve of improved immune algorithm
本文结合货仓设施选址特点,建立了考虑容量约束的货仓选址模型。凭据选址模型特点,设计了革新的免疫优化算法对案例进行求解。在算法中设计了两种交叉算子和变异算子,使得算法可快速收敛到最优解,降低算法运行时间。本文还对革新免疫优化算法的参数进行详细剖析,找到最优参数组合方法,提高算法性能。最后,对案例进行求解,验证了模型和算法的有效性与可行性。本文提出的货仓设施选址要领可为决策人员选择最佳结构计划提供科学合理参考。
在下一步研究中,将进一步细化影响货仓选址的各因素,并考虑效劳时间窗的约束,更合理地在模型中体现车辆行驶实际情况,以增加模型求解的准确性和实际应用价值。
【本文标签】
【责任编辑】yd2333云顶电子游戏云仓