收藏 分享(赏)

多维背包问题的一个蚁群优化算法.doc

上传人:cjc2202537 文档编号:1216178 上传时间:2018-06-18 格式:DOC 页数:10 大小:1.34MB
下载 相关 举报
多维背包问题的一个蚁群优化算法.doc_第1页
第1页 / 共10页
多维背包问题的一个蚁群优化算法.doc_第2页
第2页 / 共10页
多维背包问题的一个蚁群优化算法.doc_第3页
第3页 / 共10页
多维背包问题的一个蚁群优化算法.doc_第4页
第4页 / 共10页
多维背包问题的一个蚁群优化算法.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、多维背包问题的一个蚁群优化算法摘 要 蚁群优化(ACO) 是一种通用的启发式方法,已被用来求解很多离散优化问题 .近年来,已提出几个 ACO 算法求解多维背包问题(MKP).这些算法虽然能获得较好的解但也耗用太多的 CPU 时间.为了降低用 ACO 求解 MKP 的复杂性,本文基于一种已提出但未实现过的 MKP 的信息素表示定义了新的选择概率的规则和相应的基于背包项的一种序的启发式信息,从而提出了一种计算复杂性较低、求解性能较好的改进型蚁群算法.试验结果表明,无论串行执行还是虚拟并行执行,在计算相同任务时,新算法耗用时间少且解的价值更高.不仅如此,在试验中,本文的新算法获得了 ORLIB 中测

