一、VRPSDPTW问题
VRPSDPTW可定义在有向图G=(V,A),其中V={0,1,2,...n,n+1}表示所有节点的集合,0和n+1表示配送中心,1,2,...n-1,n表示顾客,A表示弧的集合。规定在有向图G上,一条合理的配送路线必须始于节点0,终于节点n+1。VRPSDPTW模型中涉及的参数、决策变量如下表所示。此外,表示从节点i出发的弧的集合,表示回到节点j的弧的集合,N=V\{0,n+1}表示顾客集合,K表示皮松车辆集合。
1、参数
cij:表示节点i和节点j之间的距离;
V:配送车辆的行驶速度;
si:顾客i的服务时间;
tij:节点i到节点j的行驶时间;
ai:顾客i的左时间窗;
bi:顾客i的右时间窗;
E:配送中心的左时间窗;
L:配送中心的右时间窗;
di:顾客i的配送需求量;
Pi:顾客i的回收量;
C:货车最大装载量;
M:足够大的正数
2、决策变量
wik:车辆k对节点i的开始服务时间;
Lok:车辆k离开配送中心的装载量;
Li:货车对顾客i服务结束后的车辆装载量;
Xijk:货车k是否从节点i出发前往节点j,如果是,则等于1,否则为0。
3、模型
VRPSDPTW模型中,允许配送货车在顾客的左时间窗之前到达顾客,但需要等待至左时间窗才可以为顾客服务;不允许配送货车的右时间窗之后到达顾客。(早到需等待,晚到无法服务)
目标函数:
约束条件:
目标函数(1)表示最小化车辆行驶总距离,约束(2)限制每个顾客只能被分配到一条路径,约束(3)~(5)表示配送货车k在路径上的流量限制,约束(6)表示配送货车从节点i到节点j的行驶时间等于节点i和节点j之间的距离与货车行驶速度的比值,约束(7)表示配送货车k行驶时间的造续性,约束(8)表示配送货车k对顾客i的开始服务时间必须在顾客;的左右时间窗之间,约束(9)表示配送货车k对从配送中心出发的时间(返回配送中心的时间)必须在配送中心的左右时间窗间,约束(10)为配送货车4初始在配送中心的装载量计算公式,约束(11)为配送货车k在对所在路线的第一个顾客服务结束后的车辆装载量的计算公式,约束(12)为配送货车k在对所在路线的任意一个顾客(不包含第一个顾客)服务结束后的车辆装载量的计算公式,约束(13)表示配送货车k初在配送中心的装载量必须不大于配送货车的最大装载量,约束(14)表示配送货车k在对所在路线任意一个顾客服务结束后的车辆装载量必须不大于配送货车的最大装载量。
二、头脑风暴优化算法
头脑风暴法可以由一个人或一组人进行。参与者围在一起,随意将脑中和研讨主题有关的见解提出来,然后再将大家的见解重新分类整理。在整个过程中,无论提出的意见和见解多么可笑、荒谬,其他人都不得打断和批评,从而产生很多的新观点和问题解决方法。
BSO求解VRPSDPTW问题主要包含以下几个关键步骤:
(1)编码与解码;(2)目标函数;(3)种群初始化;(4)聚类操作;(5)替换操作;(6)更新操作;(7)局部搜索操作;(8)合并操作。
-
三、算例分析
1、输入数据
输入数据为一个配送中心和15个顾客的x,y坐标、需求量、回收量、左右时间窗。此外,假设配送中心最多允许10辆车为这些顾客服务,每辆车的最大装量都为150kg,每辆车的行驶素的都为30km/h。
序号 |
X坐标/km |
Y坐标/km |
需求量/kg |
回收量/kg |
左时间窗 |
右时间窗 |
服务时间/min |
0 |
40 |
50 |
0 |
0 |
7:00 |
21:00 |
0 |
1 |
45 |
68 |
40 |
45 |
17:00 |
17:30 |
20 |
2 |
45 |
70 |
10 |
20 |
16:30 |
17:00 |
20</ |