英文: A New Multiple Traveling Salesman Problem and its Genetic Algorithm-based Solution
目录
摘要
本文首次提出了一个具有普通和专属城市的多旅行商问题(MTSP),简称MTSP*。在最初的MTSP中,任何旅行推销员都可以访问一个城市,因此在MTSP中被重命名为普通城市*。MTSP*引入了一类新的城市,称为专属城市。他们被分成小组,每个小组都可以由指定或预先确定的销售人员专程访问。为了求解MTSP*,提出了一种遗传算法。它将城市和推销员编码为两条单染色体。据此,设计了三种交叉和变异算子模式,即简单城市交叉和变异(CCM)、简单推销员交叉和变异以及混合城市推销员交叉和变异。所有交叉和变异操作都遵循城市和销售人员之间的适当关系。通过一个MTSP实例,比较和分析了该算法在三种交叉和变异算子模式下的性能。仿真结果表明,该算法能快速求解MTSP*,CCM是算子的最佳模式。
一、 引言
旅行商问题(TSP)是一个基本的路由问题。其目标是为旅行推销员找到最短的路线,旅行推销员从仓库城市出发,必须访问给定列表上的每个城市一次,然后返回仓库城市。这是NP难的。多旅行商问题(MTSP)作为TSP的推广,涉及安排m(>1)名推销员访问一组n(>m)个城市,这样每个城市只访问一次,总旅行路线最短。与TSP相似,它也是NP难的。
就可及性而言,MTSP中的所有城市对于任何销售人员来说都是相同的。也就是说,每个城市都允许任何销售人员访问。然而,在某些情况下,一部分城市允许任何推销员到访,而其他城市则不允许,但被分成几个小组,每个小组都允许指定的推销员到访。换句话说,销售人员达成协议,将城市划分为几个专属“势力范围”或称为专属城市群和一个共同的“势力范围”或称为普通城市群。前者仅允许特定/预先确定的销售人员专程访问,而后者可由所有销售人员访问。普通组可以被视为所有销售人员可访问区域的交叉点。
我们将此问题称为普通和专属城市的多旅行商问题(MTSP*)。要解决这样一个实际大小的问题,启发式方法是一个很好的选择。遗传算法(GA)是由Holland于20世纪70年代初提出的一种高度并行、随机和自适应的搜索算法,它基于达尔文理论的自然选择和遗传学机制。该算法被证明是有效的,已被广泛用于求解TSP和MTSP。本文提出了一种基于遗传算法的MTSP*求解方法。
二、问题描述:
可以在一个完整的图G =(V,E)上正式定义具有m个推销员和n个城市的MTSP*,其中对应于城市的顶点集(v1,v2.......,vn)被划分为m+1集(V0,V1.......Vm),并且每个边(vi,vj),与表示从城市i到j的访问成本(距离)的权重cij<C相关联。它的目标是以最小的总代价确定G上Hamiltonian cycles 或回路的均方序列,使得每个专用集(exclusive set)的任何顶点都被指定的推销员精确访问一次,公共集的任何顶点都被任何推销员精确访问一次。
专用城市群和普通城市群的存在,使MTSP*不同于TSP和MTSP。MTSP*中独占组(exclusive set)中的顶点可以位于同一组或普通组中的另一个顶点旁边。类似地,普通组中的一个顶点可以与同一组中的另一个顶点相邻,也可以是独占组中的另一个顶点。MTSP*不是TSP和MTSP的简单组合。
图2示出了示例MTSP*。它有4名销售人员和51个城市,其中城市0是仓库。通过保留其原始城市坐标信息,对经典示例eil51进行了修改。V1代表销售人员1独家访问的独家城市s,其中包含城市1-7;V2代表独家城市集2,包含销售人员2将访问的城市8-14;V3代表销售员3的独家产品,包含15-22个城市;V4独家销售员4,包括23-30个城市;V0代表为所有销售人员设置的普通城市,其中包含31-50个城市。该问题的目标是确定所有销售人员从仓库开始并最终返回仓库的最小路线。同时,每个专属城市必须由指定的销售人员准确访问一次,每个普通城市必须由任何销售人员准确访问一次。
图2显示了一条可行但可能不是最好的路线。销售人员1-4的路线为
普通城市44可以位于4号线专用城市24的旁边,专用城市6可以位于1号线普通城市49的旁边。
三、遗传算法的设计:
基于进化原理,使用遗传算法(GA)搜索解。自Holland[6]首次引入以来,它已成功应用于各种NP难组合优化问题,如TSP和MTSP。将遗传算法应用于求解MTSP*问题,重点是建立有效的编码和解码方案,设计合适的选择、交叉和变异算子,以确保更好的种群进化
A、MTSP*的染色体编码
染色体表示是遗传算法应用的一项重要基础工作,它直接决定了算法的性能。为解决n个城市m个旅行商的MTSP问题而设计的GAs主要采用了三种编码方案。第一种是单染色体方案。它使用一条长度为n+m-1的染色体。其中,n个城市由1到n的整数排列表示。通过插入从-1到-(m-1)的m-1负整数,将该排列划分为m个子行程,表示从一个销售员到下一个销售员的过渡。第二种是Arthur和Cliff提出的两部分染色体技术[9]。染色体的第一部分是n个城市的排列,而第二部分的长度为m,代表分配给m个推销员的城市数量。分配给第二部分的值被限制为m个正整数,其总和必须等于要访问的城市数(n)。第三种是双染色体技术。它需要两条染色体,每条长度为n,来代表一个解。第一条染色体提供了n个城市的排列,而第二条染色体在第一个城市的相应位置为每个城市分配一名推销员。(这部分可以看我之前的博客,介绍的更详细)
对于MTSP*,建议使用上述前两个方法。第三种染色体有两种类型,可以通过一些修改来适应MTSP*。特别地,城市染色体由1到n的整数排列组成,而推销员染色体的遗传值是与城市染色体相同位置的唯一或普通城市对应的推销员的数目。独家城市分配给指定的销售人员,普通城市随机分配给销售人员。
图3显示了具有三个销售人员和十个城市的MTSP*编码示例,其中六个城市为独占城市,三个销售人员分配了三组独占城市。其余的城市都很普通。也就是说,销售人员1-3的专属城市是1-2、3-4和5-6。普通城市分别为7-10个城市。根据图3中的两条染色体,推销员1访问了城市2、7和1(按顺序)。同样,销售员2访问城市10、4和3(按该顺序),销售员访问城市9、5和6(按该顺序)。
B、选择算子
本工作采用轮盘赌法和精英策略【11】作为选择操作。前者只需根据适合度值以统计方式选择染色体。精英主义策略将当前一代身体状况最佳的个体复制给下一代。它可以防止经过选择、交叉或变异操作的优化个体被淘汰。确保遗传算法的收敛性至关重要。包含精英策略的遗传算法被证明是全局收敛的。
C、交叉算子
交叉算子交换来自两个亲本个体的部分基因,形成两个新个体。这是遗传算法区别于其他算法的重要特征之一。在MTSP中,交叉算子可以是部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等。
我们设计了三种与所采用的染色体编码方式相对应的交叉算子模式,即城市交叉(city crossover,CC)、推销员交叉salesman crossover (salesman crossover ,SC)和城市推销员交叉(city-salesman crossover,CSC)。
1)城市交叉(city crossover,CC)
本文将PMX改进为城市交叉算子。它需要随机选择两个交叉点来确定匹配的截面。将交换两个父对象中相应的匹配部分,从而生成两个新的子对象。然后检查两个新的个人是否将专用城市分配给指定的销售人员。如果没有,则应纠正销售人员个体中的特定基因。
两条染色体的交叉如图4所示。在步骤1中,给定两个父母,我们随机选择一个城市个体的一部分,然后将其基因与另一个个体的基因交换,并产生两个个体的后代,如步骤2所示。两个城市个体中所选路段的映射关系为8-3、9-8、5-2、4-7、7-1, 和 1—10。在步骤3中,根据所选部分交换冗余基因,然后发现左侧染色体中的排他城市5、3、7、1和6以及右侧染色体中的城市2、5和4分配给了错误的销售人员。然后,将独家城市重新分配给正确的销售人员,并生成两个合理的路线,如步骤4所示
2)推销员交叉salesman crossover (salesman crossover ,SC)
为了避免推销员染色体上出现大量重复基因,本研究采用了传统的两点交叉。它还需要随机确定匹配部分。然后交换两条染色体的相应部分,生成两个后代。最后,应检查专属城市之间的匹配关系,并将错误的销售人员更正为指定的销售人员。
SC过程如图5所示。在步骤1中,有两个父类。特别是,随机选择的匹配片段在saller染色体中以灰色标记。交换两个标记的部分后,在步骤2中生成两个子体。然而,很明显,左染色体的排他城市5和4以及右染色体的排他城市3、2和1被分配给了错误的销售人员。在步骤3中,通过将独占城市重新分配给指定的销售人员进行更正,并获得两个正确的子代。
3)城市推销员交叉(city-salesman crossover,CSC)
对于CSC,城市染色体采用PMX,而推销员染色体采用两点交叉方案。
图6中示出了CSC的示例。在步骤1中,我们为每种父代选择一对随机交叉部分,并分别交换每对部分。如步骤2所示,它产生了两代新的城市人和两个新的推销员。在步骤3中,交换城市染色体的冗余基因,发现左城市染色体的排他城市5和3以及右城市染色体的排他城市2被分配给了错误的推销员。修正Saleser基因后,结果如步骤4所示。
D. 变异算子
变异算子在提高局部搜索能力和保持种群变异性方面起着重要作用。它还可以防止遗传算法的过早终止。这项工作采用了交换突变。它需要随机选择两个交叉点,然后交换所选点。最后,检查新后代的专属城市是否与其相应的销售人员匹配。针对上述三种交叉方案,我们设计了三种变异算子,即城市变异(CM)、推销员变异(SM)和城市推销员变异(CSM)。
1)城市变异(City mutation,CM)
在CM中,只有一条城市染色体发生了交换突变。例如,首先,两个选定的交换基因点是城市8和7,如图7所示。更换后,独家城市被证明与销售人员一致,突变已经结束。
2)推销员变异(salesman mutation ,SM)
在SM交换操作中,突变只适用于一条销售员染色体。图8中给出了一个示例,其中选择的交换点是在saller染色体中以灰色标记的基因2和1。通过交换它们来生成正确的子体。
3)城市推销员变异(ty-salesman mutation ,CSM)
在CSM中,城市和销售员染色体都发生交换突变。图9显示了一个示例,其中灰色标记的交换基因成对交换,从而产生新的可行世代。
考虑到交叉和变异不应适用于不同类型的染色体,本文从9个交叉和变异算子中选择了3个合理的组合。通过选择CC作为交叉算子,CM作为变异算子,我们得到了CC&CM(称为CCM)、SC&SM(称为SCM)和CSC&CSM(称为CSCM)。
E. 适应度函数
在遗传算法中使用适应度函数来判断个体(路线)被选入下一代的可能性。这是进化效率的限制因素。对于遗传算法,许多基于适应度比例的选择策略需要非负适应度,适应度越大,个体越好。因此,对于以最小解为优化目标的问题,需要将其转化为最大解。MTSP*将所有销售人员的最小长度作为其优化目标。因此,这项工作将长度的倒数作为其适合度。以f(x)为解的长度,拟合函数如下所示:
四:模拟和结果
本文以第二节给出的修改后的eil51为例,用三对交叉和变异算子验证了遗传算法的正确性和性能。
A、 遗传算法的收敛性
收敛性是衡量遗传算法性能的重要指标。如果遗传算法是收敛的,则表明其稳定性和朝着正确的方向进化。随着进化的进行,解决方案的质量越来越好。为了检验遗传算法的收敛性,我们进行了以下实验,其中世代数为2000,交叉概率为0.6,变异概率为0.1,种群规模为50,选择CCM。
如图10所示的结果表明,我们的GA的收敛性很好,没有明显的波动。总路线长度从初始人口的1198.23公里优化到第2000代的558.511公里。这意味着优化的效果是显著的。进化过程可分为三个主要阶段。第一个是从第一代到第560代,其中GA收敛最快,路线总长度从1198.23 km下降到666.21 km。第二个从561代到1560代显示总长度从666.21 km缓慢变化至558.51 km。从1561代到2000代的最后一代,结果趋于稳定。因此,我们的遗传算法具有良好的收敛性。对于另外两对交叉和变异算子,即SCM和CSCM,我们可以得到类似的结果。
B.比较
为了比较我们的遗传算法在不同交叉和变异算子下的性能,我们设计了三组实验,其中依次采用三对交叉和变异算子。设置其他参数,即种群大小30、交叉概率0.6、变异概率0.1和世代数2000。每个实验都是使用一台DELL Inspiron620s计算机进行的,该计算机具有Windows 7和3.30GHZ的Inter-Core i3 CPU。数据来自第2节中示例。实验结果如表1和图11所示。
观察到最佳、最差和平均解,如表2所示
结果表明,在三对交叉和变异算子中,CCM的性能最好,而SCM的性能最差。通过观察结果,我们发现在SCM中,交叉和突变仅发生在Saleser染色体上。由于存在大量重复的推销员个体,它导致了较小的解空间,并削弱了基因重组。使用CCM,只有城市染色体交叉和突变,没有重复基因。因此,基因重组的程度比SCM强,溶液空间大。也就是说,如实验数据所示,CCM的种群多样性优于SCM。城市染色体和推销员染色体均通过CSCM进行杂交和突变。基因重组的动力学比SCM强。因此,CSCM的性能优于SCM。然而,由于基因重组的动态性太强,城市染色体和推销员染色体的交叉和突变可能会破坏更好的解决方案。因此,观察到CSCM比CCM更差。在时间消耗方面,三组之间的差异很小。因此,我们应该在MTSP*的GA中选择CCM。
五: 结论
本文提出了一个新的具有排他性和一般性城市的多旅行商问题。为了解决这个问题,我们设计了一个遗传算法。对双染色体方案进行了改进,设计了三对交叉和变异算子。为了验证不同算子下算法的性能,我们设计了三组实验。结果表明,所提出的遗传算法适用于求解MTSP*问题,在三种交叉和变异操作组合中,采用城市交叉和城市变异的CCM性能最好