2、试算例 5.250-22 的两个“新” 解.1 引 言 (多维背包问题(MKP) 1是一类 NP 难的组合优化问题.给定待选项的集合 ,MKP 可以叙述如下:从集合 中选出一组满足所有问题约束的项,使其价值之和最大.MKP 的数学公式如下:(1)满足于 式中:项数, ;项 的价值, ;对应项 的变量,项 被选中对应 ,否则, ;项 耗用资源 的量;资源 的总量;约束数, .一个定义完整的 MKP 应该满足: 并且.近年来,蚂蚁、蜜蜂等群居昆虫的集体行为引起了人们的广泛关注.每个昆虫的能力虽然十分有限,但昆虫群体的能力却远远超过所有个体能力的总和.比如,蚂蚁群可以快速建立起巢穴与食物源之间的最短

3、路径.令人惊奇的是,每只蚂蚁并不直接比较每条路径,而仅仅只是遵守信息素迹释放/跟随规则就能找到最佳路径 .蚂蚁群的这种能力很自然地引起了计算机科学家的兴趣.人工智能发展中的最大困难是组合爆炸 问题,其实质是组合优化问题 .如果能定义某种计算能力有限的“人工昆虫”,使其组成的群体具有解决某类组合优化难题的能力,则整个人工智能甚至整个计算技术都会有一个里程碑式的发展. Dorigo 等人沿着这个方向迈出了第一步:他们根据蚁群的觅食行为定义了求解旅行商问题(TSP)的蚁群(AS 2)算法,并取得了令人鼓舞的结果.蚁群优化 (ACO)3是由 AS 算法演变而成的一种难解问题的通用启发式解法.现已广泛用

4、于求解包括 TSP 在内的各种组合优化问题.应用 ACO 求解 MKP 是一项颇具挑战性的研究工作.近年来,国内外的研究者对此作了一些尝试性的应用研究. Leguizamon 等人分析了应用 ACO 求解 TSP 和 MKP 之间的区别,并将 AS 算法应用于 MKP4. Fidanova 提出增强当前未被蚂蚁访问过的项的迹浓度,以增加这些项被蚂蚁选中的概率 5. Parra-Hernandez 等人将ACS6的迹全局更新策略更改为满足一定条件的新解发现时才进行,并引入迹的局部存储,由此实现了 ACS 求解MKP 的并行计算 7.Alaya 等人将信息素迹放在被选择项的所有序对组合上,在此基础

5、上提出了求解 MKP 的 Ant-knapsack 算法 8.国内与此相关的文献911 大多是将国外文献中的算法用于求解 背包问题,对 ACO 算法求解背包问题的性能并没有多少改进.仔细分析文献中的求解 MKP 的 ACO 算法会发现它们的复杂性偏高 .然而,应用 ACO 算法求解 MKP 的算法复杂性还可以进一步降低 .本文在文献12背包问题表示的基础上提出了一种新的构造解的规则,并为背包问题设计了一种适合该规则的新的启发式信息.改进后的 ACO 求解 MKP 的空间复杂性为 ,构造每个解的时间复杂性为 .试验表明,无论在串行执行还是在虚拟并行执行,在计算目标函数次数相同的条件下,本文的 A

6、CO 算法不仅耗用时间少,而且求得最优解的能力也提高了.在后面的叙述中,称本文实现的 ACO 算法为 NAntKp.本文的其余部分组织如下:节 2 简要描述了现有文献中求解 MKP 的 ACO 算法的关键内容并分析了它们的复杂性; 节 3 详细定义 NAntKp 算法;节 4 应用 NAntKp 算法求解 MKP 的标准测试实例,讨论算法性能并与其它 ACO算法比较;节 5 简单总结了全文并指出了将来的研究方向 .2 已有算法简介及复杂性分析MKP 的一个解 是所有项的集合 的子集.现有文献中描述的 MKP 的各种 ACO 算法采用了不同的信息素释放方法和不同的启发式信息.不过,这些算法的主要

7、过程大致相同.假设给定的最大迭代步数为 ,允许搜索的解的数量为 ,蚂蚁数为 ( ),算法 1 描述了这个过程.算法 1 AntMkp1: 初始化信息素值;2: while 迭代步数不大于 do3: for 每只蚂蚁 do4: while 可行候选集 非空 do5: 计算选择项 的概率 ;6: 根据随机比例规则选择某项 ;7: if 项 满足问题约束 then8: 将项 加入部分解 ;9: end if10: 从候选集 中移去项 ;11: end while12: end for13: 记录最好蚂蚁;14: 更新信息素值;15: end while不同的算法采用不同的信息素模型,因而有不同的启发

8、式信息和选择概率的计算方法即行 5、6 的具体实现不同,进而有不同的复杂性和求解性能.下面简要描述几个算法选用的信息素模型,选择概率及启发式信息的计算方法,并在算法 1 的框架下分析它们的复杂性.2.1 KpAs 算法Leguizamon 等人 4最早应用 AS 算法求解 MKP.本文称他们描述的算法为 KpAs 算法. KpAs 将信息素释放在项上.蚂蚁从一个空解开始,一步一步地根据项的信息素信息和启发式信息在所有可选项中概率地选择一个项并加入到当前解中.记一个蚂蚁 在迭代步 的部分解,则选择下一个组件 ()的概率选择公式如下其中, 是余下的待选可行项的集合; 是依赖于部分解的动态启发式信息

9、; 和 是控制信息素信息和启发式信息重要性的参数.启发式信息 是部分解 的函数.这就是说,在构造解的每一步,对每个 ,都要重新计算.记 ,分别表示项 对部分解 而言关于约束 的紧度(tightness)和关于所有约束的平均紧度,那么,启发式信息的计算方法如下结合算法 1 分析 KpAs.在行 411,当蚂蚁 在构造一个解的每一步时,如果有项加入到部分解 中,则需要对候选集 中的所有项计算启发式信息 .为了降低时间复杂性,需要存储部分解已耗用的每种资源量.因此空间复杂性为 ,时间复杂性为 .行 5、6 计算概率和随机比例选择的时间复杂性为 .行 79 检查可行性的时间复杂性 .所以 ,构造一个解

10、的时间复杂性为 ,空间复杂性为 .由于更新信息素值的时间复杂性为 ,存储问题数据的空间复杂性为 ,于是整个算法的空间复杂性为 ,时间复杂性为.2.2 AntKnapsack 算法AntKnapsack 算法 8与许多别的蚁群优化算法不同的地方是它在 MKP 的一个解包含的所有项的序对上释放信息素.当加入某个项到当前的部分解时,选择项的概率依赖于连接部分解中的项和候选项的所有序对上的信息素值.记 表示候选项为 时的信息素值,则项的选择概率定义为其中, 是启发式信息, 表示相对于部分解 而言项 关于所有约束的紧度的和; 、 的意义同前文.同样地,结合算法 1 分析 AntKnapsack 可得空间

11、复杂性为 ,时间复杂性为 .不过,在计算解的数量相同的条件下, AntKnapsack 构造一个解耗用的时间比 KpAs 多;整个求解过程耗用的时间也会比KpAs 多 (另外的原因是信息素更新的时间复杂性和频率比 KpAs 高).2.3 KpArAco 算法KpArAco 算法 5释放信息素于解 包含的项的顺序序对 上.它的主要想法是在信息素更新时增加在一次迭代中未被包含在任何蚂蚁的解中的序对上的信息素值,使之大于包含在最坏解中的序对上的信息素值,但小于包含在最好解中序对上的信息素值.从而增加未被使用过的序对在下一次迭代中被使用的概率.项的选择概率依赖于最近加入部分解的项 与候选集中的项 组成

12、的序对上的信息素值 ,其中, 是启发式信息,表示项 的价值与耗用所有资源的比, 、 是调节这个比值的参数. KpArAco 算法的空间复杂性为 ,构造一个解的时间复杂性为 ,整个算法的时间复杂性为 .2.4 KpAcs 算法KpAcs 算法 7在一个解包含的项上释放信息素.它对ACS 算法 6的主要改进在于:1)每只蚂蚁存储自己的信息素值,信息素值的局部更新不影响别的蚂蚁的行为;2)最好蚂蚁的信息素值的全局更新要么在搜索到一个更好的解后进行,要么依赖于与时间相关的更新机制,而不是每个迭代步之后都更新;3)信息素值在全局更新之后,最好蚂蚁将其传给别的蚂蚁.经过这些改进, KpAcs 的求解性能增

