基于聚类的遗传算法解决旅行商问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于聚类的遗传算法解决旅行商问题
摘要:遗传算法(GA)是解决旅行商问题(TSPs)的有效方法,然而,传统的遗传算法(CGA)对大规模旅行商问题的求解效果较差。为了克服这个问题,本文提出了两种基于聚类的改进的遗传算法,以寻找TSPs的最佳结果。它的主要过程是聚类、组内演进和组间连接操作。聚类包括两种方法来将大规模TSP划分为若干子问题,一种方法是k-均值(k-means)聚类算法,另一种是近邻传播(AP)聚类算法。每个子问题对应于一个组。然后我们使用GA找出每个子问题的最短路径长度。最后,我们设计一个有效的连接方法将所有这些组合成为一个,以得到问题的结果。我们尝试在基准实例上运行一组实验,用来测试基于k-means 聚类(KGA)和基于AP聚类(APGA)遗传算法的性能。实验结果表明了它们有效性和高效的性能。将结果与其他聚类遗传算法进行比较,表明KGA和APGA具有更强的竞争力和有效性。
关键词:大规模旅行商问题;遗传算法;聚类;k-means聚类;AP聚类
一、引言
旅行商问题(TSP )是在所有城市搜索最短哈密尔顿路线的问题。TSP 是众所周知的NP-hard 问题。它有许多现实世界的应用[1,2],如规划调度、物流配送、计算机网络和VLSI 路由。近年来研究人员已经研究了不同类型的TSP [3-6]。
TSP 问题可以用如下方式描述:有N 座城市,给出城市之间的距离矩阵为
()
d ij N N
D ⨯=。TSP 问题的要求是从所有路径中找到最短路径。如果()i π被定义
为在步骤 ( 1,,)i i N =中访问的城市,则路线可以被看作城市从1到N 的循
环排列。路线的表达式如下:
1
()(1)()(1)1
minimize N i i N i f d d πππππ-+==
+∑ (1) 如果对于1i j N ≤≤、,距离满足d d
ij
ji = ,则这种情况是对称TSP 。
TSP 可以模型化为加权图。每个顶点代表一个城市,每个边缘连接两个城市。 边的权重表示两个相连的城市之间的距离。现在一个TSP 问题实际上是一个哈密尔顿回路,最优的TSP 路径是最短的哈密顿回路。
用于求解TSP 的算法可以概括为两类,精确算法和启发式算法。精确的算法确保最终解决方案是最优的。分支切割算法是这一类中的典型示例[7,8]。这些算法的关键问题是它们相当复杂,并且在计算机性能方面非常苛刻[9]。自引入模拟退火[10]和禁忌搜索[11]以来,启发式算法有可能突破局限,从而找到路径的局部最优解。在过去的二十年中,提出了大量的自然启发或群体智能方法,例如蚁群算法[12,13],粒子群算法[14]和遗传算法[15,16]来解决TSP 问题 。
遗传算法(GA )是一种通过模拟自然演化过程来搜索最优解解决大规模搜索问题(例如TSP 问题)的有效方法,GA 的目的是通过几个遗传操作,如选择、交叉和突变获得大规模搜索问题的近似解。与其他精确搜索算法相比,其优点主要是通过使用群体的信息而不是仅仅一个个体来实现搜索[5]。除了上述内容之外,GA 通过适应度函数的数值来评估个体的质量,减少当使用启发式算法时被浸入在局部最优解中的风险。
虽然GA 是解决TSPs 的有效方法,但是,随着旅行城市的数量增长,经典遗传算法效果较差。为了使TSP 问题变得更容易并且可以有效地解决大规模TSP ,
本文提出了两种改进的基于聚类的遗传算法,分别称为KGA 和APGA 。首先,KGA 和APGA 使用聚类方法将大规模TSP 划分为若干子问题,每个子问题对应于一个组。在KGA 和APGA 中分别采用k-means 和AP 聚类方法。然后,我们使用GA 找到每个聚类的最短哈密顿回路。所有这些集群可以并行处理。最后,我们设计有效的连接方法将这几个组合并为一个整体,以实现缩短整个路线的目的。
本文的其余内容以此方式描述:第二节提出了两种聚类方法,包括k-means 和近邻传播(AP )。第三节描述了基于k-means 聚类(KGA )的遗传算法和基于AP 聚类(APGA )的遗传算法。然后在第四部分,提供实验和比较结果。最后,我们在第五节结束本文。
二、聚类方法 A 、K-means 聚类
K-means 是一种普遍的无监督智能算法,由于其简单性[17],广泛应用于各种领域,如数据挖掘。这个想法是将一组样本分成几个组(簇),其中每个对象具有类似于另一个对象的特征。我们选择群集内最远的距离并标记它。
该算法需要随机地产生对聚类(1,,)C i K i = 的K 个初始中心点的选择。我们称之为中心。首先,计算从每个对象到其他聚类中心的距离,并将所有对象划分为距离最小的组。其次,根据上一步,重新计算每个集群中心。我们重复这两个步骤,直到中心不再改变,以实现收敛稳定。我们使用Euclidean 距离来计算顶点和集群之间的距离。聚类的目的是优化以下函数:
2
1
1,minimize ||||i
K
N
j i i j j G
f x C ==∈=-∑
∑ (2) 其中K 是聚类的数量,N 是顶点(或城市)的数量,j x 是顶点j 的坐标,C i 是聚类i 的坐标,i G 是属于聚类i 的顶点组。
该算法可以通过在空间中移动聚类中心来获得最短的平方距离。聚类的新中心根据分配给它的所有顶点不断更新。计算聚类中心的公式如下:
1,1||i
N
i j j j G i C x G =∈=∑ (3)
其中||i G 是包含在簇中的顶点的数量。 算法1给出了K-means 聚类算法的伪代码。
算法1:K-Means 的伪代码
B 、AP 聚类
基于相似性度量的聚类方法已经广泛用于工程系统和科学数据分析中。聚类的一种常见方法是将数据分成几个部分,并找到一组中心,以使数据点及其最接近的中心具有最小的平方误差和。我们从所有实际存在数据点中选择中心,并将它们命名为“样本”。K-Means 聚类方法最初使用一组随机选择的样本,然后迭代地优化那些样本,目的是降低平方误差的和。K-Means 聚类方法最初很容易选择样本,所以它总是需要用不同的初始化来优化许多次,并努力获得更好的解决方案。因此,它仅在组的数量较少并且至少一个随机初始解接近优秀解的情况下表现很好。
近邻传播(AP )与K-Means 聚类非常不同[18],它不需要在运行算法之前人工设置聚类的数量。它将所有数据点视为同一时间的潜在样本,并将其视为每个集群的代表。在AP 中的数据点之间交换的消息有两种类型。它交替地使用两种消息传递步骤来更新两个矩阵:“责任”矩阵和“可用性”矩阵,并且它们中的每一个考虑不同种类的竞争。可以在任何时间组合消息以从点中选择样本。“责任”矩阵(),r i k 描述了点i 适合于点k 的程度,即从i 到k 的消息。“可用性”(),a i k 描述点i 选择点k 作为其聚类中心的程度,将消息从i 发送到k 。点k 应当是考虑来自其他相邻点的支持的示例。(),r i k 和(),a i k 使用以下公式计算:
()()()()()'
''
,,max ,,k k
r i k s i k a i k s i k ≠=-+ (4)