蚂蚁算法应用(二)

An ant-based algorithm for coloring graphs

1.研究背景

图的着色问题涉及到任务调度、时间制表、通信网络中的频率分配、寄存器分配、PCB设计中的短路测试以及传统的地图着色等问题。
由于图的着色问题是NP难题的,逼近算法也不是很有前途,因此很多工作都集中在启发式算法的设计上。图着色问题的启发式使用各种算法设计技术,包括构造方法、迭代方法、遗传算法、局部搜索方法、禁忌技术和蚂蚁系统算法。
图着色
设G =(V,E)是顶点集V和边集E的无向图,图着色即相邻顶点必须具有不同的颜色。 G具有适当的k着色的最小k被称为G的色数。顶点v处的冲突是与v相邻的具有与v相同的颜色的顶点。图G中的总冲突是具有相同颜色的相邻顶点对的数量。图着色问题是找到最小k的问题。

2.国内外研究现状

Costa和Hertz 蚂蚁可以从一个顶点移动到图中的任何其他顶点
Comellas和Ozon 蚂蚁系统算法,每只蚂蚁得到的结果都是基于RLF或DSATUR等传统的序列方法。

3.创新点

① 使用蚂蚁的方式不同,算法中的每个蚂蚁只使用局部信息给图的一部分着色。每只蚂蚁的着色动作构成了整个图的着色。通过这种方式,ABAC更适合分布式实现
优势:每个测试图的标准差都非常小
② 在我们的算法中蚂蚁没有信息素的铺设能力。经过试验发现,在这个算法中,信息素对解决方案的质量没有显示出明显或显著的影响。所以,在有限的实验中,这有助于减少运行时间。

4.具体算法

参数解释

nJoltCycles:陷入局部最优的连续循环数量,我们设置nJoltCycles = max{n/2,600}。

nBreakCycles:在算法终止之前,有效值没有改进的连续循环数。

a:是由MXRLF生成的颜色类的百分比,这些颜色类可供蚂蚁最初使用。我们准备 a= 80%。
b:MXRLF中的颜色类的百分比,这些类用于在ant开始之前为图形创建初始颜色。 b= 50%。
y:是MXRLF中颜色类的百分比,用于着色在初始 中没有着色的顶点。 y= 70%
MXRLF_SET_LIMIT:是MXRLF中的颜色类/分区大小限制。我们设置MXRLF_SET_LIMIT = 0.7n

nMoves:是蚂蚁在停止之前可以访问的顶点数。我们定义nMoves如下。

nChangeCycle:允许的连续循环的数量,其中在可用颜色(可用颜色)的数量增加之前没有任何改进。我们设置nChangeCycle = 20。

nAnts:是一个蚁群中的蚂蚁数量,它被设置为图中顶点数量的20%。为了提高效率,不允许nant超过100
nCycles:是整个着色过程中的循环数,设置为min{6n,4000}
n = |V|是顶点集的基数

R_SIZE_LIMIT:最近访问的顶点列表的长度。蚂蚁将避免重新访问它的禁忌列表中的那些顶点,从而允许对图进行更多样化的探索。我们设置R_SIZE_LIMIT = nMoves/3。

步骤1:得到图G的颜色上界K

设G = (V,E)为输入图。我们首先运行MXRLF,获得适当图G的k着色。K是图G上颜色数的上界。
MXRLF:
将图G未着色的点分为两组:
P组顶点:不相邻于任何已着色的顶点,R组顶点:相邻于至少一个已着色的顶点。MXRLF在构建color类时不使用来自R的顶点。按顺序选择P中最大度数的顶点添加到第一个color类中,更新P,R组,重复上述过程,直到P是空的或者颜色类大小受到限制,整个图形着色。

步骤2:初始化参数

K为图G的颜色种类上界。最初设置可以选择的给蚂蚁上色的颜色记为 ,a=80%。
k个颜色类中随机选择 个颜色类保留。其余顶点清除颜色,用 个颜色随机分布上色, 。颜色类被重新编号,以便所有颜色都在集合 中。现在我们有了一个有 个颜色的有色图G,这个颜色可能不是g的正确颜色。

步骤3:进入循环

然后将一群蚂蚁随机分布到图的顶点。
在每个循环中,一次激活一个蚂蚁,蚂蚁只知道局部情况。当蚂蚁在顶点时,判断该点处是否有冲突,如果有冲突,从颜色集中选择临近点未使用的颜色进行重新着色,当满足要求的几种可用颜色中有选择时,蚂蚁只是随机选择一种颜色。
如果不存在附近点未使用的颜色,则选择附近点使用数量最少的颜色进行着色,以最小化该顶点处的冲突。
然后更新该顶点处的冲突。
ant不知道整个图的总冲突。在蚂蚁完成对当前顶点的着色后,蚂蚁会选择该点的临近点中冲突最小的那个点,移动到该点,继续解决冲突。
此外,每个蚂蚁还有一个禁忌列表,其中包含他们无法重访的最近访问过的顶点。 禁忌列表有助于防止蚂蚁卡在循环中。

步骤4:情况判断

如果陷入局部最优,进行“震动”法。
局部最优:蚂蚁从当前顶点到下一顶点时,选择临近点中冲突最小的顶点。但很有可能冲突值一样,导致蚂蚁陷入局部最优。
振动法:为了帮助蚂蚁解决局部最优,我们通过一种“震动”的方法扰乱图形的当前着色。选择图中在前10%中存在冲突的顶点,并使用当前可用颜色集的80%随机重新着色它们的相邻点。“震动”的想法是注入足够的干扰进入当前的着色,使其移出当前的局部最佳,但不足以破坏已建立到那一点的着色。

当所有蚂蚁都完成一个循环时,如果当前图G没有冲突,那么可用颜色的数量将减少一个,更新颜色种类最优值和可用颜色集,然后我们开始另一个循环。
如果在允许连续的循环中,当前颜色种类的最优值一直没变,则输出最优值。

5.实验结果:

对于每个图,我们列出了图的名称、颜色数上界、算法在50次试验中产生的边界结果的最小值、最大值、平均值和标准差。我们还列出了每个图的50次运行中的平均运行时间(以秒为单位)。对于一些图,运行时间太小,无法记录,并且被记录为0。需要注意的是,结果的标准差非常小,除三幅图外,其余均小于1,并且这三幅图的标准差小于2。在这119幅图中,我们的算法找到了56幅图的最优k值。有7个图,我们的算法得到了较差的结果,但都在允许范围内。

6.结论:

在本文中,我们提出了一种基于蚁群算法的图着色算法,它在119个DIMACS基准图上运行良好。为解决图着色问题提供了一个新思路。

【项目介绍】 基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip 基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip 基于Matlab实现的蚁群算法结合RLF求解图着色问题源码+程序说明+超详细注释(课程作业).zip 【说明】 1、项目源码在上传前,都经过本地成功运行,功能测试无误。请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、机械电子信息等相关专业背景的在校大学生、专业老师 行业从业人员等下载使用。 3、用途:项目代表性强,具有创新性和启发性,故具有挺高的学习借鉴价值。不仅适合小白入门进阶,还可作为毕设项目、课程设计、大作业、比赛初期项目立项演示等。 4、如果基础还不错,又热爱学习钻研,也可基于此项目基础上进行修改进行次开发。 本人也是技术狂热者,如果觉得此项目对您有价值,欢迎下载使用! 无论您是运行还是次开发,遇到问题或困惑,欢迎私信交流学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值