13、强了,且适宜并行实现.项的选择概率如下记 ,其中 是一组拉格朗日乘子(Lagrange multiplier) .启发式信息定义为分析 KpAcs 算法可知空间复杂性为 ;构造一个解的时间复杂性为 ,整个算法的时间复杂性为 .3 NAntKp 算法从前文可知,算法 1 中行 5、6 的时间复杂性至少为O(n).这是这些算法复杂性偏高的根源.如果能将行 5、6的时间复杂性降至 O(1),则整个算法的计算量可以显著地降低.事实上,将信息素释放在问题的变量和它所有可能的取值的组合上,就能达到此目的.这就是文献12中针对背包类问题所举的一个例子.但这种只使用信息素引导的搜索只能有效地求解很小规模的问题

14、,因此必须将具体问题实例的启发式信息集成到项的选择概率中.然而,集成启发式信息是一件困难的事情,这正是我们解决的关键问题.3.1 信息素模型设问题(1)的解集为,则搜索空间的大小 .定义问题(1) 的信息素模型, 对应 ,对应 .也就是说,人工蚁对每个待选项有两种处理:选或不选.当作出选时,人工蚁就增加 ,使得再构造候选解时,作出选这种处理的概率比不选大;反之亦然.我们将在 HCFACO12框架下参照 MMAS13算法的规则定义新算法.所以,将信息素值均初始化为 1,即.3.2 项的选择概率在迭代步 ,蚂蚁 从 到 逐项按式(2)计算变量 的概率,即项 被 选 的概率.(2)式中:信息素信息的

15、重要性因子,下面将要定义的序启发式信息 的重要性因子.因为蚂蚁 对项 要么选,要么不选,故变量的概率 .3.2.1 序启发式信息的定义在式(1)的 个约束两边各乘一个非负常数 ,整理后得其替代约束(surrogate constraint)如下式,(3)替代乘子(surrogate multipliers)向量 的计算原则是:使替代松弛(surrogate relaxation)后的一维 背包问题的最优解能最大程度的逼近原始的 MKP 的最优解.计算实践表明 1, MKP 线性松弛(LP relaxation)的对偶问题(duality problem)的变量值就是一组非常好的的值.线性规划松

