遗传算法在物流配送中心选址15文档格式.doc
《遗传算法在物流配送中心选址15文档格式.doc》由会员分享,可在线阅读,更多相关《遗传算法在物流配送中心选址15文档格式.doc(9页珍藏版)》请在冰豆网上搜索。
3)每个客户都有一个非负的货物需求量,并且经过该客户的配送路径货物总需求量不能大于配送车的载货量;
问题假设主要如下:
配送中心建设费用为W,坐标为,客户总数为,其坐标为…,,第个客户需求量为,卸货时间为,配送中心和客户的预约时间为,配送中心与客户或者客户与客户之间的最短距离为…,),车辆的平均车速度为…,),每公里车辆的费用的为…,),车辆种类为m,第p类卡车车辆数为,载货量为,车辆等待费用每小时为r,正常工作时间时司机的工资为每小时,加班时间时的补助为每小时,车辆需要返回配送中心,表示车辆总费用,另
,
2标准遗传算法解决配送中心选址问题
标准遗传算法的基本思想和基本步骤在上文中已经详细的论述,但在实际问题中,其具体操作却有着不同的地方,对于选址问题,主要方法和步骤[3-5]如下:
第一步:
选址数学模型
根据题目我们有:
车辆行驶的费用为:
(3.1)
驾驶员的费用(工资和补助)为:
(3.2)
由此建立物流配送中心选址问题的数学模型:
(3.3)
(配送中心选址考虑的费用)
s.t.保证任一客户i只由一辆车来送货(3.4)
保证任一车辆送货量不大于载货量(3.5)
优化目标:
找出配送中心选址所需费用最小时的
第二步:
编码方案
若需要选定m个配送中心,则染色体需要由2m个浮点数排列组成:
……,,其中表示第i个配送中心的地址坐标,一个染色体所包含的m个地址就是配送中心的选址的一个方案。
如,对于本文,只需要一个配送中心,则染色体为。
第三步:
初始种群
在配送区域随机产生一系列地址点,构成N个个体,构成初始种群,…,(其中……,),并作为遗传迭代的第一代。
第四步:
适应度函数
遗传算法的一个特点是它可以使用所求问题的目标函数值即可得到下一步的有关收集信息,而对目标函数值的使用是通过评价个体的适应度来体现的。
适应度是群体中个体生存机会选择的唯一确定性指标,所以适应度函数的形式直接决定了群体的进化行为。
为了直接将适应函数与群体中的个体优劣质量相联系,在遗传算法中适应度规定为非负,并且在任何情况下总是越大越好。
配送中心选址模型问题所建立的目标函数式(3)是求最小值,则适应度函数可采用2.4式,定义如下:
,(3.6)
可以取当前出现过的最大值。
第五步:
选择算子
对于浮点数编码,我们宜根据个体的适应度大小从大到小排列个体,重排后的个体适应度最高,性能最优。
根据排序决定每个个体复制到下一代的概率,用轮盘赌法复制L个个体,进入下一代,代数增加1。
第六步:
交叉算子
采用与二进制相似的单点交叉。
在二进制单点交叉中,只需要将交叉点对应的元素进行交换,浮点数编码的单点交叉与此相同。
如
父代个体,
父代个体
交叉点为3,则交叉过后,子代个体为
。
在设定交叉概率后,从群体中随机选出个个体进行两两交叉,从而得出新的个体。
第七步:
变异算子
变异操作以概率对染色体群中的某些染色体的某些位进行变异,产生新的个体染色体,作为交叉运算的补充,变异操作可能增加方案的多样性,克服求解可能出现的早熟和陷入局部最优解的现象,变异概率取不同的值对算法性能的影响很大,过大,求解时间会明显增加,但算法收敛于局部最优的可能性减少。
第八步:
算法停止准则设计
淘汰不符合约束条件(4)(5)的染色体,同时,在每一代产生的染色体当中,计算出个体的最大适配值和最小适配值,若(为停止准则参数),则回到第五步,继续进行遗传操作,否则就输入最优结果,停止计算。
3混合遗传算法解决车辆调度问题
在解决车辆调度问题时,本文在标准遗传算法的基础上,采用了期望值选择方法,并且将爬山法和遗传算法相结合,从而构成求解该问题的混合遗传算法,其主要步骤[6-8]如下:
车辆调度数学模型
车辆调度需要考虑的因素与配送中心选址基本相同,但,不需要考虑配送中心建设费用,并且需要增加考虑车辆等待费用。
故,我们可以建立如下车辆调度模型:
(3.7)(车辆的总费用)
s.t.保证任一客户i只由一辆车来送货
保证任一车辆送货量不大于载货量
车辆的总费用最小。
根绝物流配送问题的特点,物流中的车辆调度问题适宜采用自然数编码。
首先根据货物的总的需求量C=,每辆车的平均载货量,计算出需要车辆的数目n=。
根绝自然数编码的原理我们可以产生1,2,3,…,,,…,的自然数排列,其中1,2…,为客户序列,,…为n虚拟配送中心,n为所需的车辆数。
在通过自然数编码产生的排列当中,我们随机选择n个符合约束条件(6)(7)的排列作为初始个体,构成初始种群。
例如用4辆车向7个客户送货,设某个排列为1,3,8,2,6,9,4,7,10,5,它表示4条路径0-1-3-8-0,0-2-6-9-0,0-4-7-0,0-5-0,其中的0表示配送中心。
若每一条路径上客户的需求量之和均小于车辆的最大载货量,则选择改排列作为一个个体;
否则,则不能选此个体作为个体。
并输入控制参数(交叉概率,变异概率,群体规模,最大运行代数)。
自然数编码能够很好的保证每一个客户所需要的货物只由一辆车配送,但不能保证交叉变异以后的个体满足条件,故给予一定的惩罚。
令
,保证客户i的需求量不大于给它送货车辆的载货量。
…,),表示所有客户对货物的总需求量。
若取惩罚权重为,则染色体的适应度函数可以定义为:
在物流配送的车辆调度问题中,我们采用期望值方法可以得到比较好的结果,根据式子2.14,群体中每一个个体在下一代生存的期望数目为,并且,被选中参与配对和交叉的个体在下一代的生存期望为该个体生存期望减去0.5,未被选中的个体在下一大的生存期望为该个体生存期望减去1,但需要注意的是,个体生存期望为小于零的不参与配对和交叉。
对于自然数编码个体,根绝前面2.5.2节所讲述的循环交叉算子(CX,cyclecrossover)的方法,我们可以很容易由父个体产生出子个体。
变异算子和算法停止准则的设计与配送中心选址中的变异和停止准则设计相同。
4算例
某牛奶公司在一城市中有12个销售点,销售点的需求量,位置,以及卸货时间如表3.1所示。
送货车辆有两种,A类载货量为500箱,没公里车辆费用为3元,B类载货量为400箱,每公里车辆费用为2.5元。
驾驶员正常工作时间内的工资为每小时10元,加班补助为每小时20元。
设最早发车时间为早上6:
00。
1)试确定一个配送中心的地址(配送中心建设费用为1.5万元,并且范围坐标为(1000,1000)),使目标函数值最小。
2)确定配送中心地址后的车辆调度方案,使目标函数值最小。
表3.1销售点坐标及需求表
客户
牛奶箱数
客户位置(km)
卸货时间
(min)
预约时间
X坐标
Y坐标
1
120
30
114
60
7:
2
200
40
36
90
3
48
96
4
150
52
80
5
140
92
154
70
6
66
7
110
94
100
8
180
108
9
44
160
50
10
20
54
11
32
12
130
88
1、配送中心选址模型为(3.3)式,在matlab6.5环境下编程可实现此例中配送中心地址的寻找。
其控制参数如下:
N=12%种群规模
n=1%配送中心个数
%销售点数目
B=0100001000%配送中心边界范围
M=1000%最大迭代代数
=0.85%交叉概率
=0.05 %变异概率
=1.0×
%固定最大值
W=15000%配送中心建设费用
运行程序,得出配送中心的坐标为(60,140),目标函数值为17532.54。
2、配送中心确定后,我们可以根据,…,12)计算出各销售点与配送中心的距离。
同时我们可以看到各个销售点的总需求量为1620箱,按照车辆调度问题中编码的办法可以计算出共需要4辆车(),因此求解出来的方案应该为1—15(13,14,15为虚拟配送中心)的一个排列。
设定群体规模为N=20,交叉概率,变异概率,最大运行代数为1000代。
在matlab6.5中运行,其结果显示最优染色体为3—2—10—13—5—8—15—7—12—6—11—14—9—1—4,A,B类车各需要2辆,总费用为2725.98元。
具体运行情况见下表3.2。
表3.2车辆调度情况
序号
车型
车辆容量
/实载量(箱)
车辆路径以及收发车时间
总费用
(元)
A
500/480
0(6:
35)—3(6:
30)—2(9:
05)—10(11:
35)