一种解决多旅行商问题的改进的遗传算法

英文:An Improved Genetic Algorithm for Multiple Traveling Salesman Problem

摘要:

       多旅行推销员问题(MultipleTravelingSalesman problem)是一个以最短总路线为优化标准的问题,在理论研究和工业中都有广泛的应用。本文提出了一种改进的遗传算法,以提供问题的替代性和有效性解决方案。初始种群由贪婪策略生成,这使得选择的子路径可以包含在初始种群中。聚合速度增加,同时复杂性显著降低。采用变异算子结合2-opt局部搜索算法,避免了遗传算法局部搜索能力的局限性。它还解决了简单遗传算法的问题,如早熟现象和缓慢收敛。基于我们算法的仿真结果表明,改进后的方法是有效可行的。


引用:

       旅行商问题(TSP)是一个具有广泛实践背景和重要理论价值的问题。随着限制因素的增加,可以从TSP中导出多旅行商问题(MTSP)。MTSP是经典TSP的延伸和延续,它讨论了M个旅行推销员访问N个城市的路线安排优化,一般来讲:是安排所有旅行推销员从同一个城市(或不同的城市)开始旅行,他们必须使用不同的旅行路线。因此,每个城市都只有一个旅行推销员(出发城市除外),所有旅行推销员都必须在旅行结束时回到出发城市,并满足总路线是最短路线的标准。MTSP在实践中尤为重要,它广泛应用于车辆调度、流水线、机器人操作研究、生产调度和计算机网络拓扑设计等领域。

       近几十年来,对MTSP的研究已经发展到产生许多有效和创造性的方法来解决这个问题。例如,密歇根大学的Holland教授介绍了一种遗传算法(GA),它是一种基于自然选择和遗传学机制的高度并行、随机和自适应搜索算法[1]。由于其鲁棒性,该方法被证明是有效的,并在TSP和MTSP中得到广泛应用。

       简单遗传算法具有全局搜索能力强的优点,但存在收敛速度慢、陷入局部极小等局限性。本文提出了一种基于遗传算法的方法。初始种群由贪婪策略生成。选择部分匹配交叉算子(PMX)作为交叉算子。采用变异算子结合2-opt局部搜索算法,避免了遗传算法局部搜索能力的局限性。它可以在一定程度上解决简单遗传算法存在的早熟现象和收敛速度慢等问题。


二、MTSP

       本文的重点是来自同一起点城市的MTSP。通过添加虚拟城市,即通过引入M-1虚拟城市,命名为N+1,N+2,…,N+M-1,将MTSP简化为TSP。如果旅行推销员在参观路线上遇到一个虚拟城市,他就会返回出发城市,从而形成一个循环。每个环路代表一条参观路线。虚拟城市与出发城市之间的距离被定义为无穷大,因此总的游览路线M必须至少包括出发城市以外的一个城市。

       基于每个旅行推销员必须至少访问一个城市的事实,总旅行推销员M的总访问路线数为N+M-1,MTSP的总旅行距离大于TSP。为了缩短总旅行距离,旅行推销员的总人数M-1必须选择距离出发城市最近的M-1城市作为他们的旅行路线,然后通过TSP求解剩余N-(M-1)个城市的访问路线。


三、改进遗传算法的设计

A、MTSP的染色体编码设计

       求解TSP有多种编码方法,如顺序表达式、近邻表达式、边表达式和矩阵表达式等[2]。本文使用顺序表达式作为遗传编码,这意味着基因按访问城市排列,由数字0到N+M-1表示,并形成如下染色体:[i 0,i,,…,i N+M-1]每个数字只使用一次,这意味着一名旅行推销员将访问城市io至i1,直到iN+M-1。该方法简单、直观,易于理解。

B、初始种群

       遗传算法是对初始种群进化的一种操作。人口初始化是计算的起点。为了获得全局最优解,初始种群应随机分布在搜索空间内的每个区域。虽然随机创建可以有多种路径,但初始适应性也很低;这可能会直接影响收敛速度。本文使用贪心策略[3]在初始种群中包含尽可能多的优化子路由。该方法提高了初始种群的适应性,减少了初始种群创建的盲目性。

       初始种群的创建方法如下:

步骤1:随机选择标记为a的城市,如果之前未选择,则将其标记为选中,否则重复选择,然后选择距离a最近的城市B。城市a和B可以形成路线AB。