16、弛后, MKP 演变为下面的线性规划,Max (4)满足于注意式(4)允许 可取 区间内的任何值,而(1) 式仅允许取 两个值.求(4)的对偶线性规划即得的值.从而将形如(1)的 MKP 问题转化为如下形式的 0-1 背包问题Max (5)满足于记 ,且 ,则序启发信息 就是 的规范值.3.2.2 序启发式信息的规范处理在式(2)中 和 共同决定启发式信息的重要程度.由于 的定义要求所有项按 从大到小排好序的 ,如果 的值太大,则 的概率几乎总是 1, 的概率几乎总是 0,这就使 NAntKp 算法退化为贪心爬山算法,求解性能显著降低;反之,如果 的值太小,则 的值主要由信息素值决定,与 的值

17、几乎无关,这就使 不能引导蚁群搜索, NAntKp 算法退化为纯粹的随机算法,求解性能也会显著下降.因此,必须控制 的值在某个适当的范围内.另外,当, 的概率比 的概率大; 当 ,的概率比 的概率大.如果所有项的 ,则NAntKp 向贪心爬山算法退化; 或者,如果所有项的 ,则 NAntKp 向纯粹随机算法退化,这两种情况都是我们不希望发生的.故必须对所有项的 值进行控制,使很有希望被选择的一部分项的 ,而其余项的 .因此需要选择某项物品 ,使成立. 选择物品项 的一个合理的根据是也就是可用资源的加权和与所有项占用资源的加权和的比. 值部分地反映了可选择项的比例.按照贪心的原则,我们希望项被选

18、择.故设 .综合上述分析,可以设 (6)其中, , , , 是常数.适当选择 , , , 的值就可以控制启发式信息 的值.由于 ,所以可固定 , .因此,只需选择和 的值就可以得到适当序启发式信息 的值.3.3 信息素模型的更新在每一迭代步 ,蚁群在构造了候选解之后开始更新信息素模型的值.首先,信息素值按(7)减少,以忘记以前对待选项作出的不理想处理.(7)式中, 是信息素的挥发率. 然后,一些满足预定义规则的蚂蚁构造的候选解(本文使用价值最大的解 )被用于信息素模型的增强.为此,蚂蚁计算它的解对应的目标函数值并与别的蚂蚁进行比较.满足更新规则的蚂蚁被允许按(8)增加候选解 对应的信息素值,(

19、8)3.4 局部搜索算法计算实践证明,使用简单的局部搜索算法来改善蚁群构造的候选解是相当有效的方法. NAntKp 使每只蚂蚁利用一个简单的局部贪心搜索 1算法(LGS)来改善其解的质量,试图增大解的价值.记蚂蚁 的解为 .蚂蚁 从 到逐项检查.如果 , LGS 跳过;如果 , LGS 先设 ,然后检查 是否满足问题的所有约束,如果满足,则继续检查下一项,否则,仍置 ,然后继续检查下一项.3.5 NAntKp 的描述及复杂性分析设蚂蚁数为 ,蚂蚁 的解为 ,在每个迭代步蚂蚁发现的最好解为 ,最好的解为 ,最大的迭代步数 .假设已经设定了 NAntKp 算法的最优参数.算法 2 NantKp/

20、初始化1: 根据式(6)求项的启发式信息;2: 按项的启发式信息从大到小排序 ;3: for do4: for do5: ;6: end for7: ;8: ;9: end for10: for do / 迭代11: for do / 构造候选解12: for do13: 蚂蚁 根据(2)式计算 ;14: 产生一个在 区间均匀分布的随机数 ;15: if then16: for do17: if then18: ;19: end if20: end for21: end if22: end for23: end for24: for do / 应用 LGS25: for do26: for 且

21、 do27: if then28: ;29: end if30: end for31: end for32: end for33: 计算 ;34: if then35: ;36: end if37: for do / 更新信息素值38: , 按式(7),(8) 更新;39: end for40: if 搜索收敛 then / 重启算法41: 将信息素值设置为 1;42: end if43: end for在 NAntKp 中,行 19 初始化的时间复杂性是;在行 1222,蚂蚁 构造一个候选解,如果 采用增量计算即将以前计算的和缓存 ,则构造一个解的时间复杂性为 ;在行 2432,如果也采用增

