摘 要:为解决基础蚁群算法存在的前期搜索速度慢、后期容易陷入局部最优解的问题,针对服务组合的动态性、不稳定性以及非功能属性限制等情况,提出基于改进蚁群算法的 Web 服务组合优化方法首先分别介绍基本蚁群算法和 L-I-ACO 改进蚁群算法,再将其应用到 Web 服务组合优化建模中,最后通过对比实验测试两种算法的性能。实验结果表明,L-I-ACO 改进蚁群算法性能较好,它弥补了基础蚁群算法的不足,提高了动态组合优化过程中的准确率和效率,更利于选取符合客户要求的服务
关键词:改进蚁群算法;Web 服务组合优化;动态服务组合;L-IACO 算法
中图法分类号:TP393文献标识码:A
1 引言
动态服务组合技术是当前的研究热点,在动态服务组合的整个流程中,需要选取符合用户要求的服务,这涉及选取相同属性的多个服务和组合服务。随着提供的服务不断增多,选取服务问题的范围快速扩大,因此解决动态服务组合中的服务选取问题变得尤为重要[1~2] 。这种解决服务选取问题被称为服务组合优化,是一个NP 难问题。由于Web 服务或许存在状态不稳定、服务非功能属性经常变化等情况,因此动态服务组合中的服务选取问题需要一种能够动态适应各种服务状态变化的最优算法[3] 。
目前,研究的一些主要方法包括贪心算法、遗传算法、神经网算法等。其中,贪心算法简单易用,但往往不能得到全局最优解;遗传算法可以较好地处理复杂的组合优化问题,但计算量较大;神经网络算法可以快速实现并具有适应性,但对服务的不确定性和动态性处理效果有限;传统的蚁群算法有收敛速度慢和易于停滞等缺点,无法很好地解决组合服务优化中存在的多种非功能属性约束的问题[4~6] 。因此,为解决上述问题,本文使用改进蚁群算法进行服务组合优化,其不仅性能良好,而且能应付Web 服务的动态特性。其特点是能适应动态服务优化,在非功能属性值计算过程中可及时调整计算方式,而且需设参数少,操作简单,优化速度快,结果准确性高。
2 基于改进蚁群算法的Web 服务组合优化
2.1 基本蚁群算法描述
蚁群算法(Ant Colony Optimization,ACO) 是由Dorigo 等在1991 年的第一屆欧洲人工生命会议上提出的一种随机搜索算法,该算法是通过模拟大自然中蚂蚁寻找食物的过程而得出的[7] 。蚁群算法是仿生优化算法的一种,其特点有鲁棒性强、并行分布式计算,以及易与其他方法结合等。经过蚂蚁之间互相配合、协调工作,在多个目标优化问题中找到最好的解决方式。该方法在动态组合规划问题、车辆路径问题和旅行商问题等方面已得到广泛的应用[8] 。
采用蚁群算法处理Web 服务组合优化问题的主要方式是蚂蚁的位移过程,用此算法计算Web 服务组合优化模型时,每当蚂蚁路过一个抽象服务下的CS时都需要计算候选CS 的转移概率,候选CS 指蚂蚁所在位置的CS 和下一个AS 中间含有的全部CS。公式所示为该转移概率计算方法:
2.2 L?I?ACO 算法的设计与实现
2.2.1 L?I?ACO 算法状态转移概率
当Web 服务组合需要解决多个非功能性属性约束的问题时,随着循环次数不断增加,基本蚁群算法因其具有收敛速度慢、易于停滞的缺点,容易导致信息素在局限的少量路径上停留,易出现循环停滞现象。这样得到的处理结果只能算是局部优化,所以基本蚁群算法无法很好地解决这个问题[9] 。因此,本文研究了L?I?ACO 改进蚁群算法来解决Web 服务组合优化问题。
2.2.2 L?I?ACO 改进蚁群算法
一个抽象服务含有多个候选服务实例,如图1 所示,多个候选服务存在于2 个节点中间。若优化处理每一个路径,则是一个十分大的计算工程,大幅增加了组合优化问题的难度。但是,若努力缩小优化问题的范围,将大范围分解成小范围,则可降低算法的寻优难度。
L?I?ACO 算法从预计算部分和随机选取寻优部分两个方面展开计算,预计算部分把近似同类属性的服务分到一起,成为一个节点并增加限定要求,去掉属性不相近的服务,以缩小搜索范围。
给同类属性分类时,可采用近似值匹配的方法。若把含有n 个非功能性属性Q 的服务设为s,将代表这些属性的量化值转换成函数Q1(s),Q2(s),…,Qn(s),把含有m 个非功能性属性Q 的服务设为s′,将代表这些属性的量化值转换成函数Q′1(s′),Q′2(s′),…Q′m(s′),若s 和s′服务属性相似,则n≈m,Q1(s)≈Q′1(s′)…,因此可以计算这2 个服务的指标,如公式(6)所示:
C(s,s′)= Σ min(n,m)r =1 (Qr(s)-Q′r(s′))2 (6)
可以看出,若s 和s′相似,则C(s,s′)接近于0,因此可以判断2 个服务的近似度。但此方法并不完善,若s 和s′的匹配度接近0,同时s′和s″的匹配度也接近0,则此时很难自动把该3 个服务规分为一类。这种状况下,需考虑先把s′和s″分到一类,之后继续分配其他服务,待计算好所有服务近似匹配分类后,若发现s″与某一类的大部分服务匹配度接近0,则可把s″分到这一类。
由于动态服务组合以及服务质量的诸多因素具有不确定性,因此对状态转移概率的路径选取进行了改变,具体做法如下:首先,采用改变计算概率值或随机的方式选取服务;其次,筛选出不满足条件的服务,这时就可采用状态转移概率的方式,这一操作可缩小服务选择范围,降低计算难度,提高计算速度,详细算法如下。
假如最大循环次数可用Ncmax 表示;蚂蚁个数用M 表示;最优服务列表用Lij表示,其中i 和j 代表需要服务选择分类的服务组合中的抽象服务,即Sij 中设t=0 代表初始化时间、Nc =0代表循环控制变量、k =0 代表蚂蚁循环变量。
为解决服务组合优化问题,则需使式(19)中的5个目标函数都达到最小,服务组合优化后的解集便是得到的Pareto 最优解集。
3 实验
本实验在两种情况下分别测试基本蚁群算法和L?I?ACO 改进蚁群算法的Web 服务组合优化的成功率,情况1 是任务节点数是20,服务数是48;情况2 是任务节点数是35,服务数是110。每种情况测试8 次。结果如图2、图3 所示。
通过分析图2 和图3 曲线可得:基本蚁群算法在服务数是48 时,随着迭代次数的增加,成功率呈波动状态,不稳定,且总体成功率都在0.7 以下。当服务数是110 时,曲线波动减少,但是成功率较低且一直没有超过0.6,说明基本蚁群算法收敛速度慢,容易陷入局部最优解,无法高成功率地实现最终服务组合优化。L?I?ACO 改进蚁群算法性能相对较好,在服务数是48 和服务数是110 时,都能达到平均成功率90%以上,虽在迭代初期曲线稍有波动,但最后都达到平稳高度,证明本文研究的L?I?ACO 改进蚁群算法既弥补了基本蚁群算法的不足,又能大幅提高了Web 服务组合优化的成功率。
4 结束语
随着互联网技术的发展,网络上涌现了大量种类繁多的Web 服务,但其中很大一部分Web 服务提供的功能是相互重叠的,并且这些服务的功能多数是小粒度的,难以充分满足用户需求。为解决这些问题,Web 服務组合技术应运而生。Web 服务组合将具有相同功能的Web 服务合并为集合,并根据用户需求选择组合多个简单的Web 服务,以形成新的功能更强大的Web 服务。本文旨在提出一种高效方法,从众多的Web 服务数据库中,选择出满足用户需求且满足QoS 限制的Web 服务,进而组合成更优的Web 服务。本文通过对基本蚁群算法进行改进,提出了L?I?ACO 改进蚁群算法,既弥补了普通蚁群算法的不足,又能高效率、高准确率地选取满足客户需求的Web 服务组合。
参考文献:
[1] 倪志伟,方清华,李蓉蓉,等.改进蚁群算法在基于服务质量的WEB 服务组合优化中的应用[J].计算机应用,2015,35(8):2238?2243+2279.
[2] 颉斌,杨扬,王洁莹.基于MAPREDUCE 改进蚁群算法的WEB 服务组合优化[J].微型机与应用,2016,35(8):61?64.
[3] 陈宇锋.改进蚁群算法在WEB 服务中应用与实现[D].长沙:湖南大学,2019.
[4] 曹腾飞,符云清,钟明洋.融合遗传蚁群算法的WEB 服务组合研究[J].计算机系统应用,2012,21(6):81?85.
[5] 承松,周井泉,常瑞云.混沌蚁群算法的WEB 服务组合优化研究[J].计算机技术与发展,2017,27(2):178?181+186.
[6] 夏亚梅,程渤,陈俊亮,等.基于改进蚁群算法的服务组合优化[J].计算机学报,2012,35(2):2270?2281.
[7] 谢琴.蚁群算法在WEB 日志挖掘中的研究与应用[D].重庆:重庆大学,2006.
[8] 马文龙,王铮,赵燕伟.基于改进蚁群算法的制造云服务组合优化[J].计算机集成制造系统,2016,22(1):113?121.
[9] 承松.云计算环境下基于蚁群算法的WEB 服务组合研究[D].南京:南京邮电大学,2017.
[10] 李东星,陈喆,钱双洋,等.改进蚁群算法及其在云服务组合优化中的应用研究[J].计算机应用与软件,2017,34(3):13?20+26.
作者简介:
裴毓( 1989—), 硕士, 助理工程师, 研究方向: 计算机网络。