步骤2:分别选择距离A和B最近的城市C和D。C和D必须是之前未选择的城市。如果AC<BD,则选择C形成路线C-A-B,否则选择D形成路线A-B-D。

步骤3:重复步骤2,直到所有城市都包含在旅行路线中。

步骤4:如果所有城市都至少被选中一次,则随机选择两个城市形成一条路线,并将其标记为双选,然后进入步骤2,直到达到人口的要求。

C、适应度函数的设计

       遗传算法中使用适应度函数来判断每条路径,从而决定它能传递给下一代的机会,这是限制进化效率的因素。本文以路径距离为评价标准,将适应度函数定义为路径总距离的倒数,即路径越短,适应度越好。

D、MTSP的遗传算子

1) 选择算子:选择算子采用德隆K.A.提出的精英策略【4】。这一策略将目前身体状况最好的个体复制给下一代,同时将下一代身体状况最差的个体移除。精英策略可以保持遗传算法中优化个体的当前状态,保证其不被选择、交叉和变异所丢失或破坏。这是遗传算法收敛的关键保证。包含精英策略的遗传算法是全局收敛的[5]。

2) 交叉操作:交叉操作交换来自两个父个体的部分基因,形成两个新个体。这是遗传算法区别于其他算法的一个重要特征。在MTSP中,交叉算子可以使用部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)等。

       本文使用Goldberg等人于1985年提出的TSP的PMX算子。它需要随机选择两个交叉点来定义匹配的截面。根据双亲两个杂交点中间部分的关系,产生了两个新的后代。例如,如果有两个家长:

        首先,我们随机选择两个交叉点,然后在两个交叉点之间交换中间部分:

       中间部分的映射关系是7--5,5--4,4--8,9--I,X代表待定编码。例如,如果使用O2来确定X,我们首先将未访问的城市编号保持为3、6、2,这是从其父母那里继承的,这就得到了:

       然后我们使用父代P2中的原始代码9作为第一个X,并交换9--I来确定它是I。使用相同的方法来确定第二个X,原始代码是7,交换7--5来确定它是5,但02中已经有一个5,我们交换5--4来确定它是4,这与02已经有4的原因相同,我们交换4--8来确定它是8,最终结果是:

3)变异操作:变异操作在提高局部搜索能力和保持种群变异性方面起着重要作用。它还可以防止遗传算法中的早熟现象。本文采用2-opt局部搜索算法[6]对群体中20%的染色体进行优化,它既可以交换两侧进行变异,也可以作为局部搜索算法。该方法在一定程度上解决了遗传算法的局部搜索能力问题。同时,为了保持遗传算法的全局搜索能力,其他染色体采用反向变异。.随机选择两个不同的点,将基因在两个点之间形成的路径倒序,这样可以在突变后形成新的染色体。

       2-opt局部搜索算法的原理如图1所示。它优化通过每一侧的路线,并反转子路线。没有数字的圆圈表示两个或多个城市之间的一系列路线。如果Ll2+L34>Ll3+L24,则Ll2和L34将替换为Ll3和L24,城市2和3之间的路线将按顺序颠倒。一般来说,2-opt算法从某一点开始,然后按照上述方法对两侧进行操作。

 

E、算法的终止条件

       本文使用固定进化代数的组合规则和预设的收敛条件来终止算法。如果满足预设的收敛条件,则算法终止。如果它达到了固定的进化代数但仍然不满足预设的收敛条件,则算法也会终止。预设的收敛条件如下:如果进化达到五代,但最优解仍然不变,适应度函数的改进不超过1%。


四、仿真结果

       遗传算法中的参数选择非常关键。它们直接影响最终结果的收敛性和质量。由于本文对初始总体进行了优化,总体可以取一个相对较低的值,POPNUM=80。终止代数可为G=5000。由于遗传算法中的一系列交叉和变异设计,这确保了个体路由的有效性,交叉概率Pc和变异概率Pm可以设置为相对较高的值pc=0.9和Pm=0.1),以提高全局搜索能力。

       为了验证改进的遗传算法的正确性和有效性,本文对5名旅行推销员进行了模拟,选择了30个、50个和100个城市。模拟结果如图2、3和4所示。(a) 和(b)分别表示改进遗传算法的结果和收敛曲线。

 

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑电情绪识别

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值