22、量计算,应用 LGS 的时间复杂性为 ;在行 3339,找出具有最大目标值的蚂蚁并更新最好解,时间复杂性为 ,更新信息素模型时间复杂性为 ;行 4042 检查搜索是否停止 12,时间复杂性为 .由于一般有 ,所以, NAntKp 算法的时间复杂性为 .信息素模型的空间复杂性为 ,存储问题实例的空间复杂性为 .在串行执行时,蚁群共享存储空间,算法的空间复杂性为 ;而在虚拟并行执行时,每只蚂蚁需要有单独的存储空间,故算法的空间复杂性为 .4 试验研究所有试验程序使用 Visual C+ 6.0 生成,并在 Founder PC N243S9 微机上运行,该机使用的操作系统为 Microsoft W

23、indows 2000.所有试验采用的计算实例来自 ORLIB1.4.1 实例选择ORLIB 库有两组 MKP 实例.一组是小规模容易求解1 http:/people.brunel.ac.uk/mastjjb/jeb/orlib/mknapinfo.html的,能被 NAntKp 算法很容易地求解.它们对判断新算法的性能无实际意义.所以不选择它们.另一组是大规模难解的.按组合( 设置为 100,250,500, 设置为 5,10,30),每组产生 30 问题实例.其中,前 10 个问题的紧度 1 ,中间 10 个为 0.5,最后 10 个为 0.75.根据现有文献中通常的做法,选择 5-100

24、,5-250,10-100 三组中的 30 个.每组均匀地选择 10 个,其中 的选 4 个,0.5 的选 3 个,0.75 的选3 个.这样,既可以有效地测试我们的新算法,又不致做过多的试验.4.2 NAntKp 的参数在 NAntKp 的定义中,有几个参数需要优化.这些参数分别是蚂蚁数 ,信息素信息重要性因子 ,序启发式信息重要性因子 ,信息素的挥发率 ;控制序启发信息值的参数 , .由于没有数学模型可用,所以我们采用大多数文献中使用的试验方法来确定这些参数的最优值.试验表明, , , , , , ,是一组较好的参数值.4.3 串行执行4.3.1 试验设置为了确定 NAntKp 算法的求解

25、性能和效率,我们实现了 KpAs, KpArAco, AntKnapsack.这些算法的参数按相应文献的说明进行设置. NAntKp 的参数设置为 4.2 中的试验结果.因为所有的算法都是随机算法,所以试验中每个实例运行每个算法 10 次,每次计算的目标函数次数为100000 次.表 1 各算法求最优解的能力比较KpAs KpArAco AntKnapsack NAntKp算例 最好解次数 平均解 方差 次数 平均解 方差 次数 平均解 方差 次数 平均解 方差5.100-00 24381 10 24381 0 0 22248 197.4 4 24352.6 35.7 10 24381 05.

26、100-02 23551 1 23539.3 4.11 0 21212.4 180.7 2 23536 12.8 4 23543.2 6.75.100-04 23991 4 23968.4 20.8 0 21905.9 233.7 1 23950.1 24 4 23976 12.95.100-06 25591 9 25584 22.1 0 23075.3 131.3 3 25532.9 44 10 25591 05.100-11 42545 2 42495.8 31.2 0 39980.4 217.9 1 42468.8 27.3 10 42545 05.100-13 45090 0 4504

27、4.1 23.1 0 42392.9 185.2 0 45063.3 22.6 5 45080.2 10.35.100-15 42927 10 42927 0 0 40228.2 137.6 10 42927 0 10 42927 05.100-22 59802 9 59800.1 6 0 58476.2 176.2 3 59771.3 22.2 6 59789.6 18.15.100-24 61091 1 61058.6 11.4 0 59542.8 153.4 5 61077.2 21.5 10 61091 05.100-26 61538 10 61538 0 0 60052.2 199.

