求解车辆路径问题的一种遗传算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
q 的车辆多辆, 负责对 N 个顾客配送货物, 其中客
户 i 的货物需求量为 g i ( i= 1, 2, …, N ) , 且满足 g i <
q , 车辆必须在一定的时间范围即时间窗 [ a i , bi ] 中到
达顾客 i 处并进行服务, 且每个顾客只能由一辆车 服务。 现在需要为每辆车确定行驶路径, 使得各个约 束能得到满足, 而且总的运输成本最小。 当没有时间 窗限制时, 就得到一般的 V R P 问题。 这里须预先对所需要的车辆数进行估计。 本文 采用文献 [ 2 ] 中的方法按下面的式子确定车辆数
收稿日期: 2005210212 修订日期: 2006203220 基金项目: 国家自然科学基金资助项目 (70301005) ; 教育部南开 2天津大学刘徽应用数学中心资助项目 作者简介: 林 丹 (19682) , 男, 副教授, 博士后。 研究方向为进 化算法。
(V eh icle Rou t ing P rob lem w ith T im e W indow , V R PTW ) 。 根据时间窗约束是否严格, V R PTW 还
2. 2 约束处理与适应值函数 V R P 及 V R PTW 有复杂的约束条件, 用遗传
算法求解时, 可采用罚函数方法来处理约束[ 2 ] , 以保 证种群中染色体的多样性, 使得遗传算法的搜索能 够有效进行, 具体作法如下: 对一般的 V R P, 使用如下变换将容量约束式 ( 2) 变为目标函数的一部分:
Ke y w o rds : veh icle rou t ing p rob lem ; genet ic a lgo rithm ; t i m e w indow ; p a rt ia lly m a tched cro ssover
车 辆 路 径 问 题 (V eh icle Rou t ing P rob lem , [ 1, 2 ] 产生于现实的公路交通运输系统规划, 是 VRP) 一类具有重大应用价值的组合优化问题。经典 V R P 可描述为: 给定一定数目的顾客, 每个顾客各自有不 同的货物需求量。 现由一个中心仓库派出一个车队 为所有顾客提供所需货物, 要求合理安排车队中每 车辆的行驶路线, 使之在保证满足一定约束和顾客 需求的前提下, 达到诸如路径最短、 耗时最少等优化 目标。 如果每个顾客进一步提出其要求的服务时间 约束, 通常是允许的最早服务时间和最晚服务时间 之间的时间窗, 就得到带有时间窗的车辆路径问题
[1 ]
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.
第 6 期
林 丹, 等: 求解车辆路径问题的一种遗传算法
m
529
交叉算子是遗传算法最重要的遗传操作, 它的 设计是建立在所针对问题的编码形式上的。 交叉算 子的有效性直接影响到遗传算法的效率。 因此, 针对 具体问题和编码形式设计有效的交叉算子是用遗传 算法有效求解问题的重要步骤。 本文采用遗传算法来求解 V R P 和 V R PTW 问 题, 在基于自然数编码的基础上, 对现有的遗传算子 进行改进, 提出了改进的最大保留交叉算子等新技 术。 用所得到的算法求解文献中的典型例子并与文 献中的结果进行比较, 计算结果表明该算法是有效 的。
N N m ij ijk
顺序交叉算子[ 10 ] 交叉两个父代交叉段外的元素; ( 2) 对第 1 步操作后产生的两个子代进行基因 位调整: 把交叉段间的元素移到染色体的首位, 其余 非零元素按照原来的先后顺序排列到其后, 最后排 列剩余的零元素; (3) 对第 2 步操作后的两个子代进行插零工 作: 把子代尾部的各个零元素都插入到交叉段后的 各个非零元素当中, 且使各个零都不相邻, 并保证染 色体末位保留一个 0。 经过以上 3 步操作, 就产生了两个具有父代个 体染色体若干组成结构的子代个体, 从而增加了保 持优良基因段的可能性。 例如对两个父代个体: o ld1= ( 0 1 8 6 0 5 0 2 3 0 9 7 4 0) o ld2= ( 0 9 0 1 5 4 6 0 7 3 0 8 2 0) 并假定选择的两个交叉点分别为 o ld1∶1 和 5, o ld2 ∶3 和 8, 记作 [ 1, 5 ] 和 [ 3, 8 ]。 则经过第 1 步变换后, 产生的两个子代为: new 1= ( 0 1 8 6 0 0 9 5 4 7 3 0 2 0) new 2= ( 8 0 0 1 5 4 6 0 2 3 0 9 7 0) 经过第 2 步位置变换后的两个后代为: new 1= ( 0 1 8 6 0 9 5 4 7 3 2 0 0 0) new 2= ( 0 1 5 4 6 0 8 2 3 9 7 0 0 0) 第 3 步若选择的插入点分别为第一个子代 new 1 的 7, 8 位, 第 2 个子代 new 2 的 9, 10 位, 即把零元素分 别插入到各插入位的元素后, 产生子代如下: new 1= ( 0 1 8 6 0 9 5 0 4 0 7 3 2 0) new 2= ( 0 1 5 4 6 0 8 2 3 0 9 0 7 0) 本文中的变异算子采用文献 [ 2 ] 中的 22交换变 异, 即随机选择一个染色体的两个非零元素, 交换这 两个元素的位置生成新的染色体。 2. 4 算法步骤 综上可以得到求解 V R P 和 V R PTW 的遗传算 法的步骤如下: ( 1) 设置遗传算法的参数, 如交叉率 P c , 变异率
( 10)
式中: c ij 为从客户 i 到客户 j 的运输成本, 可以是距 离、 费用、 时间等;
s i 为车辆到达客户 i 的时刻; t i 为车辆在客户 i 的等待时间; t ij 为车辆由客户 i 行驶到客户 j 的时间; i , j =
1 VRP 和 VRPT W 的模型描述
V R PTW 可描述为: 有一中心仓库, 拥有容量为
∑y
k= 1 N
0k
= m = y jk = y ik
( 4) ( 5) ( 6) ( 7) ( 8) ( 9)
s i , 0}
∑x
i= 0 N
ijk
∑x
j= 0
ijk
s0 = 0 s i + t i + t ij = s j , i ≠ j a j ≤ s j ≤ bj t i = m ax{a i -
可 分 为 软 V R PTW 和 硬 V R PTW 问 题, 其 中, 硬
V R PTW 的时间窗束较严格, 车辆对每个顾客的服
务 时 间 不 允 许 落 在 该 顾 客 的 时 间 窗 外, 而 软
V R PTW 的时间窗约束较松, 允许时间窗外的服务。
由于 V R P 和 V R PTW 是典型的 N P 2ha rd 问 题 , 采用传统优化方法求解效果往往不佳。 因此, 近三十年来涌现出的一些智能算法, 如模拟退火算 法、 遗传算法、 神经网络等, 已被应用来求解 V R P 问题, 并取得较好的效果[ 1, 2 ]。 遗传算法[ 3, 4 ] 是由美国 M ich igan 大学的 Ho l2 land 教授及其学生发展建立的, 其思想源于达尔文 的生物进化论, 是一种群体随机搜索方法, 具有较强 的鲁棒性。 目前遗传算法在 V R P 和 V R PTW 中已 有许多应用[ 1, 2, 5213 ]。
第 15 卷 第 6 期 2006 年 12 月
系 统 工 程 理 论 方 法 应 用
SYST EM S EN G I N EER I N G- TH EO R Y M ETHODOLO GY A PPL ICA T I ON S
Vol . 15 N o. 6 D ec. 2006
文章编号: 100522542 ( 2006) 0620528206
A Genetic A lgor ithm for the Veh icle Routing Problem s
L IN D an , CH OU Y ing 2z he, W A N G P ing
( Schoo l of Sciences, T ian jin U n iv. , T ian jin 300072, Ch ina )
求解车辆路径问题的一种遗传算法
林 丹, 丑英哲, 王 萍
( 天津大学 理学院, 天津 300072)
【摘要】车辆路径问题 (V R P ) 是一个典型的 N P 2ha rd 问题, 采用传统方法求解往往找不到满意解。在分 析现有求解该问题的遗传算法的基础上, 对现有的交叉算子进行了改进, 并设计了基于自然数编码的遗传算 法, 用来求解一般的和有时间窗限制的车辆路径问题。 采用文献中的实例进行了数值试验, 试验结果表明该 算法是有效的。 关键词: 车辆路径问题; 遗传算法; 时间窗; 部分匹配交叉 中图分类号: T P 18 文献标识码: A
x ijk = y ik =
2 遗传算法设计
2. 1 编码方式
本文采用基于自然数的编码方式[ 2 ]。 由于车辆 数 m 事先估计, 故进化群体中一个染色体可表示 为: ( 0, i11 , i12 , …, i1s , 0, i21 , …, i2 t , 0, …, 0, im 1 , …, imw , 0) 其中, 自然数 ik j 表示第 ik j 个客户, 染色体的总长度 为 N + m + 1。 0 代表仓库, 数目一共为 (m + 1) 个, 这
∑g y
i i= 1 m
ik
≤q
∑y
k= 1
ik
= 1
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.
530
系 统 工 程 理 论 方 法 应 用
第 15 卷
路径 3 仓库→客户 6→客户 7→客户 8→客户 9→仓库
路径。 以染色体 ( 0 1 2 3 0 4 5 0 6 7 8 9 0) 为例, 它表 示由 3 辆车完成 9 个顾客的运输任务的路径安排, 3 个路径分别为: 路径 1 仓库→客户 1→客户 2→客户 3→仓库 路径 2 仓库→客户 4→客户 5→仓库
s. t.
N
1, 2, …, N ; k = 1, 2, …, m 。 该模型中, 式 ( 1) 为目标函数, 即最小运输成本;
式 ( 2) 定义了车辆容量约束; 式 ( 3 ) 保证每个能被一 辆车服务; 式 ( 4) 表示由仓库发出 m 辆车; 式 ( 5 ) 和 式 ( 6) 表示 0- 1 变量间的关系; 式 ( 7) 表示车辆在仓 库出发的时刻为 0; 式 ( 8) 表示车辆从客户 i 直接驶 向客户 j 的时间关系; 式 ( 9) 定义了客户服务的时间 窗约束; 式 ( 10) 定义了车辆在客户的等待时间。 当式 ( 9 ) 必须满足, 即服务时间必须在时间窗 中, 超出该时间范围的解为不可行解时, 该问题即为 硬时间窗问题。 而软时间窗问题可以不满足式 ( 9) , 即可提前到达或延迟到达, 但是此gi
+ 1
其中, [ ] 为 Gau ss 整数函数, 表示不大于括号内数 字的最大整数, 0< Α < 1 是对装 ( 卸) 车的复杂性程 度 及约束多少的一个估计参数。 一般情况下, 装 ( 卸) 车越复杂, 约束越多, Α 取值越小, 即一辆车实 际所能容纳的货物量越少。 实践中可通过人机对话 来调整 Α的大小。 下面具体给出 V R PTW 的数学模型。设仓库的 编号为 0, 各客户的编号为 1, 2, …, N , 首先定义模 型中的各变量如下:
(m + 1 ) 个 0 把整个染色体分为 m 段, 即代表 m 个
1 车辆 k 从客户 i 行驶到客户 j 0 否则 1 客户 i 的由车辆 k 服务 0 否则
N N m ij ij k
V SPTW 数学模型如下:
m in Z =
N
∑∑∑c x
i= 0 j = 0 k = 1
( 1) ( 2) ( 3)
【A bs tra c t 】T he veh icle rou t ing p rob lem is a cla ssica l N P 2ha rd p rob lem , and it is u sua lly d ifficu lt fo r t rad i2
t iona l m ethod s to ob ta in sa t isfying so lu t ion s. In th is p ap er, on the ba sis of ana lysis of the ex ist ing genet ic a lgo rithm s, an im p roved cro ssover op era to r is p resen ted, and a genet ic a lgo rithm fo r so lving veh icle rou t 2 ing p rob lem s w ith and w ithou t t im e w indow s is p ropo sed w h ich is ba sed on a na tu ra l num ber cod ing schem e. T he p erfo rm ance of the p ropo sed a lgo rithm is eva lua ted in num erica l sim u la t ion s. T he resu lt s show s the efficiency of the p ropo sed a lgo rithm.
户 i 的货物需求量为 g i ( i= 1, 2, …, N ) , 且满足 g i <
q , 车辆必须在一定的时间范围即时间窗 [ a i , bi ] 中到
达顾客 i 处并进行服务, 且每个顾客只能由一辆车 服务。 现在需要为每辆车确定行驶路径, 使得各个约 束能得到满足, 而且总的运输成本最小。 当没有时间 窗限制时, 就得到一般的 V R P 问题。 这里须预先对所需要的车辆数进行估计。 本文 采用文献 [ 2 ] 中的方法按下面的式子确定车辆数
收稿日期: 2005210212 修订日期: 2006203220 基金项目: 国家自然科学基金资助项目 (70301005) ; 教育部南开 2天津大学刘徽应用数学中心资助项目 作者简介: 林 丹 (19682) , 男, 副教授, 博士后。 研究方向为进 化算法。
(V eh icle Rou t ing P rob lem w ith T im e W indow , V R PTW ) 。 根据时间窗约束是否严格, V R PTW 还
2. 2 约束处理与适应值函数 V R P 及 V R PTW 有复杂的约束条件, 用遗传
算法求解时, 可采用罚函数方法来处理约束[ 2 ] , 以保 证种群中染色体的多样性, 使得遗传算法的搜索能 够有效进行, 具体作法如下: 对一般的 V R P, 使用如下变换将容量约束式 ( 2) 变为目标函数的一部分:
Ke y w o rds : veh icle rou t ing p rob lem ; genet ic a lgo rithm ; t i m e w indow ; p a rt ia lly m a tched cro ssover
车 辆 路 径 问 题 (V eh icle Rou t ing P rob lem , [ 1, 2 ] 产生于现实的公路交通运输系统规划, 是 VRP) 一类具有重大应用价值的组合优化问题。经典 V R P 可描述为: 给定一定数目的顾客, 每个顾客各自有不 同的货物需求量。 现由一个中心仓库派出一个车队 为所有顾客提供所需货物, 要求合理安排车队中每 车辆的行驶路线, 使之在保证满足一定约束和顾客 需求的前提下, 达到诸如路径最短、 耗时最少等优化 目标。 如果每个顾客进一步提出其要求的服务时间 约束, 通常是允许的最早服务时间和最晚服务时间 之间的时间窗, 就得到带有时间窗的车辆路径问题
[1 ]
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.
第 6 期
林 丹, 等: 求解车辆路径问题的一种遗传算法
m
529
交叉算子是遗传算法最重要的遗传操作, 它的 设计是建立在所针对问题的编码形式上的。 交叉算 子的有效性直接影响到遗传算法的效率。 因此, 针对 具体问题和编码形式设计有效的交叉算子是用遗传 算法有效求解问题的重要步骤。 本文采用遗传算法来求解 V R P 和 V R PTW 问 题, 在基于自然数编码的基础上, 对现有的遗传算子 进行改进, 提出了改进的最大保留交叉算子等新技 术。 用所得到的算法求解文献中的典型例子并与文 献中的结果进行比较, 计算结果表明该算法是有效 的。
N N m ij ijk
顺序交叉算子[ 10 ] 交叉两个父代交叉段外的元素; ( 2) 对第 1 步操作后产生的两个子代进行基因 位调整: 把交叉段间的元素移到染色体的首位, 其余 非零元素按照原来的先后顺序排列到其后, 最后排 列剩余的零元素; (3) 对第 2 步操作后的两个子代进行插零工 作: 把子代尾部的各个零元素都插入到交叉段后的 各个非零元素当中, 且使各个零都不相邻, 并保证染 色体末位保留一个 0。 经过以上 3 步操作, 就产生了两个具有父代个 体染色体若干组成结构的子代个体, 从而增加了保 持优良基因段的可能性。 例如对两个父代个体: o ld1= ( 0 1 8 6 0 5 0 2 3 0 9 7 4 0) o ld2= ( 0 9 0 1 5 4 6 0 7 3 0 8 2 0) 并假定选择的两个交叉点分别为 o ld1∶1 和 5, o ld2 ∶3 和 8, 记作 [ 1, 5 ] 和 [ 3, 8 ]。 则经过第 1 步变换后, 产生的两个子代为: new 1= ( 0 1 8 6 0 0 9 5 4 7 3 0 2 0) new 2= ( 8 0 0 1 5 4 6 0 2 3 0 9 7 0) 经过第 2 步位置变换后的两个后代为: new 1= ( 0 1 8 6 0 9 5 4 7 3 2 0 0 0) new 2= ( 0 1 5 4 6 0 8 2 3 9 7 0 0 0) 第 3 步若选择的插入点分别为第一个子代 new 1 的 7, 8 位, 第 2 个子代 new 2 的 9, 10 位, 即把零元素分 别插入到各插入位的元素后, 产生子代如下: new 1= ( 0 1 8 6 0 9 5 0 4 0 7 3 2 0) new 2= ( 0 1 5 4 6 0 8 2 3 0 9 0 7 0) 本文中的变异算子采用文献 [ 2 ] 中的 22交换变 异, 即随机选择一个染色体的两个非零元素, 交换这 两个元素的位置生成新的染色体。 2. 4 算法步骤 综上可以得到求解 V R P 和 V R PTW 的遗传算 法的步骤如下: ( 1) 设置遗传算法的参数, 如交叉率 P c , 变异率
( 10)
式中: c ij 为从客户 i 到客户 j 的运输成本, 可以是距 离、 费用、 时间等;
s i 为车辆到达客户 i 的时刻; t i 为车辆在客户 i 的等待时间; t ij 为车辆由客户 i 行驶到客户 j 的时间; i , j =
1 VRP 和 VRPT W 的模型描述
V R PTW 可描述为: 有一中心仓库, 拥有容量为
∑y
k= 1 N
0k
= m = y jk = y ik
( 4) ( 5) ( 6) ( 7) ( 8) ( 9)
s i , 0}
∑x
i= 0 N
ijk
∑x
j= 0
ijk
s0 = 0 s i + t i + t ij = s j , i ≠ j a j ≤ s j ≤ bj t i = m ax{a i -
可 分 为 软 V R PTW 和 硬 V R PTW 问 题, 其 中, 硬
V R PTW 的时间窗束较严格, 车辆对每个顾客的服
务 时 间 不 允 许 落 在 该 顾 客 的 时 间 窗 外, 而 软
V R PTW 的时间窗约束较松, 允许时间窗外的服务。
由于 V R P 和 V R PTW 是典型的 N P 2ha rd 问 题 , 采用传统优化方法求解效果往往不佳。 因此, 近三十年来涌现出的一些智能算法, 如模拟退火算 法、 遗传算法、 神经网络等, 已被应用来求解 V R P 问题, 并取得较好的效果[ 1, 2 ]。 遗传算法[ 3, 4 ] 是由美国 M ich igan 大学的 Ho l2 land 教授及其学生发展建立的, 其思想源于达尔文 的生物进化论, 是一种群体随机搜索方法, 具有较强 的鲁棒性。 目前遗传算法在 V R P 和 V R PTW 中已 有许多应用[ 1, 2, 5213 ]。
第 15 卷 第 6 期 2006 年 12 月
系 统 工 程 理 论 方 法 应 用
SYST EM S EN G I N EER I N G- TH EO R Y M ETHODOLO GY A PPL ICA T I ON S
Vol . 15 N o. 6 D ec. 2006
文章编号: 100522542 ( 2006) 0620528206
A Genetic A lgor ithm for the Veh icle Routing Problem s
L IN D an , CH OU Y ing 2z he, W A N G P ing
( Schoo l of Sciences, T ian jin U n iv. , T ian jin 300072, Ch ina )
求解车辆路径问题的一种遗传算法
林 丹, 丑英哲, 王 萍
( 天津大学 理学院, 天津 300072)
【摘要】车辆路径问题 (V R P ) 是一个典型的 N P 2ha rd 问题, 采用传统方法求解往往找不到满意解。在分 析现有求解该问题的遗传算法的基础上, 对现有的交叉算子进行了改进, 并设计了基于自然数编码的遗传算 法, 用来求解一般的和有时间窗限制的车辆路径问题。 采用文献中的实例进行了数值试验, 试验结果表明该 算法是有效的。 关键词: 车辆路径问题; 遗传算法; 时间窗; 部分匹配交叉 中图分类号: T P 18 文献标识码: A
x ijk = y ik =
2 遗传算法设计
2. 1 编码方式
本文采用基于自然数的编码方式[ 2 ]。 由于车辆 数 m 事先估计, 故进化群体中一个染色体可表示 为: ( 0, i11 , i12 , …, i1s , 0, i21 , …, i2 t , 0, …, 0, im 1 , …, imw , 0) 其中, 自然数 ik j 表示第 ik j 个客户, 染色体的总长度 为 N + m + 1。 0 代表仓库, 数目一共为 (m + 1) 个, 这
∑g y
i i= 1 m
ik
≤q
∑y
k= 1
ik
= 1
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.
530
系 统 工 程 理 论 方 法 应 用
第 15 卷
路径 3 仓库→客户 6→客户 7→客户 8→客户 9→仓库
路径。 以染色体 ( 0 1 2 3 0 4 5 0 6 7 8 9 0) 为例, 它表 示由 3 辆车完成 9 个顾客的运输任务的路径安排, 3 个路径分别为: 路径 1 仓库→客户 1→客户 2→客户 3→仓库 路径 2 仓库→客户 4→客户 5→仓库
s. t.
N
1, 2, …, N ; k = 1, 2, …, m 。 该模型中, 式 ( 1) 为目标函数, 即最小运输成本;
式 ( 2) 定义了车辆容量约束; 式 ( 3 ) 保证每个能被一 辆车服务; 式 ( 4) 表示由仓库发出 m 辆车; 式 ( 5 ) 和 式 ( 6) 表示 0- 1 变量间的关系; 式 ( 7) 表示车辆在仓 库出发的时刻为 0; 式 ( 8) 表示车辆从客户 i 直接驶 向客户 j 的时间关系; 式 ( 9) 定义了客户服务的时间 窗约束; 式 ( 10) 定义了车辆在客户的等待时间。 当式 ( 9 ) 必须满足, 即服务时间必须在时间窗 中, 超出该时间范围的解为不可行解时, 该问题即为 硬时间窗问题。 而软时间窗问题可以不满足式 ( 9) , 即可提前到达或延迟到达, 但是此gi
+ 1
其中, [ ] 为 Gau ss 整数函数, 表示不大于括号内数 字的最大整数, 0< Α < 1 是对装 ( 卸) 车的复杂性程 度 及约束多少的一个估计参数。 一般情况下, 装 ( 卸) 车越复杂, 约束越多, Α 取值越小, 即一辆车实 际所能容纳的货物量越少。 实践中可通过人机对话 来调整 Α的大小。 下面具体给出 V R PTW 的数学模型。设仓库的 编号为 0, 各客户的编号为 1, 2, …, N , 首先定义模 型中的各变量如下:
(m + 1 ) 个 0 把整个染色体分为 m 段, 即代表 m 个
1 车辆 k 从客户 i 行驶到客户 j 0 否则 1 客户 i 的由车辆 k 服务 0 否则
N N m ij ij k
V SPTW 数学模型如下:
m in Z =
N
∑∑∑c x
i= 0 j = 0 k = 1
( 1) ( 2) ( 3)
【A bs tra c t 】T he veh icle rou t ing p rob lem is a cla ssica l N P 2ha rd p rob lem , and it is u sua lly d ifficu lt fo r t rad i2
t iona l m ethod s to ob ta in sa t isfying so lu t ion s. In th is p ap er, on the ba sis of ana lysis of the ex ist ing genet ic a lgo rithm s, an im p roved cro ssover op era to r is p resen ted, and a genet ic a lgo rithm fo r so lving veh icle rou t 2 ing p rob lem s w ith and w ithou t t im e w indow s is p ropo sed w h ich is ba sed on a na tu ra l num ber cod ing schem e. T he p erfo rm ance of the p ropo sed a lgo rithm is eva lua ted in num erica l sim u la t ion s. T he resu lt s show s the efficiency of the p ropo sed a lgo rithm.