A Genetic Algorithm for the Vehicle Routing Problem
Vickie Dawn Wester
University of Tennessee, Knoxville
看的是这篇文章,整理一下笔记
首先是关于GA算法和VRP问题的介绍,解释
这些已经非常熟悉了,直接跳过吧。
接下来是关于VRP问题的数学模型
CHAPTER 1
The Vehicle Routing Problem
The vehicle routing problem addressed in this thesis is one consisting of a single depot, n customers, and m vehicles. For each customer, the vehicle must pick up a certain amount of weight, Wj, where j is the customer number. For problems with time considerations there is a
constant stop time, s, at each customer. The objective (1) is to minimize the total distance traveled by all vehicles where dij is the distance from customer i to customer j. The binary variable ymij will equal 1 if vehicle m goes from customer i to customer j and O otherwise. A formulation for the VRP is given below:
约束(2)确保只有一辆车访问,然后离开每个顾客。约束(3)是每辆车被迫离开仓库。约束(4)确保车辆不访问特定顾客不止一次。约束(5)确保车辆返回仓库[noon, et al . 1991]。每个的流量守恒
车辆行程由约束(6)强制执行。子行程由约束(7),容量约束(8)保证车辆的载重量不超过重量限制w。约束(9)保证每辆车在路线上的总时间可以不超过时间限制,其中一条路线上的时间由
路线上的距离加上路线上所有停车时间的总和。
“车辆路线问题是一个很难的组合问题到目前为止,只有相对较小的VRP实例可以解决最优性”。[Gendreau, et al . 1991]有四组求解VRP的启发式方法可分为几种。他们是建设性的、两阶段的、不完全的优化和改进算法。
第一种是建设性算法根据某些标准选择一个未路由的城市添加到行程中[Gendreau, et al . 1991]。这些方法中最常见的一种是克拉克和赖特的方法是在一个城市之间有n条来回路线并根据节省标准合并仓库。主要的这种方法的缺点是需要大量的时间来找到一个附近最优的解决方案。然而,数据结构可以用来减少运行算法的时间量[Gendreau, et al . 1991]。
第二种是两阶段算法,有四种类型。第一个是集群第一-路线第二的方法,其中每辆车是第一指定它必须访问的客户。然后使用TSP对每条路线进行排序。TSP是一个组合优化一辆车离开仓库,必须访问每个仓库的问题客户准确一次并返回仓库。目标是排序以这样一种方式,顾客所走的距离是最小的。第二种方法是路由第一-集群第二的方法,其中TSP首先用于对客户进行排序。然后这条路线就被打断了每辆车的可行路段。第三种方法是基于广义赋值的整数线性规划方法问题和TSP。这种方法是由Fisher和Jaikumar(1981).最后,两阶段算法的第四种方法是Noon, Mittenthal和Pillai使用的拉格朗日松弛法(1991) [Gendreau, et al . 1991]。该方法依赖于求解一个Traveling带有一个附加约束的推销员子集游问题的TSSP是TSP的变体,其中的约束要求每个客户被拜访的人都很放松。我们的想法是有一个调度员来分配它们,安排一个初始客户访问,然后为每个客户分配奖励值其他客户。预先分配这些客户的目标是使任意两个之间的最小距离最大化。每辆车然后驱动程序决定访问哪些客户和相应的访问顺序。调度程序的目标是分配奖励这样每个客户只会有一辆车来拜访。主要的这种方法与Fisher和Jaikumar的方法的区别在于Fisher方法中的调度员决定每个司机访问哪些客户,司机只负责安排路线。在拉格朗日松弛法,驾驶员有额外的决定拜访哪些客户的责任[Noon等,1991]。
第三种启发式方法是不完全优化。这方法采用枚举算法,通过方法找到一个好的解不完全搜索树[Gendreau, et al . 1991]。
第四种启发式方法是改进方法,这是禁忌搜索的范畴。其中禁忌搜索存在的方法是由Pureza和Franca(1991)开发的,城市在两条路线之间交换,一条是由Semet和开发的,泰拉德(1991),其中一个城市从一条路线移动到另一条路线[Gendreau等,1991]。Gendreau开发的算法,赫兹,Laporte从另一个行程中插入一个节点广义插入程序(GENI)。巡回改进程序它也是由Gendreau, Hertz和Laporte开发的改进每条路线。一旦顾客被带出特定的车辆,在经过一定次数的迭代后,它不能被放回那个循环中。该方法与其他禁忌搜索方法的区别在于它允许不可行的解决方案,而其他的不允许。一个优势使用这种被称为TABROUTE的方法的风险在于收敛到局部最优可以通过两种方式简化。第一种是允许不可行通过使用惩罚函数求解。第二是通过使用将客户插入到不同的路由中[Gendreau, et al . 1991]。另一种已成功应用的改进方法是由坎特伯雷大学的Ibrahim Osman开发[1993]用模拟退火和求解车辆路径问题禁忌搜索。该方法首先使用启发式跟随法找到路由。通过一种改进的方法,其中一条路线的一部分被交换还有第二条路线的一部分。使用插入/删除过程重新计算目标值,与的2-opt弧交换启发式Lin [Osman 1993]用于纠正任何交叉的路径。有
用于选择备选方案的两种选择策略:最佳改进和第一次改进。禁忌搜索包括禁止策略,自由策略,短期策略,还有停止准则。禁止性策略保存了一个动作列表是被禁止的。释放策略从禁忌列表中删除移动经过一定次数的迭代后。短期策略使用愿望标准的排除禁忌列表包括两种可能选择策略:最佳录取(BA)和第一最佳录取(FBA)。BA选择结果改善最大的一步棋至少nonimprovement。FBA选择产生的第一步客观价值的改善(如果存在的话);否则,选择最佳的非改进步法。禁忌列表的大小按计算人口规模、车辆数量和容量比的函数对车辆容量的要求。停止准则是基于最佳解决方案不存在的最大迭代次数找到最佳解决方案后进行改进。禁忌的一个潜在缺点搜索就是最终解的质量取决于初始解。因此,该方法有时会找到一个不接近的局部最优全局最优。这也是Gendreau在他的允许不可行的解的方法。Osman的方法是模拟退火(SA)来克服这个问题。SA接受非改进移动基于一定的概率,这是由一个控制决定的参数,根据一个时间表递减[Osman 1993]。
The Genetic Aleorithm
遗传算法是由约翰·霍兰德在1975年发明的,利用遗传学和“适者生存”的思想来生产,比如旅行推销员问题的最优解,机器调度问题,车辆路线问题,以及许多其他问题。这个算法背后的基本概念是,好的解决方案将继续存在,在种群不断繁殖形成更好的解决方案的同时,最不受欢迎的解决方案最终会消失。最初,一个解的总体是随机生成的,并且每个解都在种群被称为染色体。例如,考虑一个解决方案,哪些被编码为客户号码序列:
(5 1 4 3 6 2)
这条染色体代表一个解决方案,其中客户的序列,访问次数是5 1 4 3 6 2。染色体的每一个位置被称为一个基因,每个基因的价值被称为等位基因。例如,5是等位基因,第一个基因[Nygard, 1992]。每一代都有一些可以用来产生新的解决方案的方法。尽管所有的遗传算法都使用某种形式的繁殖,交叉,而突变,有很多不同的方式来实现这些操作。下一节将介绍一些替代方法。
首先,有许多不同的方法来选择染色体被添加到交配池中。挑战在于选择好的父母以这样的方式繁殖足够的后代来生存。但还不至于导致种群过早聚集[德琼1985]。研究人员对最佳方案仍存在分歧,选择亲本的方法。这里列出了四种最常见的方法在下面。
1.染色体的随机选择。
2. 轮盘赌抽样中选择的概率,特定的染色体随着它的适合度而增加。
3.基于秩的抽样,它使用轮盘赌来选择两个染色体,其中最适合的染色体被加入交配池。
4. 按顺序选择解决方案的锦标赛抽样,适合度较高的一方加入到交配中[Nygard 1992]。
接下来,有几种不同的方法来跨越这两者父染色体。有一种单点交叉,即随机选择染色体上的一个点,两条染色体交换这一点之后的基因。使用一点的缺点交叉是指如果好的遗传物质在染色体的两端染色体上,这两个优良性状在交叉时会分离。两点交叉解决了一点交叉问题使染色体两端的两个基因留在染色体上交叉后的染色体是一样的。这是自2以来完成的染色体上的点是随机选择的,染色体之间的基因是随机选择的这两点在两条染色体之间交换。然而,例如,如果所有的优点都是
在一条染色体上[Davis 1991]。最佳交叉方法似乎是一个均匀的交叉,其中一个随机数(在1每个基因产生100)。如果这个数小于某个用户自定义数(在GA开始时定义为基因选择参数),孩子将从第一个得到这个基因的父母。如果数目大于基因选择参数,则孩子从父母二人那里得到基因。不像一分和两点交叉,这种交叉方法具有组合的能力好的性状,不管它们在染色体上的位置戴维斯[1991]。
此外,在产生突变的方法上也存在差异。一种方法是简单地以一定的速率(即1比1)使单个基因发生突变,每1000个基因)。然而,由于突变是主要的手段,在人群中产生变异,使单个基因突变似乎不太可能要非常有效率。另一种更有效方法是改变整个染色体在人群中所占的比例很低[Davis,1991]。这种变异的方法被称为移民[Bean]1992]。这似乎为人口提供了更多的多样性。遗传算法和这个问题有两个非常重要的环节待解决的问题是评价新解的方法和方法用于对解进行编码[Davis 1991]。这两个方面至关重要因为它们必须适合要解决的问题。另一个遗传算法的参数取值、选择方法、交叉等方面方法和变异方法并不代表要解决的问题对于很多不同的问题都是一样的。简单的遗传算法看似强大却缺乏对待解决问题的认识[Goldberg and Richardson 1987]。
The Genetic Ali:orithm Related to the Vehicle Routini: Problem
密歇根大学的James Bean [Bean 1992]使用了一种遗传算法来解决机器调度问题。这是他的GA
本文对该算法进行了改进,以解决车辆路径问题。Bean在调度和资源分配上成功地使用了这个程序,他在二次分配问题上取得了一定的成功。
然而,他对几个旅行推销员问题的测试并不成功。他报告说,要接近最佳的8%是很困难的
解决方案;然而,结果似乎并没有随着问题规模的增加而恶化。在解决这个问题时,他说,“我们推测这些困难是由基因对(城市或代理人)之间相互关系的复杂性造成的。”[Bean 1992]现在要解决的问题是这种遗传算法是如何与前面描述的车辆路线问题联系起来的。遗传算法必须考虑的方面是:遗传算法使用的数据集的输入格式、编码解的方法、评估解的方法和复制的方法。
Data Format
遗传算法代码首先读取VRP问题数据
以下格式。任何问题数据集的第一行都包含以下信息:
数据集的最后一行包含仓库的x和y坐标。
图1.1是32个客户,3个车辆周期VRP的示例数据集。第一行表示有32个客户加上1个仓库,每辆车的重量限制为3 8000个单位,有3辆车,每次停车的时间为20个单位,每辆车的时间限制为1000个单位。第2行到第33行由每个客户的x和y坐标、每个客户要接收的重量以及客户编号组成。最后一行表示仓库的x和y坐标 。
Encoding of Solutions
该算法使用Bean [Bean 1992]开发的一种称为随机密钥的解决方案编码方法。随机密钥是一种技术,旨在解决在复制过程中产生不可行的解决方案的问题,因为有些客户被访问了不止一次,而有些客户根本没有被访问[Bean 1992]。为了说明复制过程中的不可行性问题,考虑一个只有一辆车和六个顾客的问题。当使用客户编号对解决方案进行编码时,复制可能导致不可行的后代,如下面的示例所示。考虑两个父类,它们的解决方案被编码为客户编号序列。
parent 1: (5 1 4 3 6 2)
parent 2: (4 5 1 3 6 2)
在父节点1中,客户访问的顺序为5,1,4,3,6,2。在父节点2中,车辆访问顺序为4,5,1,3,6,2的客户。当这两者进行繁殖时,一个孩子的产生是通过从父母双方以一定的预先定义的概率选择一个基因。对于每个基因,生成一个随机数。如果随机数大于分配给亲本1的概率,则该基因取自亲本2;否则,该基因取自亲本1号。例如,如果从亲本1中选择一个基因的概率为0.70,从亲本2中选择一个基因的概率为0.30,则可能发生以下情况
random number : .86 .55 .40 .12 .73 .23
parent number : 2 1 1 1 2 1
child : 4 1 4 3 6 2
所产生的子节点是不可行的,因为客户4号在巡回期间被访问了两次,而客户5号在一次访问中没有被访问。随机密钥的设计就是为了防止这种不可复制的情况。随机密钥背后的思想是为解决方案中的每个客户生成一个介于0到1之间的随机数。访问客户的顺序通过对随机数按升序排序来表示。例如,在前面的问题中,父节点1可能表示如下
(.31 .95 .76 .51 .15 .85)
其中客户5是第一个访问的,客户1是第二个访问的,以此类推。父母双方的陈述如下
parent 1 : ( .31 .95 .76 .51 .15 .85)
parent 2: ( .33 .83 .49 .08 .25 .71 )
这两个亲本繁殖如下:
新的子解决方案现在是可行的,客户访问的顺序由随机数的顺序表示[Bean 1992] .在一个解决方案中表示多辆车的问题也可以使用随机密钥来解决。一个随机整数,介于1和车辆的数量,是添加到每个随机数。整数表示访问该客户的车辆。例如,如果有两辆车可用,解决方案可能表示为:
( .31 .95 .76 .51 .15 .85)
其中客户5是第一个访问的,客户1是第二个访问的,以此类推。然后,双方父母的代表如下:
新的子解决方案现在是可行的,访问客户的顺序由随机数的顺序表示[Bean 1992]。在一个解决方案中表示多个车辆的问题也可以使用随机密钥来解决。一个随机整数,介于1和车辆的数量,是添加到每个随机数。整数表示访问该客户的车辆。例如,如果有两辆车可用,解决方案可能表示为:
(2.31 2.95 1.76 1.51 1.15 2.85)
其中车辆1访问客户5,然后是客户4,然后是客户3,车辆2访问客户1、6和2。
根据Bean的说法,“我们已经成功地将这种方法推广到具有优先级、释放时间、序列相关设置和不规则度量(如加权的早迟到总和)的作业车间。“[Bean 1992]随机密钥似乎也是车辆路线问题编码解决方案的有效手段;因此,这是我们研究使用的方法。
Evaluating the Solutions
将遗传算法与待解决问题联系起来的一个重要特征是评估每个染色体(解)的适应度的方法。解决这个特殊问题的方法是首先计算旅行中所有车辆行驶的总欧氏距离。然后,计算每辆车在整个旅程中花费的时间和每辆车在整个旅程中拾取的重量。根据这些计算,可以确定每辆车超过时间限制和重量限制的程度,以及有多少辆车有不可行的行程。解的适应度然后由所走过的距离的函数与与重量和时间有关的不可行性的惩罚函数相结合来计算。
Reproduction
繁殖方法是遗传算法的另一个重要方面。Bean在他的算法中使用的方法在整个算法中保持种群中解的数量一致。一定比例的顶级解决方案被复制到下一代,这被称为精英繁殖或克隆繁殖。并使最佳解决方案得以保存[Davis 1991 J]。另一个百分比的新一代是由突变产生的。使用的突变方法是随机产生完全新的染色体,其方法与算法开始时初始化种群的方法相同。由于使用了精英策略,为了保持种群的多样性,必须使用相当高的突变率[Bean 1992]。新种群中剩余的溶液百分比是通过繁殖产生的。以等概率随机选择亲本染色体,然后采用均匀交叉法获得最佳结果。
EXAMPLE 1.1
为了说明本章中使用的遗传算法的一些重要方面,考虑一个例子VRP,它由5个客户和2辆车组成,最著名的解决方案是63。假设在算法开始时定义如下参数:
(1)群体中5个成员
(2)25代
(3)1个解复制到下一代
(4)每一代1个解突变
(5)基因选择参数为50。
算法开始时随机生成一个初始群体。对溶液离子进行评价和排序,使评价最好的溶液排在第一位,评价最差的溶液排在最后。设解排序后,初始总体如下:
下面的例子展示了如何从初始种群中产生下一代的五种解决方案。
将初始种群的最佳解进行复制,形成新种群的一个成员。(要复制的数字在算法开始时定义为1.)
这些新种群将按评价顺序排列如下:
同样的繁殖方法,即当前种群经过一个繁殖阶段形成一个新的种群,也适用于接下来的24代。(算法开始时定义的世代数为25。)早熟收敛是遗传算法必须解决的问题。收敛性是需要变异算子的原因。S假设在第10代之后,这个例子问题的人口如下:
这是种群过早趋同的一个例子。由于已知的最佳解是63,而算法找到的最佳解是90,很明显,算法还不应该收敛。注意,前两种溶液是相同的,第三种溶液只是在第五个基因上有所不同。最后两条染色体现在是这个群体中唯一的多样性。这个例子将在论文后面提到,以证明在某些条件下人口的动态。
CHAPTER 2
EXPERIMENTATION RESULTS
在前一章中描述了VRP和GA,并给出了一个例子来说明一些重要的方面。第2章的目的是描述一些在遗传算法上进行的实验。本章应介绍改变遗传算法的各种方法,以及这些改变可能对结果产生的影响。图2.1提供了在实验中被改变的方面的总结。
实验的目的是产生一个版本的遗传算法,该算法将为第1章讨论的格式的大多数车辆路线问题数据集找到几乎最优的解决方案。实验中有两个最常用的数据集。
第一个数据集是50个客户,6辆车,VRP每辆车的重量限制为160,每辆车的时间限制为200,停车时间为10。文献中最著名的解决方案的总成本(距离)为555.43 [Gendreau, et al . 1991]。对于同一数据集,只有5辆车且没有时间限制,已知的最佳解决方案是524.61 [Gendreau, et al . 1991]。
第二个数据集有32个客户和3辆车,每辆车的重量限制为38000,每辆车的时间限制为1000,停车时间为20。对于这个数据集,最著名的解决方案的总四舍五入成本为2086。在没有时间限制的情况下,最著名的解决方案是2009.31 [Noon, et al . 1991]。遗传算法中有几个过程被认为对算法的性能有一定的影响;即计算染色体的适应度、解的不可行性、抽样、复制、算子适应度、解的格式(重复、反向路径)和基因选择参数值(从1号染色体中选择一个基因的概率)。
首先,程序使用Bean的算法运行,除了在车辆路线问题而不是机器调度问题上运行算法所必需的一些更改。这些变化主要涉及数据集的输入和解决方案的评估。此外,Bean还建议将一些参数值改变了。参数值如下:
N umber of generati ons - 2000
N umber of members i n the popul ati on - 100
N umber of chromosomes repeated i n the next generati on - 20
N umber of mutati ons each generati on - 2
Gene sel ecti on parameter val ue- 70
在整个实验过程中,采样和繁殖方法保持不变。 染色体的适应度值是通过确定巡回赛总距离来计算的,不会因为评价不可行而受到任何惩罚。 在最初的实验阶段,给出了四舍五入的解决方案,但确切的解决方案是在第三章结果部分的程序最终版本中提供的。 遗传算法版本为50个客户提供了一个成本为555的解决方案,6辆车问题,这是一个很好的解决方案,但是在3辆超过时限且一辆超过重量限制的情况下,这是不可行的。 32 个客户 3 辆车的解决方案是 2014 年,但同样不可行,1 辆车超过了时限,2 辆超过了重量限制。 -由于该算法除了不可行之外似乎取得了不错的结果,因此所承担的第一项任务是开发一种惩罚不可行性的方法,使可行的解决方案能够进入基因库的顶部。
Penalization for Infeasibility
对不可行性的惩罚
测试的第一种方法是通过为不可行的解决方案分配巨额成本来惩罚这些解决方案。但是,这种方法并不有效,因为所有解决方案在算法开始时都是不可行的,并且具有相同的适用性。 -下一种方法是根据解决方案的类型和不可行程度,在巡回赛总行程中增加罚款。 -重量惩罚的计算方法是将每辆车超过重量限制的数量相加,然后将该值提高到一定的乘方。计时费的计算方法相同。 -最初,使用的是二的乘方,这为50的客户问题得出了617的解决方案,但是如果超过时限一辆车等于一个单位,则仍然有点不可行。 -32 个客户问题的解决方案是 2317 并且是可行的。使用三的乘方,50 客户问题的解决方案是 654 且可行,而 32 个客户问题的解决方案是 2267 且可行。 -最后,使用四的乘方,为 50 客户问题生成了 639 的解决方案,为 32 的客户问题生成了 2344 的解决方案,这两种解决方案都是可行的。 -下一种惩罚方法与先前使用2的乘方的方法相同,唯一的不同是罚款乘以相对于重量而言不可行的车辆数量加上相对于时间而言不可行的车辆数量。 -该方法改进了两个数据集的解,其中 50 个客户,6 个车辆问题的解为 601,32 个客户 3 的解为 2298。
Sampling Procedures
抽样程序
测试的第一个采样程序是轮盘采样法,这是一种根据染色体的适应度值选择要繁殖的染色体的方法。
轮盘采样方法涉及多个步骤,包括在总体中找到最大的解值、计算每个解的适应度值、根据每个解的适应度值为每个解分配一系列数字、生成随机数以及选择其范围包含该随机数的解。 -发现轮盘抽样程序的性能不如抽样程序的性能,在抽样程序中,所有解决方案的权重都相等。 -使用轮盘抽样方法获得的 50 个客户问题的最佳解决方案是 807,但这是不可行的。 -还使用了另一种称为锦标赛抽样的采样方法,其中选择了八种溶液相互繁殖,从而产生了四种解决方案,这些溶液再现为二个解。然后,这两种解决方案再现为一种解决方案,该解决方案被添加到人群中。 -锦标赛抽样方法得出了一个相对较好的解决方案,值为602,这是可行的。但是,使用这种采样程序运行算法花费了大量时间,因此不切实际。 -总体而言,对采样程序所做的更改并未显著提高在时间和权重限制下求解 VRP 的遗传算法的性能。
Reproduction
繁殖
测试了两种不同的繁殖方法,以确定它们对遗传算法性能的影响。 -测试的两种方法是单交叉和双交叉繁殖,前面在研究论文的第1章中对此进行了描述。 -尽管这些方法有缺点,但进行了实验,以使用这些方法观察结果的变化。 -实验结果表明,双交叉法产生的结果明显好于单交叉法。 -但是,值得注意的是,双交叉方法产生的解决方案仍然比以前用于解决32和50客户问题的统一交叉方法差得多。 -研究人员可能得出结论,尽管双交叉法显示出希望,但它并不是在时间和权重限制下求解VRP的最有效方法。 -对遗传算法和繁殖方法的不同变体进行进一步的实验可能会得出更好的结果。
Parameters
参数
两个重要参数,nrep 和 nmut,它们对遗传算法的结果有重大影响。 -参数 nrep 控制从一代复制到下一代的染色体数量。这意味着上一代的最佳解决方案将延续到下一代。 -参数 nmut 控制每代中发生突变的解的数量。突变是一个对解决方案进行小改以创建新解决方案的过程。 -nrep 的一个关键考虑因素是,它必须足够高才能保持最佳解决方案,但又不能过高以至于导致人们过早趋同。这意味着,如果将太多的解决方案从一代复制到下一代,人们可能会过快地趋于一致,无法探索其他潜在的解决方案。 -例如,如果要复制的解决方案数量从 1 增加到 2,则在第 10 代之后,总体可能呈现以下外观。在这种情况下,突变的增加提供了如此大的多样性,以至于更好的解决方案被突变产生的较差的解决方案所淹没。 -因此,重要的是要在 nrep 和 nmut 之间找到适当的平衡,以确保遗传算法探索各种潜在解决方案并趋于最佳解。
如果把nrep设得太高,种群可能会过早地收敛得比不这样做更快。但是,如果要复制的数量减少到0,则可能丢失最佳解决方案。突变算子nmut必须高到足以引起变异,但又不能高到导致种群向差解收敛。考虑例1.1,假设每一代的突变数从1增加到2。在10代之后,种群可能呈现如下的样子:
在这种情况下,增加的突变提供了如此的多样性,以至于更好的解决方案被突变产生的较差的解决方案所淹没。
Davis认为种群的收敛速度和个体对局部最优的接近程度与这两个参数值有关[Davis 1991]。为了防止种群的过早收敛,进行了实验,以确定哪种参数值的混合可以为两个数据集提供最佳结果。
用于这些实验的遗传算法版本包括所有解被选择的概率相等的抽样程序,并采用均匀交叉作为再现方法。对这些实验的不可行性的处罚方法考虑了超过时间和重量限制的数量以及不满足约束的车辆数量。在一系列值上测试运算符后,发现当nrep设置为20,nmut作为生成计数的函数而改变时,结果最好。操作符nmut最初设置为2,在第500代计数时更改为5,在第1000代计数时更改为8。对于32个客户问题的最佳解决方案是2321,对于50个客户问题的最佳解决方案是587,但是由于一辆车超过了时间限制一个单位的时间,因此是不可行的。测试的另一种方法是根据代数更改nmut参数值,而对最佳解决方案没有任何改进。对于这个版本,每次没有改进的代数超过100时,nmut参数就增加10。然而,这个版本的结果与以前的结果相比并没有什么改进。
Infeasibility
不可能实现
不可行性是指解决方案违反问题的一个或多个限制条件的情况。 -本文讨论了在遗传算法中处理不可行性的几种方法,该算法旨在解决受时间和重量限制的车辆路径问题。 -其中一种方法涉及当不可行的解决方案的数量低于某个预定义的数字时,用最佳解决方案替换所有不可行的解决方案。 -这种方法的结果令人满意,但不是很令人鼓舞,因为与以前的方法相比,没有持续的改进。 -使用此标准进行替换的主要原因是避免某些与其他标准相关的问题。 -例如,如果由于代数而取代了不可行的解决方案,则在该特定世代中,所有解决方案可能仍然不可行,从而导致人口中的所有解决方案都被最佳解决方案所取代。 -另一项实验涉及将最佳解决方案复制 100 次,并在前 2000 代之后用这些副本替换当前种群。 -这次尝试的结果与先前的结果相比没有显著变化,但是人们发现,在大多数人都趋同于该解决方案之前,越来越多的解决方案变得与最佳解决方案相同。 -这一发现促成了下一个实验,该实验从总体中删除了重复的解,以便与当前的最佳解相比有更多的差异和潜在的改进。
Duplicate Solutions
复制解决方案
重复解决方案是指在一组解决方案中彼此相同或非常相似的解决方案。 -从总体中删除重复的解很重要,因为它可以导致更多样化的解,并防止算法陷入局部最优值。 -在第一个实验中,如果发现整条染色体是种群中已经存在的染色体的复制品,就会发生突变。染色体是一组代表问题解决方案的基因。突变整个染色体意味着改变溶液中的所有基因。 -但是,这种方法在解决方案中没有显示出任何重大改进。这意味着突变整个染色体并不能带来更好的解决方案。 -因此,开发了第二个版本,其中只有染色体上的两个基因被随机选择进行突变。这种方法不如突变整个染色体那么激烈,并且可能导致溶液发生更微妙的变化。 -但是,这种方法导致运行算法的时间显著增加。这是因为必须对产生的每种解决方案进行检查,以确保其在群体中不存在。这可能是一个耗时的过程,尤其是在人口规模庞大的情况下。 -由于这个时间因素,人口规模必须从100减少到50。这意味着该算法必须使用一组较小的解决方案,这可能会限制其找到更好解决方案的能力。 -与第一个版本相比,第二个版本的唯一优势是针对50个客户,6辆车的问题。在 4000 代之后,找到了一个值为 580 的可行解,这是迄今为止实验中发现的最好的可行解决方案。这意味着第二个版本能够为这个特定问题实例找到更好的解决方案。
Reverse Paths
反向路径
为防止出现反向路径而开发的算法版本。 -反向路径是指一种解决方案代表车辆进行旅游,而另一种解决方案代表同一行程,但访问客户的顺序与第一个解决方案相反。 -如果这两种解决方案相互繁殖,那么即使父母双方都代表了很好的解决方案,孩子可能不是一个有效的解决方案。 -开发此版本算法的目的是确保该算法生成的子解代表有效的解。 -但是,当运行该程序以检查反向路径时,结果没有任何改善,并且时间因素显著增加。 -因此,必须将人口规模减少到 50 以缩短运行算法的时间。 -这表明防止反向路径可能不是提高算法性能的有效方法。
Feasibility vs, Infeasibility
可行性vs,不可行性
讨论了遗传算法的另一个版本的开发,以解决早期版本中遇到的问题。 -早期版本的问题在于,有时会找到可行的解决方案,但被评估效果更好的不可行的解决方案所取代。 -新版本使用了与先前版本相同的惩罚函数,其中不可行性提高到2的次方,然后乘以在时间和重量方面不可行的车辆数量。 -新版本通过将惩罚函数与不允许可行解的值差于不可行解的值的程序来解决可行性问题。 -该过程从最差的可行解中减去了最佳不可行解,如果该值大于 0,则表明至少存在一种不可行的解决方案,其评估结果比某些可行解决方案更好。 -在这种情况下,所有不可行的解决方案都增加了价值,以迫使它们的评估比所有可行的解决方案都差。 -该算法的新版本产生了相对理想的结果,同时保持了两种解决方案对于正在测试的两个数据集的可行性。 -此版本针对50和32个客户问题生成的解决方案分别为597和2321。
Gene Selection Parameter
基因选择参数
基因选择参数是一个变量,用于确定在遗传算法中从亲本1中选择基因的可能性。 -分配给基因选择参数的值会影响算法的解质量。 -对基因选择参数的不同值进行了实验,以观察它们对算法结果的影响。 -50 个客户问题的最佳结果是在基因选择参数为 50 的情况下得出的,而 32 个客户问题的最佳结果是在基因选择参数为 40 的情况下得出的。 -实验基因选择参数的一种方法是让父母双方在不同的基因选择参数值下产生几个不同的后代,然后选择评估最佳的孩子添加到下一代。 -另一种方法是在基因选择参数中以30或20的增量生出多个孩子,但两次尝试均未显示出改善。 -第三种方法是在没有改良的世代数超过一定数量时改变基因选择参数。 -在此方法的第一个版本中,当没有改良的世代数超过100时,会为基因选择参数随机生成一个介于1到100之间的数字。 -在下一个版本中,每当没有改良的世代数超过100时,基因选择参数值都会更改10。 -但是,这两个版本都没有显示出算法结果的改进。
Summary
总结
总结了实验的各个方面,这些方面导致了从 Bean 获得的算法的改进。 -其中一个方面是惩罚不可行的解决方案,这意味着该算法旨在避免违反问题约束的解决方案。 -另一个方面是随着世代数的增加而改变突变的数量。这意味着该算法旨在随着其代际发展,增加突变的数量,以探索更广泛的解决方案。 -确保所有不可行的解决方案都比所有不可行的解决方案评估得更好是另一个方面。这意味着该算法旨在优先考虑可行的解决方案,而不是不可行的解决方案,即使不可行的解决方案具有更好的适应度值。 -还观察到基因选择参数是决定特定问题解决方案的重要因素。该参数决定了为下一代选择哪些基因(或变量)。但是,研究人员发现,在不同问题上使用相同的基因选择参数并不一致,这表明需要针对每个问题进行定制。
CHAPTER 3
ANALYSIS
研究论文中介绍遗传算法最终版本的章节。 -之所以选择此版本,是因为在用于测试的 VRP 问题上,它的整体性能优于任何其他版本。 -本章首先讨论了表示 GA 各个方面的替代方法,以及为什么某些方法在研究目的上似乎效果更好。 -讨论涵盖了几个问题,例如参数设置、初始种群、精英主义和交叉方法。 -本章还讨论了过早收敛的一些原因,即算法在达到最佳解之前停止改进。 -本章还给出了降低过早收敛概率的拟议方法。 -下一节介绍所选数据集获得的结果,并将其与文献结果进行比较。 -比较有助于评估遗传算法最终版本的有效性。 -本章的最后一部分讨论了未来的研究方向,提出了该算法有待进一步改进的潜在领域。
Parameter Settings
参数设置
讨论了车辆路由问题 (VRP) 遗传算法中参数设置的重要性。 -对算法结果有重大影响的参数是种群规模、交叉率、突变率和基因选择参数。 -基因选择参数是本研究中另一个感兴趣的参数。 -为同时存在时间和重量限制的 32 个客户、3 个车辆问题找到的最佳解决方案是将基因选择参数设置为 50,这比目前已知的最佳解决方案大得多。 -但是,当使用相同的算法,将基因选择参数降至40时,溶液改善到最著名溶液的约2%以内。 -Lawrence Davis开发了一种程序,用于评估特定问题的参数设置的有效性,并相应地更改参数以得出解决该问题的最佳结果。 -遗传算法是随机的,同一个遗传算法在相同问题上使用的相同参数设置通常会产生不同的结果。 -在许多问题中找到良好的参数设置可能需要花费大量的计算机时间。 -如果可以开发出一种方法来确定特定问题的最佳参数值,则遗传算法的性能应该会显著提高。 -还有人担心在遗传算法运行期间参数值是否应该发生变化以及应该由什么引发变化。 -事实证明,增加种群规模可以减少随机抽样对有限种群的随机效应,并以降低初始响应速度为代价改善长期表现。 -降低交叉率可以提高整体表现,这表明培养一代全新的个体采样率太高。
研究人员进行了实验,以观察参数值变化对用于解决有时间和重量限制的车辆路由问题(VRP)的遗传算法的影响。 -改变的参数之一是种群规模,这是指每一代遗传算法中的个体数量(解)。 -先前的实验使用了100的人口规模,但研究人员发现,将种群规模增加到200可以持续为所有测试的数据集提供更好的结果。 -相反,将人口规模减少到50的结果一直比人口规模100的结果差。 -无论是小问题还是大型问题,都观察到了这种趋势,这表明这是一个可以概括的发现。 -造成这种影响的原因可能是人口规模越大,可以探索更多的解决方案,从而增加了找到接近最佳解决方案的可能性。 -但是,可能会出现回报递减的情况,超过这一点后,进一步增加人口规模不会导致业绩的显著改善。 -总体而言,研究人员的发现表明,在使用遗传算法解决有时间和权重限制的VRP时,种群规模是需要考虑的重要参数。
另一方面,解决具有时间和权重限制的车辆路由问题 (VRP) 的遗传算法中的突变参数。 -该程序的最终版本使用了另一种方法,将突变与先前的方法一起纳入遗传算法。 -在较早的方法中,每代中会随机生成一定数量的全新解决方案。 -新方法的工作原理是每隔十代进行一次计数,以确定人口的融合程度。 -对于最佳溶液的每个基因,将该等位基因与种群中其他溶液上的相应等位基因进行比较。 -每当发现一个等位基因与最佳溶液上的等位基因相同时,计数器就会增加 1。 -如果此计数器超过某个数字(此程序使用了 70),则随机替换一定数量的基因(在本例中使用了 20)。 -自动复制到下一代的顶级解决方案被排除在随机替代方案之外。 -目标是保持人口的多样性,帮助防止过早趋同。 -据观察,对于32个客户问题,仅在30代之后,就有6个基因在至少70条染色体上重复出现,并且这个数字持续增加,直到稳定在28到32之间的范围内。 -除了这种突变方法外,还使用了另一种方法,该方法涉及随着世代数的增加而增加突变数量。 -这种增加突变数量的方法与突变聚合等位基因的方法结合使用似乎效果不佳。 -对于测试该组合的所有数据集,结果要么比程序在没有进行此更改的情况下运行时的结果差,要么在先前的结果可行的情况下不可行。
讨论了遗传算法中复制到下一代的最佳解决方案数量的影响。 -研究人员尝试增加和减少这个数字,看看它是否对结果产生了一致的影响。 -但是,他们发现对结果没有一致的影响,这意味着改变这个数字不会对遗传算法的性能产生重大影响。 -这种缺乏效果可能是因为遗传算法中的解往往趋于一致,这意味着它们可以自我维持,无需复制到下一代。 -尽管效果不一致,但研究人员发现,对于他们使用的特定数据集,将这个数字设置为20时,结果更加一致。 -因此,他们在研究中使用了这个数字进行实验。
Initial Population
初始种群
讨论了初始种群对遗传算法最终解的影响。 -Li epins等人对TSP交叉方法的研究发现,改变初始种群会使传统的跨界变异为13%至17%,贪婪的跨界变异约为8%。 -但是,随机生成的初始种群会产生令人满意的结果,因为在算法开始时总体是异质的。 -正如Li epins所观察到的那样,为种群提供局部最佳解决方案并不能带来太大的好处。 -布克的实验发现,当所有初始解都是随机生成时,结果会更好。 -在实验中使用的遗传算法中,初始种群总是随机生成的,以便将多样性引入种群。 -对于有时间和容量限制的较小问题和仅存在容量限制的较大问题,随机生成的初始人口不存在问题。 -但是,对于既有时间限制又有权重限制的更大问题,无法通过随机生成的初始种群找到可行的解决方案。 -解决这个问题的可能方法是在初始群体中加入一些可行的解决方案,同时仍然随机生成大多数解决方案。
Search Space
搜索空间
遗传算法中搜索空间的大小问题。 -搜索空间是指给定问题的可能解决方案组合的数量。 -文章举了一个例子,说明在安排流水车间发布时存在较大的搜索空间,其中可能的组合数量为2^L(其中L是染色体上的基因数量)。 -欣顿和诺兰模型试图用二进制解来解决问题,并声称通过将学习与进化相结合来改进解决方案。 -但是,通过将遗传算法与学习相结合,可以缩小搜索空间,但是要确定哪个标准有助于定义一个好的解决方案并不总是那么容易。 -车辆路径问题有很大的搜索空间,对于 n 个客户,m 车辆问题,可能的组合数为 m^n。 -这不包括每条路线中的大量测序可能性。 -尽管搜索空间很大,但遗传算法产生的结果与针对较小问题的最著名解决方案相对接近。 -但是,对于更大的问题,解决方案的质量和找到可行解决方案的可能性会降低。
Elitism
精英主义
精英主义是遗传算法中的一个概念,通过将人群中最好的个体复制到子孙后代来保护他们。 -这意味着体能分数最高的人更有可能被选中进行繁殖,他们的遗传物质会传给下一代。 -精英主义的替代方法是 “刷新” 运算符,它将最佳个体复制到当前人口以外的地点并将其保存在那里。 -这份副本偶尔可以带回民众手中,但它不是人口的永久成员。 -在这项研究中,研究人员决定使用精英主义而不是刷新运算符来始终保持人群中最好的成员。 -在 Traveling Salesman Problem 中,表示解决方案的常用方法是为每个基因分配一个客户编号,然后根据染色体上客户编号的顺序对游览进行排序。 -在交叉期间,随机选择一个交叉点,然后从亲本1复制到该点的所有等位基因,而其余的等位基因是从亲本2复制的。 -这种方法的一个问题是交叉需要更多时间,因为必须检查来自父代 2 的每个等位基因,看看它是否已经从父代 1 复制过来。 -此外,由于亲本2上的某些基因被跳过,因此生成的染色体可能无法代表父母双方的染色体。 -在处理车辆路线问题时,这些问题会进一步增加,车辆路线问题需要说明哪辆车访问了哪些客户。
Encoding of solutions
解的编码
研究中用于遗传算法(GA)的解的编码方法。 -所使用的方法被称为 “随机密钥” 方法,该方法已在本文的第1章中进行了讨论。 -这种方法被认为是表示车辆路由问题 (VRP) 解决方案的最有效方法,因为它允许执行交叉操作,而无需增加确保每位客户仅被拜访一次的任务。 -换句话说,随机密钥方法会自动满足每位客户只能访问一次的限制,这是 VRP 解决方案的要求。 -随机密钥方法的工作原理是为解决方案中的每个密钥分配一个随机值,其中每个密钥代表 VRP 问题中的客户。 -然后将这些随机值按升序排序,以排列要访问的客户。 -然后将此排列用作 GA 进行优化的解决方案。 -通过使用随机密钥方法,GA 可以专注于优化访问客户的顺序,而不是确保每位客户只被访问一次。 -这样可以更高效地执行交叉操作,从而为 VRP 问题提供更好的解决方案。 -总体而言,在GA中使用随机密钥方法对解决方案进行编码似乎在研究中取得了成功,因为它可以对VRP解决方案进行一致而有效的优化。
Crossover Methods
交叉方法
讨论了遗传算法中使用的两种交叉方法,即贪婪交叉和均匀交叉。 -DeJong的研究表明,产生更好溶液所需的交叉点数量随着染色体长度的增加而增加。 -人们发现均匀交叉比一点或两点交叉要好,尽管从理论上讲,后两种方法的性能应该比均匀交叉好。 -其原因是单点和两点交叉的架构存活率更高。 -均匀交叉不需要反转,这是颠倒染色体片段上基因顺序的过程。 -这是因为染色体上相距较远的等位基因在新染色体上保持在一起的机会与距离较近的等位基因相同。 -Greedy crossover 是未来研究的一个可能的探索领域,它使用贪婪算法的概念在系列的每一点做出最佳决策。 -使用 Greedy crossover 的好处在于,它允许在交叉操作中使用特定于问题的信息。 -当使用的贪婪算法强大时,贪婪遗传学的表现会更好,这意味着它只运行一次算法就能找到一个好的解决方案。 -当使用的贪婪算法较弱时,传统遗传学的表现会更好。
该算法用于解决有时间和权重限制的车辆路由问题(VRP)。 -实验中使用的唯一编码解决方案的方法是随机键表示法。这意味着每个解决方案都表示为一串随机数,其中每个数字代表问题的特定参数。 -实验中使用的精英主义方法是将排名前20的解决方案复制到下一代。精英主义是遗传算法中使用的一种技术,用于将最佳解从一代传给下一代,从而确保算法不会忘记良好的解。 -统一交叉比一点和两点交叉更受青睐。Crossover 是一种遗传运算符,它结合了两个亲本解来创建新的后代解。统一的交叉随机选择父母双方的基因来产生后代,从而产生更多的溶液组合,从而在种群中提供更多的多样性。 -任何实验都没有使用贪婪的跨界车。贪婪的交叉是一种交叉,它总是从每个亲本中选择最好的基因,从而减少种群的多样性,并有可能陷入局部最优状态。
Convergence
收敛
遗传算法容易过早收敛,这意味着它们可能会在达到最优解之前收敛为次优解。 -这是实验中反复出现的问题,本节旨在讨论收敛的原因和防止收敛的方法。 -有两种类型的等位基因会导致收敛:丢失和聚合。 -如果种群中的每个成员对特定基因的值相同,则认为等位基因已丢失。这严重限制了可能的基因型,因此很难找到最佳解决方案。 -如果至少95%的人口对特定基因具有相同的值,则称等位基因已趋于一致。这也限制了人口的多样性,很难找到最佳解决方案。 -趋同的一个可能原因是 “超级个体” 会产生太多的后代,而其他人则无法产生足够的后代。这可能导致人口缺乏多样性。 -为了防止趋同,必须尽可能保持人口的多样性。这可以通过提高突变率来实现,这有助于将新的遗传物质引入人群。 -突变运算符通过帮助保持种群多样性来防止融合。这是因为它向种群引入了新的遗传物质,这有助于防止融合。 -阿克利在比较遗传算法和爬坡算法时举了一个收敛问题的例子。遗传算法需要更长的时间才能在凸解空间上运行,这主要是因为等位基因的丢失导致需要长时间运行。 -提高突变率可以降低失去等位基因的可能性并防止过早收敛。
当算法过多地关注快速改进而最终趋同于错误的解决方案时,就会出现这种情况。 -之所以会发生这种情况,是因为该算法可能会排除替代遗传物质,从而找到更好的解决方案。 -为避免过早趋同,必须在探索不同的解决方案和利用迄今发现的最佳解决方案之间找到良好的平衡。 -课文还提到了强调遗传算法性能的重要性,因为不这样做可能会导致人口中最好的成员流失。 -此外,本文还强调了处理遗传算法中不可行性的重要性,尤其是在诸如VRP之类的受限问题中。 -当可行的解决方案很少见时,它可能会在人口中占主导地位,驱逐其他可能性,从而很难找到更好的解决方案。 -这是因为不可行的成员相互繁殖的可能性随着时间的推移而降低,从而减少了种群的多样性。 -文本提到了Liepins和Potter提出的三种处理不可行性的方法,其中包括使用惩罚函数来阻止不可行的解决方案并维持人口的多样性。
处理遗传算法中不可行的解决方案而采取的方法。 -使用的第一种方法是通过使用专门的重组运算符将可行的解强加到群体中。 -第二种方法是在生成可行的解决方案之前,不要通过重复复制来实现不可行。 -第三种方法是在不可行的情况下使用惩罚函数。 -研究人员发现只有第一和第三种方法有效。 -戴维斯通过从每个工作站的诉讼清单中选择第一项可用的法律行动,只允许可行的解决方案,从而解决了车间调度问题的不可行性。 -但是,由于遗传算法是通过合并来自种群所有成员的信息来运作的,因此不可行的成员应留在种群中,以便与可行的成员一起繁殖。 -在他们的遗传算法版本中,允许使用不可行的成员,但其特征为惩罚函数,以便为群体中的可行成员提供优势。 -测试了两个惩罚函数,以观察它们对人口聚合的影响。 -第一个惩罚函数涉及将溶液超过重量限制的数量加上解决方案超过时限的数量的平方,然后将其乘以相对于重量而言路线不可行的车辆数量加上相对于时间而言不可行的数量。 -第二个惩罚函数涉及将溶液超过重量限制的量乘以 0.25 加上溶液超过时限的量乘以 0.25。 -如果将计算重复基因的数量并在必要时随机替换以维持种群多样性的程序结合使用,则总体而言,较大的惩罚似乎效果更好。 -唯一的例外是50个客户,6个车辆的问题,该问题提供了更好的解决方案,惩罚函数较小。 -对于较大的数据集,较大的罚款的优势尤其明显。 -看来需要更大的惩罚功能才能实现可行。 -尽管没有为具有时间限制的更大问题找到可行的解决方案,但是当使用更大的惩罚函数时,该解决方案更接近可行性。
在遗传算法中,通常会遇到种群中不可行的成员,这意味着某些解决方案不符合问题的限制。 -为了解决这个问题,可以使用惩罚函数使可行成员比不可行成员更具优势。 -惩罚函数是一种将问题约束条件纳入适度函数的方法,适应度函数用于评估每个解决方案的质量。 -使用惩罚函数的一种方法是将其与代表问题目标的成本函数合并为一个函数。 -但是,理查森等人(1989)提出的另一种方法是将成本和罚款视为单独的目标。 -这意味着遗传算法将尝试同时优化两个目标,而不是将它们组合成一个函数。 -根据理查森等人的说法,设计惩罚函数有四条指导方针: -处罚应与违反限制的程度成比例。 -处罚应大到足以阻碍不可行的解决方案,但不能过大到足以主导成本函数。 -处罚的设计应鼓励尽可能接近限制条件的可行解决方案。 -应将惩罚设计为避免创建局部最优值,在这种情况下,由于惩罚函数,算法陷入次优解。
遗传漂移是一种现象,其中一个等位基因在种群中占主导地位,尽管它与其他等位基因相比没有任何明显的优势。 -在遗传算法中,遗传漂移可能导致坏等位基因存活而不是好等位基因,从而导致解不佳。 -如果种群数量无限大,预计种群中最好的个体的数量将呈指数级增长,这可能会导致遗传漂移。 -为了降低过早趋同的可能性并保持种群的多样性,可以将利基和物种的概念纳入遗传算法。 -生态位和物种是指种群中可能存在不同的亚群,每个亚群都有自己的环境特征。 -预选是一种将利基和物种纳入遗传算法的方法,在这种算法中,后代只有在适应值更高的情况下才会取代父母,仅通过替换相似的解决方案来保持多样性。 -拥挤是整合生态位和物种的另一种方法,在这种方法中,根据种群中的每个成员与其他成员的相似性为其分配拥挤系数,后代用相同的拥挤系数取代随机抽取的子种群中最相似的个体。 -共享是戈德堡和理查森引入的一种方法,用于诱导种群中的利基和物种,在这种方法中,解决方案根据其表现获得奖励,但奖励由所有相似解决方案共享,从而根据相似解决方案的数量减少每种解决方案的奖励。 -具有共享功能的遗传算法将亚群维持在不同的峰值周围,而如果不共享,则种群会聚成单个峰值。
此外,为处理遗传算法收敛性而引入的各种方法。 -Bickel和Bickel提出了一种方法,如果对所有解决方案的评估都在一定范围内,则将总体描述为趋同。如果确定总体已趋同于该定义,则一定百分比的解决方案将被新的解决方案所取代。 -贝克提出了另外三种方法来解决过早收敛的问题。第一种方法是标准选择,它限制了特定亲本产生的最大或最小后代。第二种方法是排名,其中个体的预期后代数量由其等级而不是其解的值决定。第三种方法是混合方法,它有两种选择。 -混合方法的第一个替代方法是在快速收敛期间使用排名,在其他时间使用标准选择。第二种选择是改变人口数量,以达到理想的参与百分比。 -但是,第二种选择的缺点是,超级个体仍然可以控制种群,从而降低了其他个体的重要性。 -Eshelman和Schaffer提出了一种通过防止乱伦、使用统一交叉和从人群中去除重复的解决方案来防止过早趋同的方法。 -在这种方法中,进行评估以确定人群中每个人之间的差异,称为 “汉明距离”。 -预防乱伦只允许两个人在汉明距离大于一定数量的情况下相互繁殖,随着种群的聚合,汉明距离会减小。 -Eshelman和Schaffer用这种方法取得了成功的结果,但他们认为没有必要将重复的解决方案与预防乱伦相结合。这是因为当这两个程序合并时,结果没有显著改善,并且由于过多的比较,运行时间延长了。
The Final Program
最终方案
研究选择的遗传算法的最终版本。 -之所以选择该版本,是因为在实验中使用的大多数车辆路线问题上,它的表现要好于其他版本。 -为该版本选择的参数包括200, 2000代的种群、下一代重复的20个最佳解决方案、每代突变的50个溶液以及50的基因选择参数值。 -使用的编码解决方案的方法是随机键表示,在评估期间使用了惩罚函数来惩罚不可行的解决方案。 -惩罚函数的计算方法是将超过时限的数量加上超过重量限制的金额的平方乘以未满足时间限制的车辆数量加上不符合重量限制的车辆数量。 -复制方法是将前20个解复制到下一代,突变两个完整的解,然后通过均匀交叉产生剩余的178个解。 -为了减少收敛问题,如果种群中超过70条染色体的等位基因与该特定基因的群体中最佳成员具有相同的等位基因,则该染色体中的20条染色体会发生突变。 -遗传算法的最终版本总体表现更好,但也有一些例外情况,即对版本稍作修改可以提高问题性能。 -一个例外是32位客户,3位车辆问题,在基因选择参数为40而不是50的情况下,其表现更好。 -有和没有时间限制的 50 个客户问题,以及没有时间限制的 100 个客户 8 的车辆问题,在较小的惩罚函数中表现更好,其中超过约束的金额乘以 0.25。
Results
结果
表 3.1 提供了有关研究中分析的问题的信息。 -表的第一列列出了分配给每个问题的问题编号。 -如果数字后面是 “-t”,则表示问题与前一个问题相同,但没有时间限制。 -问题编号旁边括号中的数字表示报告最著名解决方案值的来源。 -接下来的两列分别列出了相应问题的客户数量和车辆数量。 -每辆车的承重能力在第 4 栏中给出,每条车辆路线的时限在第 5 栏中给出。 -第 6 列列出了每位客户的停靠时间,即车辆为每位客户提供服务所花费的时间。 -第 7 列中的容量比率是通过将要装载的总重量除以可用车辆的总容量计算得出的。 -表 3.2 列出了遗传算法的结果与从文献中获得的最著名问题解决方案的比较。 -GA 的结果是通过在 Spare II UNIX 工作站上运行以 C 编程语言编写的 GA 的最终版本获得的。 -表 3.2 的第一列列出了表 3.1 中的问题编号。 -第 2 列给出了从文献中获得的最著名的解,第 3 列给出了使用 GA 获得的解。 -如果最终解决方案不可行,则第 3 列中的数字包括罚款。 -第 4 列列出了算法完成运行所花费的时间。 -第 5 列给出了问题的实际距离。 -如果解决方案不可行,则括号中的数字表示相对于时间而言不可行的车辆数量加上相对于重量而言不可行的数字。 -将 GA 的结果与最著名的解决方案进行了比较,以评估 GA 在不同问题规模下的性能。
根据客户位置的分布讨论了车辆路由问题 (VRP) 中的问题分类。 -有些问题使客户位置分布均匀,而另一些问题则将客户位置聚集在一起。 -研究中使用的遗传算法不受客户所在地组织的影响,无论客户位置的分布如何,它都应提供一致的结果。 -前三个问题(29、32 和 50 个客户)的遗传算法结果与最知名的解决方案相对接近,但没有时间限制的 50 个客户问题除外。 -在没有时间限制的情况下,50 个客户问题的结果不佳,可能是由于容量比率过高。 -随着客户数量的增加,遗传算法的性能变得越来越差。 -遗传算法无法为75个或更多客户的时限问题找到可行的解决方案,这可能是由于搜索空间的扩大所致。 -搜索空间的大小使遗传算法难以趋于最佳解,在某些情况下,即使在2000代之后,解仍在继续减少。 -在某些情况下,该算法可以运行3000代,但这并没有显著改善结果。 -在接下来的几代中,解决方案继续略有减少,然后趋向于不比第 2000 代解决方案好得多的解决方案。
Proposed Improvements
提出改进
将遗传算法应用于具有复杂排序依赖关系的组合优化问题(例如 Traveling Salesman 问题)所面临的挑战。 -本文提到了将这些问题转化为适合遗传算法的格式时需要克服的三个主要问题。 -第一个问题是有效地表达问题,这意味着找到一种将问题编码为没有顺序依赖关系的二进制字符串的方法。 -第二个问题是,用于从现有解中生成新解的重组运算符只有在应用启发式算法时才有效。启发式算法可以在梯度下降算法、爬坡算法、模拟退火等中找到。 -第三个问题是过早收敛,当单个体超越总数或使用表现不佳的重组运算符时,就会发生收敛。 -这篇文章表明,为了将遗传算法应用于组合优化问题,必须使用某种启发式。一个例子是启发式交叉运算符,发现它比标准遗传算法更有效。 -本文还介绍了一种使用两个运算符生成新解决方案的方法。第一个操作员选择两个父母和一个随机城市来开始后代之旅。后续基因是从亲本中逐一选择的,这将产生最短的路径。第二个运算符,即 2-opt 运算符,用于确保路径不交叉。 -本文得出的结论是,自然表示和启发式重组运算符的选择对于为具有复杂排序依赖关系的组合优化问题设计稳健的遗传算法至关重要。
Suh 和 Gucht 为解决车辆路由问题 (VRP) 遗传算法中的交叉路径问题而引入的方法。 -该方法涉及使用两个操作员——第一个操作员选择两个父母和一个随机城市作为后代之旅的开始。后续基因是从亲本中逐一选择的,这将产生最短的路径。 -但是,交叉路径的问题仍然存在,使用第二个运算符(2-opt 运算符)可以解决这个问题。 -2-opt 运算符随机选择两条边(i1,j1)和(i2,h),检查将它们替换为(i1,j2)和(ii,j1)是否会导致路径更短。欧几里得距离 (ED) 用于计算城市之间的距离。 -Suh 和 Gucht 使用 2 点运算符比不使用它能产生更好的结果。 -选择自然表示和启发式重组运算符对于为 VRP 设计强大的遗传算法至关重要。 -提出了几种改进标准遗传算法的方法,其中一种是与另一种优化算法的杂交。该方法将其他算法的积极特征与遗传算法的最佳特征(例如交叉和突变)相结合。
改善遗传算法结果的两种方法。 -第一种方法涉及通过使用温度参数控制种群的多样性,将模拟退火与交叉、突变和反演相结合。 -模拟退火是一种使用单个体给定一定能量的技术(效率低的解决方案为高,高效的解为低)。 -生成新溶液时,它将根据新溶液与当前溶液相比的能量分配的概率取代当前溶液。 -温度参数将与遗传算法配合使用,从第一个亲本中选择基因,直到超过温度,然后切换到第二个亲本直到再次超过温度。这同样适用于反转和突变。 -温度一开始应该很高,然后迅速下降到中等温度,然后慢慢下降到低温。 -改善遗传算法结果的第二种方法是使用并行遗传算法的概念并行运行它们。 -不是只有一个庞大的种群,而是同时繁殖几个较小的亚群。 -在每一代结束时,每个亚种群都会将其种群中最好的个体发送给其他亚群。 -有不同的方法可以选择这些新成员替换哪些个人,包括随机替换、替换最差的解决方案或替换最像新成员的解决方案。 -目前尚不确定根据亚群表现而不是整个人群的表现来选择个体是加快还是减慢收敛速度。 -这种方法的优点是,可以实现较大的种群规模,而不会像序列遗传算法那样花费不合理的时间。
Conclusion
总结
遗传算法在解决具有时间和权重限制的车辆路径问题方面的性能。 -研究发现,遗传算法在处理50个或更少客户的问题上表现良好,但是随着客户数量的增加,结果逐渐恶化。 -随着问题规模的增加,找到可行解决方案的可能性也降低了。 -该研究没有找到能够始终为所有测试问题提供最佳解决方案的遗传算法版本。 -戈德堡和德容表达了他们对遗传算法不一致的看法。 -戈德堡认为,遗传学的理念是在大范围内保持稳定,而不是达到最佳表现。他还认为,在尝试在其他地方使用这些运算符时,改变遗传算法以更好地解决特定问题可能效果不佳。 -DeJong 认为,进化系统本来不是函数优化器,迄今为止遇到的最好的个体甚至可能无法存活到下一代。他还认为,种群本身很少会趋同于全球甚至局部最优值,GA产生源源不断的后代的能力可能从相当令人印象深刻到令人沮丧不等。 -该文本表明,未来的研究可以利用遗传算法更接近最优化的方法来解决更广泛的车辆路径问题。 -本文还表明,将遗传算法与上一节中提出的一些想法(例如启发式、模拟退火或并行遗传算法)结合使用,可能有助于改进 GA 的结果。 -使用遗传算法需要克服的主要障碍之一是种群过早趋同。如果这个问题能够得到解决,遗传算法可能会持续提供接近最佳的结果。