28、7 4 61512.5 29.4 7 61532.3 9.25.250-00 59312 0 59109 29.5 0 50843.5 350.8 0 58939.3 91.7 7 59291.3 33.35.250-02 62130 0 61903.8 48.9 0 53804.9 640.5 0 61750.5 139.6 8 62117 27.45.250-04 58951 0 58742.4 25.7 0 51244 332.6 0 58604 76.5 10 58951 05.250-06 60414 0 60247.6 46.3 0 52308 223.6 0 60066.8 11

29、2.1 8 60400.5 28.55.250-11 109841 0 109598.8 50.7 0 100431.3 509.6 0 109693.7 47 10 109841 05.250-13 109383 0 109050.3 33.5 0 100126.5 469 0 109135 90.9 10 109383 05.250-15 110256 0 109908.4 40.4 0 100917.4 265.1 0 110046.6 98.9 1 110225.7 15.65.250-22 149316 0 149114.4 38.6 0 144104.2 371.7 0 14921

30、3.5 44.3 1 149289.6 17.45.250-24 150353 0 150125.3 31.1 0 145005.9 381.6 0 150301.8 38 0 150341.6 1.35.250-26 148607 0 148421.9 41.8 0 143030.2 223.2 0 148498.2 46.4 4 148589.4 1810.100-00 23064 0 23014.8 37.7 0 20946.9 138.7 0 23001.5 54.2 1 23051.4 4.410.100-02 22131 9 22126 15.8 0 20048.8 190.7 3

31、 22046.2 68.4 10 22131 010.100-04 22751 0 22573.5 37.8 0 20522.6 139.1 0 22575.8 49.7 1 22633.6 44.410.100-06 21875 1 21829.9 19.3 0 19614.1 192.2 0 21675.3 120.7 1 21808.2 24.310.100-11 42344 0 42205.8 34.1 0 36369.9 209.2 0 42222.7 35.7 10 42344 010.100-13 45624 0 45492.6 53.2 0 42528.6 213.7 0 45

32、448.4 48.9 0 45557.4 45.710.100-15 42995 6 42947.5 65.1 0 40109.2 226.5 1 42872.9 56.6 10 42995 010.100-22 58391 9 58387.6 10.8 0 56812.3 162.9 1 58335.5 36.8 2 58359.7 17.310.100-24 60803 10 60803 0 0 58860.3 225.9 8 60801.8 2.5 10 60803 010.100-26 56377 0 56341 8.7 0 54824.4 156.9 5 56340.2 48.4 1

33、0 56377 04.3.2 结果试验串行执行时,记录各算法在10次运算中求得已知最优解的次数,求得的最优解的平均值及方差,耗用的时间的平均值.各表中表目的意义如下:算 例试验采用的计算实例的名称;最优解发布在网页上的已知最优解;次 数在10次运算中求得已知最优解的次数;平均解算法在10次运算中求得的最优解的平均值;方 差算法在10次运算中求得的最优解的方差;时 间算法10次耗用的时间的平均值.新 解NAntKp求得了实例5.250-22的两个新解.这两个新解的目标函数值分别为149332,149334,均比ORLIB库中给出的最大值149316大.这说明在这个实例上,我们的新算法比所有已有的

34、方法求解能力强.求解性能表1说明NAntKp在大部分被测试算例上求最优解的能力显著地超过其它三个算法. NAntKp能求得已知最优解的实例数最多,为28个,其中的13个在每次运行中都能求得已知最优解; KpAs和AntKnapsack其次,但仅为14个,其中分别只有4个和1个实例能求得10次最优解; KpArAco不能求得任何实例的最优解. NAntKp的求解性能最稳定,大多数方差小于20,最多仅达45.7; KpAs次之,多数方差大于20,最多达65.1; AntKnapsack居中,多数方差在40以上,最大者为139.7; KpArAco最不稳定 ,方差最小的高达131.3,最高的竟达64

35、0.5. NAntKp能求解5-250组几乎所有实例的已知最优解,但其它算法对此无能为力,这说明新算法能求解大规模的问题.另外,表1NAntKp栏表明,求解实例规模为10-100,紧度为0.25 和实例规模为5-250,紧度 为0.75时性能严重下降 ,而在其他情况下算法保持非常好的性能表现.这说明问题规模越大,紧度值越大即可行解空间越大或者约束数过多,紧度值过小即可行解空间太小都可能会造成性能下降.出现这种情况的原因是:在可行解空间过大的情况下 ,算法可能需要更长的搜索时间即需要计算更多解的目标函数的次数; 在可行解空间过小的情况下 ,算法需要花费更多时间寻找不同的可行解.虽然新算法在大多数

36、实例上表现优越,然而在实例5.100-22,5.100-26,10.100-22上 NAntKp的性能虽然比KpArAco、AntKnapsack好但比 KpAs稍差.这说明在问题规模较小(3个实例 ),紧度大( ),即在问题比较容易时, NAntKp略逊于KpAs.求解效率由于各算法在同一组内的测试算例上耗用的时间基本相同,故将测试算例分为三组: 相同的算例在同一组.表2统计的是每组算例各次运行所耗用时间的平均值的平均(已经圆整到整数).表2说明在同样的计算要求下NAntKp耗用的时间明显少于其它算法. AntKnapsack 耗用最多时间,因为它在计表 2 各算法耗用的平均时间 算例组 K

37、pAs KpArAco AntKnapsack NAntKp5.100 272 30 884 125.250 1724 190 7762 3810.100 357 30 940 12算待选项的概率时(算法1行5)需要计算信息素信息和启发式信息,而且这两个操作的时间复杂性分别为 , .KpAs次之,因为它在计算待选项的概率时只需计算启发式信息,而且信息素值更新的次数少(因为蚂蚁数多),操作相对简单. KpArAco耗用时间比KpAs少数倍,因为它计算待选项的概率时不需计算信息素信息和启发式信息,计算量少,时间复杂性为 .NAntKp耗用的时间又比KpArAco少数倍,因为它只需对某个项的二值变量

38、进行操作,时间复杂性为 .但NAntKp 在检查可行性及构造一个解的步数方面与其它算法具有相同的复杂性;其次,由于蚂蚁数最少, NAntKp更新信息素值的频率比KpArAco高很多,且操作稍微更耗时些;另外 ,每个解要用局部搜索进行改进.这些就是两者耗时又相对比较接近的原因.静态启发搜索与动态启发搜索从前文可知, KpAs和AntKnapsack 在运行中要动态地计算启发式信息的值,而KpArAco和NAntKp只使用静态启发式信息.那么,这两种方法有什么不同呢?从表1可知, KpAs和 AntKnapsack的搜索能力比 KpArAco强,但比NAntKp低很多.如它们求得最优解的实例数为分

39、别14、14、0、28. KpAs和AntKnapsack 耗用的时间随着增加明显,如从实例组5-100 到10-100,耗用的时间分别从272、884增加到357和940秒.相反, KpArAco和NAntKp耗用的时间随 变化很小,如从实例组5-100到10-100,耗用的时间变化不超过1秒.4.4 虚拟并行执行为了与文献7中的算法比较,我们实现了该文中描述的算法.并将NAntKp实现为适宜并行计算.也就是说,和KpAcs一样 ,每只蚂蚁(slavery)都有自己的CPU、内存( 存储问题实例和信息素信息等),蚂蚁都相同且可相互通信(传递信息素值),系统中有一个主机(master)以决定哪

40、只蚂蚁最好.4.4.1 试验设置KpAcs的参数设置与文献7相同,即蚂蚁数(CPU)为30. NAntKp的蚂蚁数为5,其他参数同节4.3.两个算法的代码都在Founder PC N243S9机上虚拟执行.对每个实例运行10次,每次允许计算的目标函数次数都为100000.4.4.2 结果求最优解的性能NAntKp的最优解的结果与表1的NAntKp列相同.比较表 3 并行求解的比较KpAcs NAntKp算例 最好解次 平均解 方差 时间 时间5.100-00 24381 10 24381 0 10.2 2.75.100-02 23551 3 23540.7 7.3 10.1 2.75.100-

41、04 23991 2 23953 22.2 10.3 35.100-06 25591 7 25570 33.8 10.2 2.75.100-11 42545 0 42467.2 5.2 10.1 2.85.100-13 45090 0 45070.8 0.4 10.1 2.85.100-15 42927 10 42927 0 10.2 2.85.100-22 59802 3 59774.3 19.2 10.4 2.85.100-24 61091 9 61089.8 3.8 10.3 2.85.100-26 61538 10 61538 0 10.3 2.95.250-00 59312 0 58

42、634.9 100 70.7 16.45.250-02 62130 0 61473 43 69.3 13.55.250-04 58951 0 57208.6 136.7 68.6 13.65.250-06 60414 0 60009.4 41.6 68.1 13.95.250-11 109841 0 109271.6 54.5 69 16.35.250-13 109383 0 108634.1 62.6 71 17.85.250-15 110256 0 109245 118.7 69.3 18.45.250-22 149316 0 149106.5 47.8 69.9 17.15.250-24

43、 150353 0 149997.4 31.2 70.2 16.25.250-26 148607 0 148355.6 40.7 71.2 15.310.100-00 23064 3 23058.2 4.5 10.1 2.910.100-02 22131 9 22126 15.8 10.3 2.910.100-04 22751 2 22686.8 48.1 10.4 2.910.100-06 21875 3 21853.2 20.2 10.5 310.100-11 42344 10 42344 0 10.5 3.110.100-13 45624 1 45556.6 52.3 10.5 3.31

44、0.100-15 42995 10 42995 0 10.5 3.210.100-22 58391 1 58357.7 11.7 10.2 3.210.100-24 60803 10 60803 0 10.1 3.110.100-26 56377 9 56374.6 7.6 10.3 3.2表3和1可知, NAntKp求最优解的表现比KpAcs出色. NAntKp能求到28个实例的最优解,其中13个每次运行都能求得; 而KpAcs 只能求得 18个实例 ,其中只有6个每次运行都能求得最优解. NAntKp的表现更稳定,例如它的方差最大为45.7,而KpAcs最大为136.7. NAntKp能求

45、解的实例规模更大, KpAcs不能求得实例组5-250的任何已知最优解.求解效率对比表3的时间列可知, KpAcs耗用的时间是NAntKp的3倍.需要注意的是,NAntKp占用的计算资源少(5只蚂蚁). 这说明NAntKp的求解效率高很多.5 结论本文在文献12定义的信息素模型( 未见利用此模型的文献) 的基础上,提出了一种新的选择概率计算规则 .在这种新规则中,我们定义了一种全新的序启发式信息.使用这种规则的NAntKp算法,构造一个解的时间复杂性为,整个算法的复杂性比现有文献中利用ACO求解MKP的所有算法都要低,而求最优解的能力更强.令人鼓舞的是,本文中的新算法在较短的时间内求出了ORL

46、IB中的算例5.250-22的两个新解.这两个新解的目标函数值明显比现在已知的最优解的值大.NAntKp算法的良好性能促使我们对其做进一步的研究.研究的可能方向之一是将该算法用于求解别的子集问题;之二是对该算法进行建模 ,分析信息素模型的不平衡性与性能的相关性.感谢匿名的审稿专家对本文提出的具有很高价值的审稿意见,感谢Leguizamon的论文 ,感谢哈工大人工智能研究室的王海晶等人在试验程序设计及论文写作过程中对作者的帮助,感谢谢海丹对本文的标点及语法进行的校对.参 考 文 献1 Chu, P., Beasley, J. A genetic algorithm for the multi-d

47、imensional knapsack problem. Journal of Heuristics, 1998, 4: 63862 Dorigo,M., Maniezzo,V., Colorni, A.The ant system: optimization by a colony of cooperating agents. Systems, Man and Cybernetics, Part B, IEEE Transactions on,1996, 26:29423 Dorigo,M., Dicaro,G.The ant colony optimization meta-heuristic/New Ideas in Optimization,London,1999.UK: McGrawHill,1999:11324 Leguizamon,G., Michalewicz,Z.A new version of ant systemfor subset problems/Proceedings of Congress on Evolutionary Computation,Piscataway,1999.NJ: IEEE Press, 1999:145914645 Fidanova,S., Evolutionary

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报