基于Agent和蚁群算法的分布式服务发现
蚁群算法在分布式系统中的资源调度研究
蚁群算法在分布式系统中的资源调度研究随着科学技术的不断进步,现代计算机科学也在不断发展,其中分布式系统也是应运而生并取得不小的进展。
分布式系统是指将任务分布在多个处理器或计算机上执行,由于其具有高效、灵活、可靠等优点,使得分布式计算成为当今计算机领域的重要领域之一。
而在分布式系统中,资源调度则是一大难题。
近年来,由于计算机技术和互联网技术的飞速发展,使得分布式计算面临着更加复杂和多样的问题,如何高效地进行资源调度成为了分布式系统优化的研究热点之一。
蚁群算法是一种基于群体智能的自适应寻优算法,最初是受到蚂蚁搜索行为的启示而提出的。
蚁群算法以分布式、协作、自适应为基本特征,其主要思想是借鉴蚂蚁群体行为,使多个智能体(蚂蚁)通过相互合作、信息交流共同完成任务。
在资源调度中,蚁群算法可以进行智能化的负载均衡、任务调度等操作,通过合理地分配计算资源可以有效提高分布式系统的性能,在实际应用中也得到了广泛地应用。
首先,蚁群算法可以实现负载均衡。
在分布式系统中,负载均衡是分配任务时必须考虑的问题。
通过蚁群算法,可以通过相互合作、信息交流的方式对分布式系统中的数据进行全局的搜索和处理,实现计算资源的均衡分配。
例如,对于分布式计算领域中经常出现的“背包问题”,蚁群算法可以通过对单个资源和整个系统资源进行全局搜索和计算,获得整个系统的最佳负载均衡。
其次,蚁群算法还可以实现任务调度。
在分布式系统中,任务调度是关键问题之一,尤其是在数据密集型分布式系统中。
通过蚁群算法,在任务请求和任务处理之间,蚁群智能体可以进行自适应的搜索和协作,以确定最佳的任务分配策略。
例如,在高性能计算领域中,蚁群算法可以帮助计算机集群对任务进行动态调度,分析任务的执行情况,选择最优任务调度策略。
此外,蚁群算法还可以实现资源组合优化。
在分布式系统中,根据分布式系统的特点,即节点间通信延迟和不确定性,可以将蚁群算法用于资源组合优化问题中。
通过蚁群算法,可以根据算法的特性进行经济性和效率性的双重优化。
《基于Agent架构的FMS管理与控制系统的设计与实现》
《基于Agent架构的FMS管理与控制系统的设计与实现》一、引言随着现代制造业的快速发展,柔性制造系统(FMS)已经成为企业生产过程中不可或缺的一部分。
为了实现FMS的高效管理和控制,基于Agent架构的FMS管理与控制系统应运而生。
本文将详细介绍该系统的设计与实现过程,以期为相关领域的研究和应用提供参考。
二、系统设计1. 总体架构设计基于Agent架构的FMS管理与控制系统采用分布式、模块化的设计思想,将系统划分为多个Agent模块。
这些Agent模块包括生产管理Agent、设备控制Agent、物料管理Agent等,每个Agent模块都具有独立的功能和任务。
整个系统采用Client/Server架构,实现系统的高可用性和可扩展性。
2. Agent模块设计(1)生产管理Agent:负责生产计划的制定、生产进度的监控和生产数据的统计与分析。
通过与其他Agent模块的交互,实现生产过程的协调与控制。
(2)设备控制Agent:负责设备的开关机、参数设置、故障诊断与排除等操作。
通过与生产管理Agent的协同,实现设备的智能调度和优化运行。
(3)物料管理Agent:负责物料的采购、库存管理、配送等操作。
通过与其他Agent模块的信息共享,实现物料需求的精准预测和供应保障。
3. 通信与交互设计系统采用消息传递机制实现Agent模块之间的通信与交互。
每个Agent模块都具备消息处理能力,能够接收和发送消息,与其他Agent模块进行协同工作。
通信协议采用标准化的接口规范,确保系统的高效稳定运行。
三、系统实现1. 开发环境与工具系统采用C++语言进行开发,使用Visual Studio作为开发工具。
数据库采用MySQL,用于存储系统数据和运行日志。
同时,利用MFC(Microsoft Foundation Classes)框架实现用户界面的开发。
2. 关键技术实现(1)多Agent协同技术:通过消息传递机制实现多个Agent 模块之间的协同工作,确保生产过程的顺利进行。
供应链管理中基于蚁群算法的多Agent合作
1 基 于 蚁 群算 法 的 多 Ag n e t系统
Ag n 是一 种计 算 实体 , et 它驻 留在 某一 环境 下 , 能持 续 自主地 发挥 作 用 , 有 自治性 、 应性 、 会性 、 具 反 社
主动性 等特 征 。在 多 Ag n 环境 中 , g n 不 仅要具 有 个体 智 能性 , 要 具有 自主的 群体交 互 能力 。思维 et A et 还
维普资讯
第 2 6卷
第 1 期
广 西师 范 大学 学报 : 自然 科 学版
Ju n l f a g i r l i ri Naua SineE io o ra n x Noma Unv s y: trl ce c dt n o Gu e t i
供 应链管 理 (u pyc an ma a e n ,C ) 指 对 以一 个企 业 为核 心对 象 而形 成 的物 资服 务 。 目 s p l h i n g me tS M 是
前 主要 方法 还是 集 中式 供 应链 管理 方 式 , 采用 整 数规 划 或者 混 合式 整数 规 划建 立 和求 解 供 应链 中各个 企 业之 间对 各种 资 源之 间的调 配管 理 。 这种 方式 忽 略 了供应链 中各个 部分 之 间的 自主性 和智 能性 , 对集 中 针 式供 应链 管理 存在 的这 些 问题 , 人们 提 出了分 散式 控 制 思想 , 散式 控制 强 调供 应链 中各 个 实体之 间的 自 分
出了一种 模拟 自然 界蚁 群行 为 的模拟 进化 算 法[ 这 种算法 具 有分 布计 算 、 。 信息 正反馈 和 启发式 搜 索 的特
征 , 一种 新 型的 启发式 优化 算 法 。 群算 法 在求解 多种组 合优 化 问题 中获得 了广泛 的应 用 , 调度 、 次 是 蚁 如 二
基于蚁群算法的多Agent任务分配
r t ( + )一 ( 1一 . 0 )・r ( ) △r ( ) + £
间是通 过一 种称 之 为外 激 素 的物 质 进 行 信 息 传 递 ,
从 而能 相互 协作 , 完成 复杂 的任 务. 蚂蚁 在运 动过 程 中, 能够 在它所 经 过 的路径 上 留下该 物质 , 且蚂 蚁 而 在 运动 过程 中能 够感 知 这 种 物 质 的存 在及 其 强 度 , 并 以此 指导 自己的运 动 方 向, 蚁 倾 向于 朝 着 该 物 蚂 质强 度 高的方 向移 动. 因此 , 由大 量蚂 蚁组 成 的蚁群
个 任务 集 t { , , , , 个 Ag n 集 合 P 一 一 1 2 … m} 一 et { , , , ) 即某 问题被 分解成 m个 任务 , 1 2… n , 共有 n 个
这一类典型的组合优化 问题. 究表 明, 求解复 杂优化 问 研 在 题 方 面 该 算 法 具 有 一 定 的 优 越 性 . 先 建 立 了任 务 分 配 的 数 首
一
备等) 来合 理分配任务 , 以期获得最优 的组合.
在 MAS中 , 务分配存 在 以下特 殊性 : 任 () 1 任务 类 型为动 态感 知任务 , 即在 任务 执行 的
1 z , 0 1 策变量 . 立 的 目标 函数如下 所 ; 是 决 建
:
不
过 程 中发现新 的任 务 , 因此 任 务 分 配应 该 是 一 种 动
任务分配问题是影响多 A et g n 系统 ( S 性能 的 MA )
C 一0t i 0 +叫∑ j 1
k一 1
关键 问题 , S的任务分配 问题是指在分布式计 算环 MA
境下 , 有限的 时间内如何 最有效地 利用 资源 ( 材料 、 设
一种基于蚁群算法的分布式智能电网的实时监测技术
148智能电网在物理电网的基础上,利用曾经的传感应用方式,比如测量、计算、信息传导等技术,在完成电网本身优化决策,优化技术现实的目标。
并深入的对客户资源进行合理优化资源配置,保证电能供应充足的同时,实时监测各项指标,确保达到应有的供电目标。
综合了相关技术的集合。
智能电网最主要的特点是实时性,可以使较远距离的人及时得到目标信息,并且在变形信息产生后,可以第一时间作出反应,并且以全自动方式应变发展轨道和趋势,作出相应的反应和解决方案。
解决了劳动力的同时,大大提高了电网的相应响应速度。
1 基本蚁群算法1.1 蚁群算法的原理蚁群算法的由来,是人们在科学研究过程中,吸取了蚁群在类似行为中作出的类似反应,由此,提出一种模拟蚁群运动行为的假设和算法,这种算法比较随机,但是有目标方向的针对性,类似于蚂蚁搜索食物过程中的趋同性,以人工方式的求解,可以区分蚁群系统,我们称这样的算法为蚁群算法。
1.2 蚁群系统模型及其实现蚁群系统的模型是我们理解蚁群算法的关键,我们以图1为例,对此模型稍作修改,即可为模拟蚂蚁的实际行为,由此而产生的蚁群算法做引导。
1.3 基本蚁群算法的优点与不足之处蚁群算法有其先天的优越性,具体表现为:鲁棒性,适应性强,稍作修改便可以数量级的变化适应于其他的算法;并行性,并行性是分布计算的一个进化算法,容易与其他的算法做统分结合;解题空间的搜索:当蚁群算法有一定的应用基础后,个体之间的差异便不再明显,并且趋同于一致。
1.4 蚁群算法研究现状为了克服蚁群算法的不足,人们将蚁群算法与两交换方法有机结合,提高基本蚁群算法的搜索效率.做到对过去知识的慢慢遗忘,强化后来学习得到知识,有利于发现更好的解。
1.5 自适应蚁群算法通过对蚁群算法的分析发现:蚁群算法的主要依据是启发式算法,这种算法利用随机选择策略,使得进化速度较慢,容易出现停滞现象,这是造成蚁群算法的不足的根本原因,因而我们采用确定性选择和随机选择相结合的策略,进化方向已经基本确定,并且适当加大随机选择的概率,以利于对解空间的更完全搜索,从而可以有效地克服基本蚁群算法的两个不足。
最短路径问题的分布式蚁群算法
最短路径问题的分布式蚁群算法最短路径问题是在图中找到两个顶点之间的最短路径的问题。
传统的解决方案包括Dijkstra算法和Floyd-Warshall算法。
然而,这些算法在处理大规模图时可能效率较低。
为了解决这个问题,分布式蚁群算法被提出并应用于解决最短路径问题。
分布式蚁群算法是一种基于蚂蚁行为的启发式搜索算法。
它模拟了蚂蚁在寻找食物时释放信息素的行为。
在这个算法中,每个节点被视为蚂蚁的一个可能路径,而边上的信息素则表示路径的吸引力。
蚂蚁以概率方式选择下一个节点,并在其路径上释放信息素。
路径上的信息素会逐渐蒸发,而蚂蚁则会根据路径上的信息素浓度选择下一个节点。
最终,蚂蚁们会通过多次迭代找到一条最佳路径。
在分布式蚁群算法中,蚂蚁的移动和信息素的更新是并行进行的,每个节点都可以同时执行这些操作。
这使得算法能够扩展到大规模图的解决方案中。
此外,由于每个节点都可以同时计算路径和更新信息素,因此算法的收敛速度也比传统算法更快。
分布式蚁群算法还具有自适应性和鲁棒性。
它可以自动适应网络拓扑的变化,并在节点故障时进行容错处理。
这使得算法能够在复杂的网络环境中有效地找到最短路径。
尽管分布式蚁群算法在解决最短路径问题方面表现出色,但它仍然有一些局限性。
例如,它需要大量的计算和通信资源来支持并行计算和信息素更新。
此外,算法的性能还受到初始信息素分布和参数设置的影响。
因此,在实际应用中,需要仔细调节算法的参数以达到最佳性能。
总之,分布式蚁群算法是一种有效解决最短路径问题的方法。
它通过模拟蚂蚁行为和信息素的释放来找到最佳路径,并能够适应大规模网络的需求。
然而,为了充分发挥算法的优势,仍然需要进一步研究和改进。
蚁群算法在分布式数字参考咨询系统中的应用研究
重要 组成 部分 。目前 D R S已从 单一 方式 向分 布式 方 向发 展 ,比较 有代 表性 的有 中 国高等教 育 分 布式 联 合虚 拟参 考 咨询 系统 ( C VR S ) 、 国家科 学 数字 图书 馆 分布 式参 考 咨询服 务 系统 以及 台湾 地 区 的在线 参 考 咨询 网络合 作 系 统等 n ] 。这 些 系 统都 属 于分 布 式 数
a n d i n t e l l i g e n c e o f DDR S .
Ke y w o r d s : d i s t r i b u t e d d i g i t a l r e f e r e n c e s y s t e m( D D R S ) ; a n t c o l o n y a l g o i r t h m; d a t a m i n i n g ; e x a mp l e d a t a b a s e
中 图分 类 号 : G 2 5 0 . 7 1 文 献标 识 码 : A d o i : 1 0 . 3 9 6 9  ̄. i s s n . 1 0 0 5 — 8 0 9 5 . 2 0 1 3 . 0 9 . 0 2 6
S t u d y o n Ap p l i c a t i o n o f An t Co l o n y Al g o r i t h m i n Di s t r i b u t e d Di g i t a l Re f e r e n c e S y s t e m
( 2 . D e p a r t me n t o f C o m p u t e r S c i e n c e a n d T e c h n o l o g y , Ha n s h a n N o r m a l U n i v e si r t y , C h a o z h o u G u a n g d o n g 5 2 1 4 1) 0 Ab s t r a c t : A c c o r d i n g t o c h ra a c t e r i s t i c s o f d i s t r i b u t e d d i g i t a l r e f e r e n c e s y s t e m ( D D R S ) , t h e p a p e r a n a l  ̄ r z e s a n d d e s i g n s d i s t i r b u t e d
基于蚁群算法的分布式数据库查询优化方法
用蚁群算法优 化查询计划 , 以 多元连接 查询操作 为例 , 进行 了模型建立和算法 实现 。在 O r a c l e 数据 库中进行 了仿 真实验 , 实验结果表明该算法有较好的寻优效果 , 并对分布 式数据库 的查询优化 具有 实际意义。 关键词 :分布式数 据库;查询优化 ;多元 连接 ;蚁 群算法
Cui F e n g f e n g ,Na n Zh e n q i
( C o l l e g e o f C o m p u t e r S c i e n c e a n d E n g i n e e r i n g ,N o r t h w e s t N o r m a l U n i v e r s i t y ,L a n z h o u .G a n s u 7 7 D 。 7 0 ,C h i n a ) Ab s t r a c t :I n t h e d i s t i r b u t e d d a t a b a s e q u e r y o p t i mi z a t i o n ,t he s p e e d o f q u e r y d e p e n d s o n t h e d a t a t r a n s f e r nd a j o i n s e q u e n c e .T h e
0 引言
查询优 化是分 布式数 据库系统 中的核 心问题 。与集 中式
数据库 数据 分布 与 冗余 的特征 , 多元 连接 查询 涉及 多个 不 同 的结点上 的片段 。等值连 接与 自然连接 是应用 最多的连 接操
作, 所 以我们 以研 究多元连 接操作 的查询处理 为例 。 数据库查询相 比 , 分 布式查 询处理增加了不少新 的内容和复杂 性 。不 同的查询处理 方法 , 其查询的通信费用和并行 程度是大 1 蚁群 算法 原理 概述 不 一样 的 。分布式查 询优化 的准则是使 通信费 用最低 和使 响 蚁群 算 法最 初 由意大 利学 者 D o r i g o . M于 1 9 9 1 年 首 次提 应时间最短 , 即 以最小 的总代价在最短的响应 时间内获得需要 出, 其本质 上是一个复杂 的智 能系统 , 它 具有较强 的鲁棒性 、 优 的数据 。分 布式数据库 中数据 的特 征是 : 全局化 和局部化 。数 良的分布式计算机 制 、 易于与其他方法结合 等优 点 。目前对其 据局 部化是将 一个分 布式数据 库上 的代数查询 转换成 一个等 研究已渗透到多个应 用领域 , 并 由解决一维静 态优 化问题发展 价 的段查询 , 并通过 代数 转换 来做进一步 的简化 。全局查询优 到解决多维动态问题 。 化 通过 决策操 作的顺 序 , 结点间 的数据移动 , 以及数据 库操作 仿生学 家的长期 研究 发现 : 蚂蚁 虽没有 视觉 , 但在 运动过 的分布和局 部算法的选择来为输入 的分段查询计划 , 产生一个 程 中通常 会释放 特殊 的分泌物 找到路 径 。当它 们穿过 一个 没 优化的执行计划 , 。 有走过 的路 口时 , 则随机地 选择 一条路径 , 并 在路径 上释放信 文献 [ 3 】 的作者提 出了基于遗 传算法 的分布式数据 库查询 息素 。时 间越长 , 蚂 蚁所 走路径上的信息 量就越小 。当后来的 优化 方 法 , 并 且设 计 了一种新 的查 询执行 计划模 型 。文 献 [ 4 】 蚂蚁再次来到此 路 口时 , 选择信息量较大 的那条路经的概率就 中提 出了采 用改进 的最小生成树 算法 。本文提 出了一 种利用 相对越大 , 从而形成 了一个 正反馈机制 。最优 路径 上的信息 量 蚁群 算法解 决分布是 数据库 系统 中查 询优化 问题的方 法 。此 越来越 大 , 但在其他 路径 上随着 时间的推移 , 信 息 量会 逐渐 减 方法仍 处于初 期研究 阶段 , 但初步研 究 已表 明 , 应用蚁 群算法 小, 整 个蚁群最 终会找到一 条最优路径 。我们 用图 l 进行 了形 进 行分 布式数 据库 的查 询优化 不但 有效 , 而且 具有 良好 的寻 象的描述 , 以此来进 一步 说明蚁群 的搜 索原理 。 优 能力 。多 元连接 查询 涉及 多个 片段 上的查 询 , 由于分 布式
文献检索课程报告题目
91237 91238 91239 91240 91241 91242 91243 91244 91245 91246 91247 91248 91249 91250 91251 91252 91253 91254 91255 91256 91257 91258 理工01 理工02 理工03 理工04 理工05 理工06 理工07 理工08 理工09 理工10 理工11 理工12 理工13 理工14 理工15 专升本01 专升本02 专升本03 专升本04 专升本05 专升本06 专升本07 专升本08 专升本09 专升本10
91201 91202 91203 91204 91205 91206 91207 91208 91209 91210 91211 91212 91213 91214 91215 91216 91217 91218 91219 91220 91221 91222 91223 91224 91225 91226 91227 91228 91229 91230 91231 91232 91233 91234 91235 91236
专升本11 贺晓波
面向主题的搜索引擎的设计与实现 基于vega技术的地下虚拟现实系统研究与实现 基于java的手机模拟系统 矿业权数据库导入导出工具设计与实现 基于Web的矿业权信息发布查询系统设计与实现 基于遗传算法的K-Means空间聚类 K-means算法中的k值优化问题研究 基于空间散乱点的三角剖分算法研究 基于粒子群优化算法的聚类分析 基于变长编码的遗传K均值算法研究 基于空间离散点的曲面重构
学号
91147 91148 91149 91150 91151 91152 91153
彩色图象滤波器设计 场景文本的提取与识别 多机器人编队问题研究 基于FPGA的8位计算机硬件设计与实现 机器人路径规划研究 汽车牌照模式识别 毕业生就业信息网站的构建与实现
采用蚁群算法及移动Agent的网格服务发现设计
E gn e iga dAp l a o s 2 1 , 8 2 ) 171 3 n iern n pi t n, 0 2 4 ( 2 :1 -2 . ci
Ab t a t A rdrs u c ic v r d l ih c mbn s sr c : g i eo r ed so eymo e c o ie wh ACO n bl g n r she a e ng i ls a dmo i a e t sp’ e tdb s do rdcu - e i e
网格系统作为一种大范 围、 跨地域 、 多种类的网 络资源共享方式 , 网格资源是整个系统的基础 。目 前, 对于网格资源的使用方式 中, 将网格资源包装为
服务的方式是最为普遍的一种 。网格系统所提供的
环境等也 同样适用 。 首先 , 借鉴文献 [ 中思想对网格系统进行分簇 , 1 ]
h i l to t esmu a insi i aet t hed sg e e i ed s o e y me h nim sa a lbl n t i n . nd c t ha e i n d s r c ic v r c a s i v i e a d e五ce t t v a
C m u r n i ei d p lai s o p t g er ga A pi t n计算机工程与应用 eE n n n c o
采用蚁 群算法及移 动Agn 的网格服 务发现设 计 et
王啸森 , 张新有
W ANG a s n, Xi o e ZHANG n o Xi y u
西南交通大学 信息与科学技术学院 , 成都 6 03 10 1
S h o f n o m ai n S in e& T c n l g , o t we t io o g Un v r i , h n d 0 . h n c o l f r t ce c o I o e h o o y S u h s a t n i e st C e g u 6 [ 3 C i a J y 1 0 1
基于agent的蚁群算法
I_l_I管理视角·MANAGEMENT
工件1 工件2 工件N
表1 工序完成时间及约束表
OPl 0P2
M2
M3
OP3
On
0P5
0P6
M5
M6 M, 地
M9
5
4
3
4
5
5
8
9
10 12
2
2
3
3
3
4
6
4
5
4
约束
30 47
0Pl
工件l
250
工件2
120
工件3
表2工序成本表
0P2
0P3
个agent。 结合以上蚁群算法的实现,一个人工蚁agent创建主要分为
以下三个步骤:
74 经济论坛2∞8·8
步骤一:创建人工蚁agent。在JADE平台上,agent是通过继 承jade.core.Agent类来实现的。在蚁群算法中的人工蚁agent的 实现也是通过继承这个类来实现。
步骤二:人工蚁agent初始化。人工蚁agent的初始化主要通 过setupO方法来实现的。在这个方法中,添加人工蚁agent相应 的行为。通过分析,我们认为人工蚁agent主要有两种行为:①信 息素浓度的初始化。②蚂蚁的运行。
C
88
122.96
22,30
专家系统
89
124.72
表4蚁群算法分布式计算对比结果
计算机数量 蚂蚁数量
代数
所需时间(分)
70
3
5
600
45
3
10
800
115
工件完成延迟惩罚系数;m。表示工件i的第j个子任务最终选定
一种基于推荐网络和蚁群算法的服务发现方法_谢晓芹(1)
第33卷 第11期2010年11月计 算 机 学 报CH INESE JOURNA L OF COM PU TERSV ol.33N o.11No v.2010收稿日期:2010-06-08;最终修改稿收到日期:2010-08-31.本课题得到国家自然科学基金(60803037,60803036)、国家/八六三0高技术研究发展计划项目基金(2009AA01Z143)、哈尔滨市科技创新人才研究专项基金(RC2010QN010024)和中央高校基本科研业务费专项资金(H EU CFZ1010,H EUCF100602)资助.谢晓芹,女,1973年生,博士,副教授,主要研究方向为服务计算、网络模式下知识处理、社会网络和信息检索等.E -mail:xiexiaoqin@tsingh .宋超臣,男,1979年生,硕士研究生,主要研究方向为服务计算.张志强,男,1973年生,博士,教授,主要研究领域为数据库、信息检索等.一种基于推荐网络和蚁群算法的服务发现方法谢晓芹1) 宋超臣1),2)张志强1)1)(哈尔滨工程大学计算机学院 哈尔滨 150001)2)(黑龙江省电子信息产品监督检验院 哈尔滨 150090)摘 要 服务分散存储在互联网上,随着互联网上Web 服务数量的迅速增长,自动、准确、快速地搜索Web 服务已经成为面向服务计算中的难点和关键问题.文中针对在开放、动态环境下现有的服务发现研究中存在的搜索效率不高、负载不均衡和语义欠缺等问题,提出了一种基于推荐网络和蚁群算法的服务发现方法.首先,该方法构建一个自组织服务推荐网络模型,并给出了相关策略,从而适合大规模开放、动态的网络环境,为服务发现提供了搜索空间和基础.其次,在自组织服务推荐网络模型的基础上,给出了一种基于蚁群算法的服务发现方法,该方法使用推荐有效地提高了服务发现的成功率和查全率,引入蚁群算法的思想有效地解决了服务发现中的网络负载均衡问题.最后,实验结果证明了该方法的正确性和可行性.关键词 服务发现;推荐网络;蚁群算法;负载均衡中图法分类号T P 312 DOI 号:10.3724/SP.J.1016.2010.02093A Service Discovery Method Based on Referral Network and An-t C olony AlgorithmXIE Xiao -Qin 1) SON G Chao -Chen 1),2) ZH AN G Zh-i Qiang 1)1)(Colle ge of Comp uting S cience and T ech nology ,H arbin E ngineer in g Univ er sity ,H arbin 150001)2)(Heilong j iang Pr ov ince Electronic &Inf or mation P rod ucts S up erv ision Insp ection In stitu te ,H arbin 150090)Abstract Services are archived dispersively on Internet.With the rapid increasing number of Web services,how to discov er y the desired Web service auto matically and accurately has been a critical hot issue in ser vice -oriented co mputing.A im ing at such problems as the low search eff-i ciency ,load imbalance and lacking semantic under standing existing in cur rent serv ice discov ery resear ches,this paper pro poses a new service discovery metho d based on referral netw o rk and ant -colony algorithm.Firstly,a self -o rganizing service referral netw ork mo de-l SSRNM is con -structed.SSRNM defines related policies and pr ovides the search space fo r service discovery,thus it can be fit for the dynamic and open env ir onm ent.Secondly ,based on SSRNM,an ant -co -l o ny algo rithm -based service discovery method ABSDA is presented.T his method makes use of recom mendation to im pro ve the success and recall rate of service discov er y,and adopts the idea of ant colo ny alg orithm to so lve the netw ork load balancing pro blem effectively.Finally ,the exper-i m ental results pr ove that this method is corr ect and feasible.Keywords service discovery ;r efer ral netw ork;ant -colo ny algo rithm;lo ad balance1引言面向服务的计算是一种新的计算模型,Web服务及其组装也成为数据和信息集成的有效机制.但是随着Inter net上W eb服务数量和种类的快速增长,自动、准确地搜索Web服务已经成为面向服务计算中的难点和关键问题.由于互联网是一个开放、动态的环境,这给Web 服务发现技术带来了新的难题.首先,因为服务提供者、服务使用者以及服务本身的行为和数量都是无法预知的,他们可以随时加入或退出系统.这就要求服务发现技术能够适应网络的动态拓扑结构.而推荐网络可以很好地适应动态开放的环境[1].其次,集中式服务发现技术无法满足互联网服务搜索的需要.采用UDDI等集中式Web服务搜索技术虽然具有实现简单、易于操作等优点,但随着网络的发展,集中式服务搜索技术的性能瓶颈、单点失败等缺点逐渐显现出来.尤其是在Web服务语义描述迅速发展的今天,集中式服务搜索技术已经不能满足语义匹配的需求.P2P能高效地实现服务的集成及资源的自治,可以构建一种基于智能体的P2P环境下的服务推荐网络[1],采用分布式服务发现技术来解决集中式服务发现技术的缺点.但目前研究中服务发现和搜索技术还存在以下几方面问题:(1)搜索效率方面.集中式服务发现具有性能瓶颈,不支持语义查询.与集中式服务发现不同, P2P环境下服务随机分布在各个节点上,服务定位尤其是稀疏服务资源的定位非常困难.搜索过程往往需要遍历比较多的节点才能获得较高的查全率,导致网络承受很大的带宽压力.为了保证比较高的查全率,无结构P2P网络通常采用泛洪算法,这容易造成网络拥塞,而采用随机游走算法查全率又得不到保证.有结构P2P网络虽然可以准确地实现资源定位,但其在节点加入或离开时需要大量的修复操作,不适合动态、开放的环境.(2)负载均衡方面.由于基于P2P网络的服务发现具有一定的盲目性,造成一些节点遭到频繁访问而消耗较多的主机资源和带宽资源,而另一些节点却长期处于空闲状态.如何调动网络中更多的节点来均摊负载是目前的一个难点问题.(3)语义查询方面.由于进行语义匹配时,对资源消耗极大,因此集中式服务发现技术已经不能满足要求.目前,一些基于P2P网络的服务搜索技术仍然使用关键字或描述文件等描述服务,不支持语义查询请求.而支持语义查询的P2P网络,在大范围进行语义匹配的情况下,会造成主机资源极大的浪费.因此,如何在P2P网络中缩小语义匹配范围是执行语义匹配问题的关键.本文就主要针对以上3方面问题,研究了一种基于推荐网络和蚁群算法的服务发现方法.本研究中的服务是指能完成某种功能、可重用的存储在互联网上的各种软件资源,例如可以是软件构件、Web 服务等实体.本文通过将服务映射为相应的服务节点,在此基础上构建了自组织服务推荐网络,通过推荐解决了现有研究中服务发现具有盲目性的问题;还基于服务推荐网络提出了搜索方法A BSDA,利用蚁群算法实现了网络的负载均衡.本文提出的服务发现方法和模型能够用于互联网中各种软件资源的共享和查找,可以应用到相关搜索引擎中,为实现互联网下服务发现和组装提供技术保证.本文第2节给出自组织服务推荐网络模型的描述和构建方法;第3节给出基于推荐网络和蚁群思想的服务发现方法;第4节给出实验数据用以验证本方法的可行性;第5节总结本文并指出下一步的工作.2自组织服务推荐网络模型大量的服务资源分散存储在互联网上,实现组装的前提是要实现对这些服务资源准确、自动的发现.但目前的服务发现方法存在效率不高、负载不均衡等问题,缺乏对这些服务资源有效的管理方法.借鉴推荐思想,本研究建立了一个自组织服务推荐网络(Self-or ganization Service Refer ral Netw ork M odel,SSRNM),为后续的服务发现提供了搜索空间,也提供了一种互联网下服务资源的共享管理模型,并解决了存在的上述问题.自组织服务推荐网络模型是一种无结构P2P网络,具有较强的动态性且不需要路径恢复的算法,不存在单点失败、性能瓶颈等问题.本节将给出模型的描述和构建方法.2.1模型描述与相关概念定义1.自组织服务推荐网络模型可表示为S SRN M=(N s,R s,P olicies).其中,N s={node}是服务节点node的集合;R s={S imilar ityR elation, N eighbor Relation}是服务节点之间关系的集合,包括相似关系和相邻关系.Policies表示模型定义的所有策略的集合,包括服务标记策略、服务集划分策2094计算机学报2010年略、邻居选择策略和邻居列表更新策略.具体策略描述将在212节给出.定义2.服务节点是一个7元组:Node=(typ e,SS ynsetIDs,I P,Agent,Neighbor L ist, S erviceSet,SK eyw ords),其中ty p e I{S P,SC},用来描述服务节点类型,SP 表示服务提供者类型,SC表示服务消费者类型. SSy nsetI Ds是服务的语义标识符集合.I P表示服务所在主机的IP地址.S K ey w or ds是描述服务的一组关键字.N eighborL ist表示邻居列表.A gent是运行在节点上的智能体,它负责发布SS y nsetI D并响应服务查询请求,给出匹配信息或推荐.S er viceSet 表示服务集.定义3.邻居.假设当服务搜索成功时的搜索路径Path=3sn m,sn m+1,,,sn n4,称sn i和sn i+1 (m F i<n)之间具有相邻关系,sn i+1是sn i的邻居.形式化表示为N eighbor Relation={3sn i,sn i+14|sn i I P ath H sn i+1IP ath H m F i F n-1}.定义4.邻居列表(N eighborL ist).当前服务节点的所有邻居构成的集合称为邻居列表.每个节点维护一个邻居列表.定义5.服务集(Ser viceSet).设sn为一个服务节点,它的服务集是指与该节点具有相同SSy nsetI D值的所有服务节点的集合,可表示为Serv iceSet={node k|(node k.S Sy nsetI Ds Hsn.SS y nsetI Ds X null)H1F k F n},其中n表示SSRNM中的服务节点个数.定义6.相似关系.设sn i,sn j为两个服务节点,如果sn i,sn j属于同一个服务集,或者一个节点在另一个节点的服务集中,则称sn i和sn j是相似的.形式化表示为Similar ity Relation={3sn i,sn j4|(sn i I sn j.Ser viceSet G sn j I sn i.Serv iceSet G(sn i I sn k.S erv iceSet H sn j I sn k.S er viceS et))H 1F i F n H1F j F n H1F k F n H i X j X k},其中n表示SSRNM中的节点个数.服务节点的7个元素之间相互约束,具有以下依赖关系:(1)标记依赖.设sn为一个服务节点,通过服务标记策略,sn.S K eyw or ds被映射为sn.S Sy nsetI Ds,表示为sap:sn.S K ey w or ds y sn.SSy nsetI Ds.(2)类型依赖.设sn为一个服务节点,ty p e的不同取值决定了SS y nsetI D和S erv iceSet的取值,具体约束条件为if sn.ty p e=SC thensn.SSy nsetI Ds和sn.Ser viceS et为空;if sn.ty p e=S P thensn.SSy nsetI Ds和sn.Ser viceS et不为空;定义7.服务信息度(S I G)是指一个节点包含某一服务的可能程度.设服务节点sn i包含了服务s j,则sn i节点的服务信息度表示为S I G i j.一个节点包含几个服务,则可以有几个服务信息度.在本研究中,服务信息度是一个变量,类似于蚁群算法中的信息素的概念.在进行网络初始化时,为其指定初始值.随着搜索次数的增多其值会不断变化.定义8.服务信息向量(SIV).设服务节点sn 包含n个服务s1,s2,,,s n,则sn节点的服务信息向量SI V=(S IG1,SI G2,,,SI G n).定义9.社交度(SD).设服务节点sn包含n 个服务s1,s2,,,s n,则sn所包含的所有SI G之和称为该节点的社交度.表示为S D(sn)=E n i=1S IG i(1)每个节点利用定义的策略提供或消费服务,整个过程是自组织的.服务消费者节点只能根据本地邻居列表的服务信息度给出推荐,而服务提供者节点既可以响应服务请求也可以给出到其它节点的推荐.2.2模型策略SSRNM模型中定义的相关策略用于模型的构建和管理,下面阐述各个策略.策略1.服务标记策略.服务关键字是用来描述服务的一组关键字.服务标记策略用于将描述服务的关键字映射为语义标识符SSy nsetI D,实现服务的语义标记,从而消除服务关键字的歧义性.在WordNet中最主要的关系是/is-a0关系,每个同义词集共享同样的属性定义,并使用sy nsetI D来唯一标记.本研究通过/is-a0关系或同义词集将服务关键字映射为S Sy nsetID.本策略包含两个规则,设sn是服务节点,key1和key2是两个关键字,key1I sn.SK eyw ords,k ey2I sn.SK eyw ords.规则1.若key1是key2的下位概念,且key1和key2在WordNet中对应的标号分别为synsetID1和sy nsetI D2,则用synsetID1来标记服务,即sn.SSy nsetI Ds=sn.SSy nsetI Ds G sy nsetI D1.209511期谢晓芹等:一种基于推荐网络和蚁群算法的服务发现方法规则2.若key1和k ey2属于同一个同义词集,对应的同义词集标号为sy nsetI D,则使用sy nsetI D 来标记该服务,即sn.S SynsetIDs=sn.S Sy nsetID s G synsetID.使用服务标记策略不仅可以有效地消除关键字的歧义性,而且还有助于建立服务集.策略2.服务集划分策略.服务集划分策略用于将服务提供者节点加入到相应的服务集中,有利于提高搜索过程中的查全率.在SSRNM的构建过程中,本研究使用WordNet将关键字映射为SSy nsetI D,并对映射后的服务节点进行分类,将具有相同SSy nsetI D的服务节点组成服务集.在SSRNM中的每个服务节点维持一个服务集,这样当一个服务节点被搜索到时,可以对该服务节点的服务集内的所有其它服务节点采用泛洪算法进行二次语义查询,从而能进一步满足搜索算法的查全率要求.而且,每个服务集不需要超级节点进行代理,不存在单点故障.服务集划分策略表示为:设sn1,sn2为两个服务节点,如果满足下列条件:sn1.S Sy nsetI Ds H sn2.S Sy nsetID s X null,则执行下列操作:(1)sn1.Ser viceSet=sn1.S erviceSet G sn2.(2)sn2.Ser viceSet=sn2.S erviceSet G sn1.策略3.邻居选择策略.节点使用邻居选择策略决定服务发现过程中下一跳的地址.邻居选择策略是自组织服务推荐网络的关键策略,用于减少服务发现过程中的盲目性,提高搜索成功率.设sn为服务节点,邻居选择策略表示为(1)查看sn的邻居列表中,是否存在拥有被查询服务信息的节点.如果存在,选择服务信息度最大且未被查询过的邻居节点作为查询节点.(2)如果不存在拥有被查询服务信息的节点,则选择社交度最大的节点作为查询节点.SSRNM中的每个节点维持一个邻居列表,并使用SI V描述一个给定的邻居.使用该列表,一个节点应用邻居选择策略决定向哪个节点发布或搜索服务.策略4.邻居列表更新策略.邻居列表更新策略主要用于邻居的增加与删除,实现网络的动态管理.典型的P2P网络搜索算法是,P2P节点向其它节点广播查询请求,其它节点继续向前广播请求[2].与其不同,在推荐网络中,节点接收到查询请求后,并不向前广播请求而是向发出请求的节点返回一个推荐,发出查询请求的节点根据推荐调整搜索策略继续搜索.在本文中,SSRNM模型中的每个节点维护一个邻居列表用以保存其它节点的服务信息度,并通过邻居列表寻找满足需求的服务提供者.节点之间通过邻居列表相互通信.邻居列表的大小是固定的,节点通过对邻居列表的调整实现网络拓扑的改变.当邻居数量达到一定阈值时,通过剔除一些使用率低的邻居节点来实现邻居列表的更新.邻居列表通过搜索过程或服务发布过程得到更新,不直接依靠其它节点.邻居列表更新过程操作简单,不需要定义路径策略.采用以下2种方法对邻居列表进行更新:(1)当一个节点sn1收到另一个节点sn2发来的查询请求或查询服务信息时,如果发布请求的节点不在sn1的邻居列表当中,即满足下列条件时:sn2|sn1.N eighborL ist,这个节点sn2将会被加入到sn1的邻居列表中.(2)当一个节点sn1收到一个推荐sn2时,如果被推荐的节点sn2不在sn1的邻居列表当中,即满足下列条件时:sn2|sn1.N eighborL ist,那么这个推荐sn2将会被加入到sn1的邻居列表中.使用邻居列表更新策略可以实现网络的自组织,而且节点之间的交互是异步的和自治的,一个被请求的节点可以提供服务或者给出推荐以响应另一个节点的请求.2.3SS RNM构建过程SSRNM的构建过程和服务搜索过程是自组织的.SSRNM的构建过程实质也是一个初始化过程,主要完成服务发布和服务分类2部分功能.在初始化过程中,每个节点被随机指定若干个邻居. SSRNM初始化过程[3]如下:1.参数初始化.n是网络节点数,C是第一个服务节点发布服务信息时,包含该服务信息的节点的覆盖率.2.随机选择一个服务提供者节点,该节点使用服务标记策略将关键字映射为同义词集标号(sy nsetI D),发布数量(具有某一服务sy nsetI D信息的节点的数量)为0.3.如果接收到推荐,更新服务提供者节点的邻居列表,检查发布数量是否达到n C(C为调节参数).如果已达到,向服务集内所有节点发送服务集信息,转到步6.如果未达到,使用邻居选择策略选择一个邻居,并将服务的sy nsetI D发布到该邻居节点上,发布数量加1.在使用邻居选择策略选择邻居节点时,如果邻居节点在本节点的服务集中,那么该邻居节点将被忽略.2096计算机学报2010年4.当邻居节点接收到服务信息,如果服务提供者节点不在该邻居节点的邻居列表中,服务提供者节点将会被追加到该邻居节点的邻居列表中.邻居节点更新邻居列表中服务提供者节点的信息度.检查邻居节点的sy nsetI D与服务提供者节点的sy nsetI D是否相同.如果相同,返回服务相同标志;否则,邻居节点返回一个推荐.5.服务提供者节点检查返回结果,如果是推荐转到步2,如果是服务相同标志,则这两个节点应被划分到同一服务集中.服务提供者节点将相应的邻居节点加入到服务提供者节点的服务集中,并将服务集信息发送到邻居节点中.该邻居节点变成新的服务提供者节点,继续发布服务的sy ns etI D,转到步2.6.检查是否还存在未发布服务sy nsetI D的节点.如果有,从中选取一个服务节点发布服务s y nsetI D,转到步1.如果没有,说明所有节点都完成了发布,初始化过程结束.3基于SSRNM的服务发现方法3.1问题描述SSRNM给出了服务搜索空间,因此服务发现问题可以表示为:给定SSRNM,假设服务查询请求是一个或多个关键字key w or ds,要在SSRNM中找到相应的服务节点N ode.3.2算法基本思想为了阐述方便,我们将基于SSRNM的服务发现方法分为两部分进行论述.首先先阐述基于推荐的服务发现基本算法(Basic Serv ice Discovery Algirhtm,BSDA),在此基础上,将推荐和蚁群算法相结合,提出基于蚁群的服务发现算法(Ant-Algo rithm-Based Service Disco very Alg orithm, ABSDA).服务发现基本算法BSDA的基本思想是:首先,查询请求中的关键字key w or ds通过语义匹配被映射为一个或多个语义标注SS y nsetI D.然后,使用邻居选择策略选择接受节点.若接受节点满足查询请求,则查询结束.否则,接受节点返回若干推荐.搜索节点将这些推荐更新到邻居列表后,继续查找.如果所有邻居都已被搜索,则查询失败.然而这个基本方法虽然能有效地提高服务搜索的效率,但在使用邻居选择策略进行邻居选择时,即使选择的邻居负荷过重或者网络拥塞,仍然会向该邻居节点发出查询请求.针对这一现象,本研究引入蚁群算法以避免网络拥塞,从而提出基于SSRN M 的服务发现的增强方法:ABSDA.ABSDA算法优点在于将推荐网络和蚁群算法进行了有效地结合,并且蚂蚁只根据目标节点列表进行寻路,操作简单且每只蚂蚁行为是自组织的.ABSDA方法利用蚁群算法的思想,将整个服务发现的过程类比为蚂蚁觅食的过程,并将服务提供者节点发布的服务信息度存放到搜索路径上的各节点中,相当于是蚁群算法中的/信息素0,根据蚂蚁觅食行为的特性,通过蚂蚁释放信息素的正反馈机制来指导搜索前进的方向,从而大大提高随机游走算法的查询效率.传统的蚁群算法在查询过程中,蚂蚁只根据本地信息素来决定下一跳节点,类似于马尔可夫过程.而本研究中蚂蚁在查询过程中,不仅根据本地服务信息度还考虑到蚂蚁本身携带的信息来决定下一跳节点.这样,实现了蚁群算法和推荐网络的有效结合,进一步提高了查找效率.蚂蚁在搜索到目标节点后,生成一只回溯蚂蚁沿原路径返回并更新路径上各节点的服务信息度,在返回到源节点后便死亡.本研究借鉴了文献[4]的信息素更新的思想,对于某一查找成功的服务,使用以下公式更新该服务在查询路径上各节点的服务信息度:S I G k(n)=SI G k(n-1)(1-S)+S(2)SI G k(n)=S I G k(n)(1-Q)(3)式中:S为常量且0<S<1,Q是信息度挥发因子且Q<1,SI G k(0)为常量,k表示查找成功路径上的节点,n表示第n只回溯蚂蚁返回该节点.文献[4]中,信息素初始值设置为1,且当有命中消息包从某个邻居返回时,节点对所有邻居的信息素进行更新.而在本文中,只对该邻居相应的服务信息度进行更新,且服务信息度初始值设置为012.本研究中0<SI G k(0)<1.假设0<SI G k(n-1)<1,由式(2)得SI G k(n)=SI G k(n-1)(1-S)+S=SI G k(n-1)+S[1-S I G k(n-1)].因为0<S<1且0<SI G k(n-1)<1,所以1> S IG k(n)>SI G k(n-1).可见式(2)可以有效地避免服务信息度的无限累加.通过服务信息度的挥发,可以使邻居列表中一些不常使用的邻居的服务信息度逐渐减少.当邻居的服务信息度低于某一阈值时,节点便将该邻居从邻居列表中删除.在邻居列表中,邻居的服务信息度采取类似蚁群算法中信息素的更新方法.服务信息度不可能无限大,因此当服务信息度增大到一定程度后便接近于某一定值.根据式(2)本研究中服务信息度最大值无限接近于1,并且服务信息度每隔一定时间段根209711期谢晓芹等:一种基于推荐网络和蚁群算法的服务发现方法据式(3)进行挥发.在传统的蚁群算法中,蚂蚁根据当前节点的信息素决定下一跳的地址,整个搜索过程可以被视为马尔可夫过程.本研究为了进一步提高搜索效率,将推荐引入到蚁群算法中.在服务发现的过程中,蚂蚁保存有一个类似于节点的邻居列表的目标节点列表.当蚂蚁到达一个节点后,节点根据邻居选择策略给出一些推荐,蚂蚁将这些推荐更新到蚂蚁的目标节点列表中.蚂蚁查看目标节点列表中是否存在拥有目标服务的节点信息,如果不存在,选择社交度最大的节点作为下一跳地址;如果存在,使用式(4)计算P i,以概率P i选择下一跳的地址:P i=S I G iE Nk=1SI G k(4)式中:N表示蚂蚁的目标列表中包含目标服务的节点的个数.这样即使蚂蚁不知道目标节点的信息,也可以通过社交度消除搜索的盲目性,进一步提高查找效率.在知道目标节点的情况下,可以通过式(4)实现网络流量的调节,充分利用网络资源.3.3ABSDA算法基本BSDA服务发现算法的形式化描述如下.算法1.基本的BSDA算法.输入:自组织服务推荐网络SSRN M,查询请求key wor ds 输出:服务提供者节点N ode{将查询请求key w ord s映射为sy ns etI D s;选择一个服务消费者节点consumer,使得sy nsetI D s I cons umer.S Sy ns etI D s;int sear chCount=0;w hile(consumer.neighbor list!=null&&sear chCount<n*C){receiv eN ode=consumer.selectN ode();//使用邻居选择策略选择接受节点consumer.sendQuer y(receiv eN ode);//向目标节点发出查询请求if(r eceiveN ode.satisf y()){//如果接受节点满足请求的服务retur n(r eceiveN ode);//查询成功}else{ref er r al=receiv eN ode.selectN ode();//接受节点使用邻居选择策略返回推荐consumer.up dateN eighbor L ist(r ef er ral);//消费节点更新邻居列表}sear chCount++;}}而增强的ABSDA算法过程为:首先,请求被映射为一个或多个语义标识符.生成查询蚂蚁,节点使用邻居选择策略选取服务信息度较大的几个节点(或社交度较大的几个节点)更新到查询蚂蚁的目标节点列表中.查询蚂蚁根据式(4)决定下一跳的地址.接受节点如果满足查询请求,查询成功.否则,查询蚂蚁将访问的节点从目标节点列表中去除.访问节点根据邻居选择策略给出推荐,蚂蚁将这些推荐更新到目标节点列表中,继续查找.如果蚂蚁的目标节点列表都已被搜索,则查询失败.蚂蚁在运动过程中,保存经过的路径.当蚂蚁到达目标节点后,由回溯蚂蚁沿着原路返回并更新路径上的服务信息度.返回源节点后,蚂蚁死亡.具体算法如下.算法2.增强的ABSDA算法.输入:自组织服务推荐网络SSRN M,查询请求key wor ds 输出:节点N ode{将k ey w or ds映射为sy nsetI Ds;选择一个服务消费者节点consumer,使得sy nsetI Ds I consumer.SSy nsetI D s;创建查询蚂蚁s ear chA nt;selectedN od es=consumer.s electM ax N odes();sear chA nt.up d ateN odelist(selected N odes);//查询蚂蚁根据节点的邻居列表更新蚂蚁的目标//节点列表int searchCount=0;w hile(sear chA nt.nodelist!=null&&sear chCount<n*C){nex thop=s ear chA nt.selectN ex thop();//查询蚂蚁选择下一跳地址sear chA nt.move(nex thop);//查询蚂蚁移动到下一跳if(nex thop.satif y()){//满足查询请求置查询成功标志ser chA nt.up datePath();//查询蚂蚁更新路径上的服务信息度sear chA nt死亡;retur n(nex thop);}else{searchA nt.up dateN odelist(nex thop.reff er als());//更新蚂蚁目标节点列表sear chA nt.r emov eN ode(nex thop);//从目标节点列表移除当前节点sear chA nt.r eser vePath(nex thop);//保存路径}s ear chCount++;}sear chA nt死亡;}2098计算机学报2010年。
关于基于Agent的分布式计算探讨
关于基于Agent的分布式计算探讨作者:于海波来源:《无线互联科技》2013年第08期摘要:Agent在IT界具有多种不同的定义,根据Agent的含义以及特点,可以阐释并分析Agent的结构特征,从而可以设计出一个以Agent为基础的分布式计算理论与计算模型。
在Agent的结构内部进行计算模型的细化就能够更进一步地进行Agent的精确化分布计算。
本文将主要探讨分析基于Agent的分布式计算方式以及应用。
关键词:Agent;分布式计算;电子商务在科学技术史上,最初运用分布式计算主要是解决单机技术无法承担大规模的复杂数据将多台机器的缺陷应运而生的。
随着社会的不断进步和网络科技的进步,人们的日常生活越来越离不开网络,互联网技术将全球连成一个整体,分布式的计算方式也逐渐扩展到网络服务与数据共享的层面。
但是随着网络信息量、电子邮件、数据信息等内容的不断增加,呈现指数型上涨趋势的信息量给人们的承受能力带来了新的挑战。
而Agent技术的发展能够满足人们对信息的不同需求和智能化取舍,为用户提供了相应的服务软件,发展前景十分广阔,Agent技术的发展促进分布式计算进入新的时代。
1 Agent的含义和特点Agent的概念具有广泛性意义,主要是指有自我适应以及自治能力的特殊软件。
在计算机领域内,可以把它看成一种特殊的软件实体,能够进行自主完成任务以及在多个网络节点上迁移或者驻留。
从它的含义来看,主要有以下几个特点:⑴自治性。
Agent是一个具有独立特性的软件实体,在执行自身的行为时能够自我控制并独立执行,在决定自身的行为时其他软件无法干预。
⑵策略性。
当用户的Agent在不同的环境下工作时,不会因为外界环境的改变而改变自身的行为,总是在工作中自我寻找优化策略完成工作。
⑶必然性。
Agent的自治功能并不会造成系统的不稳定性,在工作中寻找最优化的策略时,只要符合条件,就会继续履行自身的承诺服务,所以Agent在选择策略方面具有必然性。
基于任务权重蚁群算法在Agent迁移中的应用
摘
要 : 对 移 动 A e t 路 径 迁移 的 问题 , 出 了基 于 A e t 务 权 重 的 改进 蚁 群 算 法 。 方 法 是 将 A e t 针 gn 在 提 gn 任 该 gn 任务 权 重 的思 想 应 用
到 蚁 群路 径信 息素 的 更 新 当 中,使 任 务 权 重 较 大的 A et 权 去 更新 所 经过 的路 径 上 的信 息 素 ,从 而提 高 该 算 法 的 全 局搜 索 能 gn 有
E— al z n x a g u@ 1 3.o l m i:he g i n y 6 c n
_
Z HENG a g y P Xi n — u, ENG n . p ia o mp o e n o o y p i z t n a g r t m b s d n u y weg t n Ag n Yo gAp l t n i r v d a t c ln o t ci mi a i l o i o h a e o d t i h i e t
江南大学 信 息工程学院 , 江苏 无锡 2 4 2 1 12
De a t n f I fr t n En i e r g Ja g a n v r i , u i Ja g u 2 41 2, hห้องสมุดไป่ตู้n p rme t o n o mai g n e n , in n n U ie st W x , in s 1 2 C i a o i y
基于改进蚁群算法的可信服务发现
2 0 1 3年 l O月
通
信
学
报
、 , 0 l l 3 4 N o . 1 O
J o u r n a l o n Co mmu n i c a t i o n s
Oc t o b e r 2 0 1 3
d o i : 1 0 . 3 9 6 9  ̄ . i s s n . 1 0 0 0 — 4 3 6 x . 2 0 1 3 . 1 0 . 0 0 5
( 1 . So twa f r e Ce n t e r , No r t h e a s t e r n Un i v e r s i t y , S h e n y a n g 1 1 0 0 0 4 , Ch i n a ;
2 . L i a o n i n g Ke y L a b o f Ne t wo r k S e c u r i t y a n d C o mp u t m g T e c h n o l o g y , Da l i a n Ne u s o f t I n f o r m a t i o n I n s t i t u t e , D a l i a n 1 1 6 0 2 3 , C h ma )
为蚁群算法在 分布 式环 境下服务发现 的应用研 究提供 了一种 新思路。实验结果表明, 本 算法 在各种常见复杂网络
环境下仍可保证较 高的可信 服务查准率和更高 的综合服 务发现效 率,通过对实验数据 的分析和解释得 到了若干有 益的结论 ,为进一步 的研究 工作 奠定 了基础 。 关键词 :服务发现 ; 自组织 网络 ;可信服 务;动态 蚁群策略;子蚂蚁 策略
Ab s t r a c t :Ai mi n g a t t h e p r o b l e m o f s e r v i c e d i s c o v e r y i n u ns t r u c t u r e d P 2 P n e t wo r k ,a t r u s t wo r t h y s e vi r c e d i s c o v e y r
一种基于多蚁群遗传算法的分布式数据库查询优化方法[发明专利]
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 201811426336.9(22)申请日 2018.11.27(71)申请人 常州市武进区半导体照明应用技术研究院地址 213164 江苏省常州市天安数码城9号楼101室(72)发明人 马锐 王鑫 苏静 濮斌 (74)专利代理机构 常州佰业腾飞专利代理事务所(普通合伙) 32231代理人 刘松(51)Int.Cl.G06F 16/2453(2019.01)G06F 16/2458(2019.01)G06N 3/00(2006.01)G06N 3/12(2006.01)(54)发明名称一种基于多蚁群遗传算法的分布式数据库查询优化方法(57)摘要本发明公开了一种基于多蚁群遗传算法的分布式数据库查询优化方法,属于互联网数据库技术领域,包括建立分布式数据库构架,对分布式数据库查询代价进行分析后,将蚁群算法升级为多蚁群算法,利用了平滑机制及多蚁群间互相学习机制来避免陷入局部最优和早熟现象,从而提高了整个算法的全局搜索能力,解决了采用多蚁群算法提高分布式数据库查询效率技术问题,本发明引入多蚁群算法,并在算法中提出了“学习算子”,让子蚁群相互学习,防止陷入局部最优,提高算法性能,让算法能够获得更好的全局最优解。
权利要求书2页 说明书5页 附图1页CN 109669957 A 2019.04.23C N 109669957A1.一种基于多蚁群遗传算法的分布式数据库查询优化方法,其特征在于:包括如下步骤:步骤1:建立分布式数据库构架,设定在分布式数据库构架中的每一个数据库均为一个点,发起数据查询的点为初始点;步骤2:从初始点开始,随机向任意一个点A发起查询,点A向另外一个任意点B发起查询;步骤3:重复执行步骤2,最终产生染色体种群;步骤4:对染色体种群进行迭代:对染色体按概率进行变异和交叉操作,在产生数个新染色体;步骤5:解码所有新染色体,将所有新染色体转换成查询路径,计算查询路径的目标函数值,以此来标定新染色体的适应度值;步骤6:根据轮盘赌法和各个新染色体的适应度值进行选择操作,生产迭代后查询路径;步骤7:重复执行步骤4到步骤6,直到结束条件得到满足,将最后产生的迭代后查询路径作为最优查询路径输出;步骤8:用最优查询路径对信息素矩阵进行初始化处理,利用遗传算法来对初始信息素分布进行有效确定;步骤9:根据多蚁群算法进行查询路径优化,其包括如下步骤:步骤S1:设置开始的点,开始的点相当于发出查询请求的点;步骤S2:按照转移概率的公式进行点的转移,同时更新路径;步骤S3:判断蚂蚁是否已完成所有目的点的搜索:如果完成搜索,则执行步骤S4;否,则继续让蚂蚁进行搜索并执行步骤S3;步骤S4:判断是否蚁群内所有的蚂蚁都已经完成:若没有,则返回步骤S1;如果蚁群内所有蚂蚁都进行了搜索,则计算得到每条路径的具体目标函数值;步骤S5:判断当前迭代数是否大于蚁群开始信息素平滑机制的迭代数:若是,则按照信息素平滑机制操作;步骤S6:判断当前迭代数是否大于蚁群间开始学习信息素的迭代数:若是,则按照学习算子规则进行操作;步骤S7:判断当前迭代数是不是符合了结束条件:如果没有符合,返回步骤S1;符合,则输出结果。
2010-基于Agent和蚁群算法的分布式服务发现
ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software, Vol.21, No.8, August 2010, pp.1795−1809 doi: 10.3724/SP.J.1001.2010.03669 Tel/Fax: +86-10-62562563© by Institute of Software, the Chinese Academy of Sciences. All rights reserved.∗基于Agent和蚁群算法的分布式服务发现郑啸1,2+, 罗军舟1, 宋爱波11(东南大学计算机科学与工程学院,江苏南京 210096)2(安徽工业大学计算机学院,安徽马鞍山 243002)Distributed Service Discovery Based on Agent and Ant Colony AlgorithmZHENG Xiao1,2+, LUO Jun-Zhou1, SONG Ai-Bo11(School of Computer Science and Engineering, Southeast University, Nanjing 210096, China)2(School of Computer, Anhui University of Technology, Maanshan 243002, China)+ Corresponding author: E-mail: xzheng@Zheng X, Luo JZ, Song AB. Distributed service discovery based on agent and ant colony algorithm. Journalof Software, 2010,21(8):1795−1809. /1000-9825/3669.htmAbstract: This paper suggests an ant-like agent service discovery mechanism. There are two types of agentscooperating to search target services: Search Agent and Guide Agent. Search Agent simulates the behavior of an antthat searches for services on the network. Guide Agent is responsible to manage a service route table that consists ofpheromone and hop count, instructing Search Agent’s routing. Volatile pheromones make Search Agent sense thechange of topology and service resource, and hop count makes them know the distance. Semantic similarity is alsointroduced in routing selection as a heuristic factor, which improves the recall. The life-span control policy makesquery traffic controllable. With system size increasing, the query traffic would increase slightly and has an upperbound. The result of simulation shows that the suggested mechanism is scalable and adaptable enough to be suitablefor large-scale dynamic computing environments.Key words: service discovery; peer to peer network; agent; ant colony algorithm; routing mechanism摘要: 提出一种类似蚂蚁觅食活动的Agent服务发现机制.有两类Agent 合作寻找目标服务:Search Agent和Guide Agent.前者模拟蚂蚁的行为在网络上发现目标服务,后者管理一个由信息素和跳数组成的服务路由表,用以指导Search Agent的行进路线.动态变化的信息素可以让Search Agent感知到网络拓扑和服务资源的变化,而跳数可以让它们了解距离.路由选择中还使用语义相似度作为启发因子,用于提高召回率.Search Agent生命周期控制机制∗Supported by the National Natural Science Foundation of China under Grant Nos.60773103, 60903161, 60903162, 90912002 (国家自然科学基金); the National Basic Research Program of China under Grant No.2010CB328104 (国家重点基础研究发展计划(973)); theSpecialized Research Fund for the Doctoral Program of Higher Education of China under Grant No.200802860031 (高等学校博士学科点专项科研基金); the Jiangsu Provincial Natural Science Foundation of China under Grant Nos.BK2007708, BK2008030 (江苏省自然科学基金); the Jiangsu Provincial Key Laboratory of Network and Information Security of China under Grant No.BM2003201 (江苏省网络与信息安全重点实验室); the Key Laboratory of Computer Network and Information Integration (Southeast University), Ministry ofEducation of China under Grant No.93K-9 (东南大学计算机网络和信息集成教育部重点实验室)Received 2008-09-22; Revised 2008-12-18; Accepted 2009-06-011796 Journal of Software软件学报 V ol.21, No.8, August 2010使查询流量负载成为可控的,并具有确定的上界.实验结果表明,该方法在大规模的分布式计算环境下具有良好的可扩展性和动态环境下的适应性.关键词: 服务发现;peer-to-peer网络;agent;蚁群算法;路由机制中图法分类号: TP311文献标识码: A在服务计算环境下,服务是组成分布式异构系统的基本元素.为了使服务请求者可以迅速而有效地发现并定位服务,服务提供者要将自己提供的服务发布到一个服务注册库中.这个注册库记录了服务的功能、接口、参数和提供者等信息.服务请求者只要到注册库中即可寻找满足功能需要的服务.注册库是服务请求者和服务提供者之间的桥梁,服务查找和发现性能的好坏是影响整个面向服务应用系统性能的关键.国内外的研究已经相继提出了多种基于P2P(peer-to-peer)网络的分布式服务注册和发现模式[1−5].这些模式将注册系统划分为若干个相对独立的注册节点.注册节点之间以P2P方式互连,并可以共享数据.分布式的服务发现通常包括两个问题[1]:一是如何迅速而有效地找到目标服务所在的注册节点;二是在注册节点上查找目标服务.后面一个问题可以用集中式服务发现的研究成果加以解决,本文只研究前面一个问题.对于此问题,以往的研究只关心召回率、响应时间等基本性能.解决方法一般是根据服务的内容,将服务按照一定的规则或映射关系存储在注册节点中,服务的内容和存储位置有一定的内在关系.在查询服务时,可以按照事先约定的规则或映射关系定位服务所在的注册节点.这种方法的组织结构复杂,发现机制简单,可以达到较短的响应时间和较高的召回率.但是在动态性较强的开放的服务计算环境下,具有一定自主性的注册节点的加入和退出会变得频繁和不确定.过分强调系统组织结构的这类方法,将导致结构的重新组织,计算开销大,可扩展性弱,适应性差.然而,系统的可扩展性和适应性是在大规模的、动态的分布式计算环境中必须解决的挑战性问题.本文提出一种面向大规模、动态、开放的服务计算环境下的分布式服务发现机制.该机制可以保障用户有效发现服务并具有可扩展性和适应性.首先,提出一个基于非结构化P2P网络的服务注册系统模型.注册系统中的每个注册节点都独自按照服务行业划分和管理服务,为了消除歧义,行业按照一个共同的服务行业分类本体命名.其次,提出了基于Agent的服务发现技术,并用蚁群算法的思想指导Agent的行为.具体来说,就是在P2P注册系统上派出多个自主执行查找任务的Agent.在每一个注册节点,Agent根据所要查找的目标服务所属行业、相应路径上的信息素(pheromone)浓度以及距离目标服务行业的跳数来选择路径.这是一种非直接的协作方式,不需要Agent之间直接通信或传递关于路径的消息,不但可以避免盲目寻找服务,而且可以减少网络负载,节省网络带宽,有利于系统扩展.路径上的信息素由先前经过的Agent留下并积累,它可以指导后来的Agent去搜索服务.当有新的节点或资源加入到系统中时,也要向邻居节点扩散信息素.信息素具有挥发机制,那些长时间没有得到增加的信息素最终会挥发完.依靠信息素更新机制和动态变化的信息素浓度,Agent可以自主适应系统拓扑结构和注册中心服务资源的变化.需要说明的是,本文提出的机制和相关算法并不适用于结构化P2P网络.本文第1节介绍相关研究工作.第2节介绍分布式服务注册系统体系结构,给出服务注册节点的组织方式.第3节介绍基于Agent的服务发现机制,给出Agent的行为以及基于蚁群算法的Agent路由与服务发现机制.第4节对本文提出的算法进行仿真实验和性能分析.第5节总结全文并给出下一阶段的工作.1 相关工作在分布式服务注册与发现的研究中,目前广泛采用P2P结构作为服务注册系统内部的组织方式,但在具体的服务发现机制和研究侧重点上有所不同.METEOR-S[1]是一个支持语义Web服务发布与发现的基于P2P的分布式UDDI(universal description, discovery and integration).它使用一个共享的注册本体对各个UDDI服务器按照服务领域进行分类,每个UDDI 服务器必须映射到注册本体上的1个或多个结点上.UDDI服务器和注册本体之间的映射关系用于组织P2P网络的拓扑结构.在这种机制下,UDDI服务器的内容和系统拓扑结构紧耦合,存在注册本体和服务注册信息同步的问题,自适应的能力较差.而且,由于注册本体的维护是另外一套语义维护体系,增加了大规模环境下的实现郑啸等:基于Agent和蚁群算法的分布式服务发现1797和使用的难度.文献[3]提出了基于传统单层P2P网络的分布式服务发现机制.它使用DNS服务来登记和管理对等结点的信息,并设计了一个称为P2P Registry的Agent作为P2P网络和DNS之间的中间件.在Agent的帮助下,每个对等节点能够通过DNS注册和发现目标服务.文中提出了用Agent实现服务自动注册和发现,但是没有充分发挥Agent自主性和自适应性的特点,还要依靠一个集中式的DNS来定位目标.这个DNS类似于混合P2P 结构中的超级节点.文献[4]提出基于本体社区的双层P2P结构的服务发现模型.本体社区是注册中心的集合,这些注册中心的内容是有限制的,要根据模块化本体中的每一个模块设立注册中心,多个社区之间再通过相同的本体建立连接.因此,这种模型的结构是与本体模型结构相关的.服务发现时,先在社区内采用洪泛式的消息传递,然后在社区之间进行一步转发的消息转发方式,以实现跨社区的服务发现.该模型的特点是根据本体概念之间的关系建立分层的P2P网络,可以适应多本体共存的环境.遗憾的是,实验中注册中心和服务的数量都比较少,不能体现出所提出的模型和相关算法在较大规模分布式环境下的效率如何.与以上的研究不同的是,本文的工作面向大规模的分布式服务发现环境,更加强调系统的可扩展性和适应性.为了减少服务发现的响应时间,已有一些研究建议对注册库中的服务按类别进行组织和管理.这样可以直接在与服务相关的领域或行业中搜索,缩小了搜索范围.UDDI提供了服务分类机制[6],包括北美行业分类系统、通用标准产品和服务分类法等,但这些分类标准并不统一而且较为粗糙,大都依靠服务的领域或地域进行划分,没有用本体方法统一分类中的概念,不支持语义发现.文献[7]提出按照GICS全球行业分类标准建立adUDDI.一个adUDDI中可以注册多个行业的服务,所有adUDDI的信息注册在一个根注册中心.具有相同行业的adUDDI相互连接,组织成一个虚拟的区域.与本文的方法相比,这种方法没有考虑行业分类中的概念之间的层次关系,即子行业和父行业之间的关系.没有建立本体库,因此并不支持语义查询.此外,GICS是投资型分类标准,只考虑了以赢利为目的的经营活动单位,行政事业单位、社会团体、各种组织协会等是不属于其分类对象范围的.因此,为了获得更全面的划分,本文采用管理型的分类标准,如中国的国民经济行业分类标准.另外,本文建立了行业分类本体,可以在语义上比较行业之间的相似度,提高了召回率.本文运用蚁群算法的思想指导Agent的服务发现行为.蚁群算法已经成功地应用在网络路由选择[8]、负载均衡[9]、分布式QoS路由[10]、移动Agent迁移[11]等问题中.文献[12]通过在动态的、不可靠的和大规模的网络环境中模拟生物系统的一些特性,如免疫机制(immunity)、药物趋化现象(chemotaxis)等,来设计自适应、鲁棒的分布式算法,并总结了在非结构化P2P网络中的文件查找、移动自组织网络的路由、负载平衡等方面的应用. Anthill[13]是一个用于构建P2P应用的开发环境和工具.它借用多Agent和进化计算技术,利用称为蚂蚁的移动Agent在网络上漫游并执行任务.由于Anthill仅仅是一个开发环境,因此并没有提出具体的蚂蚁的路由算法.2 服务注册系统体系结构图1显示了本文提出的基于非结构化P2P的服务注册系统的体系结构.图中每个注册节点都是服务注册系统中的对等节点.它们以随机方式互连,组成一个松散耦合的覆盖网络(overlay).每个注册节点的逻辑结构由3个模块组成,即通信模块、服务路由管理模块和服务注册模块.通信模块实现注册节点之间按照非结构化P2P 方式互连和通信,注册节点的加入和退出遵循非结构化P2P网络的算法.这部分利用已有的研究成果实现,本文不再讨论.服务路由管理模块维护一个服务路由表,表中记录了从本地到目标服务行业的路由信息.这个服务路由表由一个称为Guide Agent的Agent来维护.服务注册模块的主体是注册库,它包含注册Web服务的元数据信息文件.为了在分布式的注册系统上发现目标服务,设计了一个可以在系统中自主漫游的移动Agent(mobile agent),这个Agent称为Search Agent.Search Agent具有生命周期,它接受查询任务,负责在服务注册系统中查找目标服务.在服务计算环境下,服务是面向某个具体服务行业领域的.例如,租车服务属于交通运输业,而酒店预订服务属于旅游业.因此,服务注册节点可以对注册的服务按照所属行业领域进行划分、归类和管理.为了统一并确定共同认可的服务行业分类的概念和术语,有必要建立服务行业分类本体.每个注册节点都根据共同的服务行业分类本体来管理和聚集服务.本文按照国民经济行业分类标准(GB/T 4754-2002)[14]建立服务行业分类本体.1798 Journal of Software软件学报 V ol.21, No.8, August 2010由于本体构建是一个复杂的工程问题,本文不再讨论如何建立一个行业分类本体.图2给出了一个服务行业分类本体的片段.根据行业分类标准的特点,该本体是一个由概念组成的树型层次结构,概念之间的层次关系是subClassOf关系,表示父类和子类的继承关系.值得注意的是,对于按照其他行业分类标准建立的本体,本文的模型和算法也同样适用.CommunicationSearch agentSearch agentSearch agentFig.1 Architecture of a distributed services registry system图1 分布式服务注册系统体系结构一个用服务行业分类本体进行语义标注的Web服务可以表示为WS(I),I为服务归属的行业集合(这里忽略了Web服务的输入、输出等).图3是一个服务注册模块的组织结构,它包括一个行业分类本体实例和服务池.行业分类本体实例是一个树状目录结构,表示了当前注册节点中Web服务的行业分类情况.服务池中存储了Web服务的元信息.一个Web服务可以属于1个或多个行业.如,WS1(si i,si j)表示该服务可以属于si i和si j两个行业.为了加快查询速度,可以利用索引技术.索引技术可以参考信息检索中的成熟算法,本文不再深入研究.Fig.2 Sample service industry classification ontology图2 服务行业分类本体例子Fig.3 Organization of service registry module图3 服务注册模块组织结构3 基于蚁群算法的Agent服务发现基于真实蚂蚁行为而提出的蚁群算法起初被用于求解TSP问题(traveling salesman problem)[15].在该算法中,多个人工蚂蚁被放置在图的多个顶点上.它们模仿真实蚂蚁的行为去寻找最短周游路径.蚁群算法的精髓是利用在路径上保留的信息素来在蚂蚁之间传递关于路径的信息,而这些信息素又是以前蚂蚁走过后散布下的,代表了一定的先验知识.在算法中,信息素全局更新的正反馈机制缩小了搜索范围,其隐含的负反馈机制又保持了搜索范围.受到一些分布式系统中生物群体智能研究[8−12]的启发,本文运用蚁群算法解决分布式服务注册系统中的服务发现问题.对于实际应用中的每一次Web服务查询请求,系统产生n个Search Agent模拟蚂蚁的行为去执行查询任务.分布式的服务注册系统中,一般会有不同组织注册的多个功能相同而QoS不同的服务,服务请求者需要尽可能地得到所有这些服务的信息,以便选择QoS最适合的服务.Search Agent的目标就是在一定郑啸等:基于Agent和蚁群算法的分布式服务发现1799的约束条件下尽可能多地找到QoS不同的目标服务信息,并提交给请求者.3.1 Agent的行为Search Agent在注册系统P2P网络上漫游并查找目标服务.它包含了目标服务(target service)、生命值(time to live,简称TTL)、跳数(hop count)、禁忌表(tabu)等属性变量.生命值表示Agent可以存活的时间,跳数记录了最近一次发现目标服务后,该Agent经过的注册节点(以下简称节点)数,禁忌表中记录了它经过的节点,防止节点重复访问,也记录它的访问线路.Search Agent具有以下行为(涉及到的算法将在下一节加以介绍):(1) 漫游.为了在网络上查询到请求的目标服务,Search Agent必须按照一定的路由机制在节点之间移动.网络中的每个节点都维护了一个服务路由表.Search Agent根据服务路由表的信息选择一个邻居节点作为下一跳节点.如图4所示,服务路由表记录了从本地到目标服务行业的信息,它包括目标服务行业Industry、下一跳节点地址Next hop、到Industry的跳数Hop count以及信息素浓度Pheromone这4个字段.例如,图4的路由表中的第1条记录表示如果目标服务属于行业si i,就可以选择h i作为下一个路由节点,从本地到si i所在节点的距离(跳数)为hc i,这条出口上的信息素浓度为ph i.同时,它将经过的节点都登记到自己的禁忌表中,然后更新自己的跳数属性.(2) 查询服务.它在到达的每一个节点上查询目标服务.节点有关于注册服务的语义描述和QoS属性,所以可以采用语义匹配技术来查询.(3) 发送信息素更新消息.消息包括服务行业字段和跳数字段.在两种情况下发送更新消息.如果查询成功,就向所有邻居节点的Guide Agent群发更新消息,报告在此节点上可以找到一个目标服务,跳数为1.无论查询成功与否,如果自己的跳数不为0,则都要将跳数封装到一个更新消息中,并发送给当前节点上的Guide Agent.(4) 生命周期控制.Agent具有生命周期,当它被创建时,就被赋予一个初始生命值,此后在漫游时,生命值根据一定的规则更新.这样就可以控制在网络上传播的Agent的数量,并确保查询请求结束后不会再有其产生的Agent还在网络上不停地漫游.此外,通过调节生命值的初始值,可以增加或减少搜索半径.由于Search Agent在生命周期结束时会自行销毁,这种机制实现了生命周期的自管理,系统不必管理它的整个生命周期.Fig.4 Example of service routing table图4 服务路由表Guide Agent主要维护服务路由表,它具有以下行为:(1) 监听并接收Search Agent的消息.Guide Agent一直监听是否有来自Search Agent或邻居节点上Guide Agent的信息素更新消息.(2) 服务路由表管理.分析接收到的更新消息,如果路由表中存在此类服务行业,就增加相应表项的信息素浓度,更新相应表项的跳数;如果不存在此类服务行业,则增加一个新的表项.Guide Agent根据收到的信息素更新消息中包含的跳数来替代当前表项中的跳数值.由于注册库中的服务有可能发生变化,路由表需要定时更新并减少信息素.那些长时间没有得到增加的信息素最终会挥发完,表示其相应的路径上可能已经不存在相应的服务注册信息,或者没有查找此类服务的需求.如果某个表项的信息素浓度为0,就删除该表项.(3) 扩散信息素更新消息.当所在的节点加入注册系统后,或者有新的服务注册成功后,向所有邻居节点扩散信息素更新消息.消息中的跳数设置为1.3.2 Agent服务发现机制下面从Search Agent的路由机制、信息素的产生和更新以及Search Agent的跳数更新、生命周期控制这1800 Journal of Software 软件学报 V ol.21, No.8, August 2010 4个方面进行讨论.不失一般性,假设Search Agent 要查询的目标服务只属于1个服务行业.3.2.1 Search Agent 的路由机制Search Agent 查询当前节点的服务路由表.首先,根据服务行业分类本体确定目标服务的行业都和表中的哪些行业语义相似;然后再根据匹配的结果,从多个符合语义相似条件的路由中选择出适当的路由.(1) 服务行业的语义匹配本体概念间的语义相似度计算是服务行业语义匹配的基础.目前提出了很多种概念间语义相似度计算方法,但本文中的服务行业分类本体是一个树型结构,所以采用基于树的计算方法.这类方法利用两个概念在概念树中的最短路径、概念在概念树中的层高以及所在层高的节点密度等作为度量指标.文献[16]提出的两个概念C 1,C 2间语义相似度的计算公式为 12e e (,)e e e h hal h hSim C C ββββ−−−−=⋅+ (1) 其中,l 表示两个概念间的最短路径的长度,h 表示两个概念在树中最近的相同父辈概念在树中的高度,参数α, β≥0是调节因子.本文采用该计算方法作为两个行业本体概念间语义相似度的计算方法.给定一个语义相似度阈值ξ∈(0,1),在当前节点i 上的服务路由表RT i 中的集合I 就是筛选出的与目标服务行业si k 语义相似的行业集合.I 可以表示为{|(,)()}k Industry i I si Sim si si si RT ξπ=>∧∈ (2) 其中,πIndustry (RT i )表示RT i 在Industry 上的投影.(2) 路由选择在服务路由表中选择路由时,会出现两种情况:一是要查询的目标服务所属行业在语义上不与当前服务路由表中任何一个目标服务行业匹配,这时Search Agent 就在所有邻居节点中随机选择一个;二是找到1个或多个目标服务行业可以匹配,这时Search Agent 要根据语义相似度以及表项中相应的信息素值和跳数来确定选择哪一个邻居.下面讨论第2种情况下的路由选择机制.信息素是用蚁群算法思想求解问题的核心因素,它代表了一定的先验知识,其大小代表了在相应的路径上查找成功次数的多少.本文算法还引入两个启发因子,即语义相似度和跳数.语义相似度表示了路由表中的目标服务行业与Search Agent 的目标服务所属行业的相似程度,跳数代表了与目标服务行业的距离.Search Agent 漫游到语义相似度大的行业上查询的准确率可能会提高,漫游到信息素大的邻居节点后的查找成功率可能要高一些,而选择跳数小的可能响应时间较短.因此,要综合考虑这3个参数.假设当前节点为i ,Search Agent k 在第2种情况下以如下概率(公式(3))选择邻居节点j :(,)(1/(,))(,),(,)(1/(,))(,)(,)0,k j k u k u N ph i j hops i j Sim si I j N ph i u hops i u Sim si I p i j j N λλ∈⎧∈⎪⎪=⎨⎪∉⎪⎩∑ (3) ,{|(,)()}().Industry Nexthop i N n si n RT si I Tabu k π=∈∧∈−其中,ph (i ,j )表示节点i 到节点j 上的信息素值;hops (i ,j )表示以节点j 为下一跳时,到达目标服务行业的跳数;λ>0是调节因子,调节信息素和跳数在路由选择中的比重;RT i 表示节点i 上的服务路由表;I x 表示RT i 中下一跳节点x 所对应的行业;si k 表示Search Agent k 要查询的目标服务的行业;Sim (si k ,I x )为语义相似度(可用公式(1)计算). πIndustry ,Nexthop (RT i )表示RT i 在(Industry ,Nexthop )上的投影,I 的定义如公式(2).Tabu (k )是Search Agent k 的禁忌表.在服务路由表中,可能会出现多个不同行业对应同一个下一跳节点的情况.因此,为了确保在集合N 中不会删除重复的节点,可以首先对其进行预处理.方法是对于m 个重复的节点n ,用m 个不同的记号n 1,n 2,…,n m 标记.3.2.2 信息素的产生和更新信息素在Search Agent 发现服务的过程中发挥了重要的作用,它引导Search Agent 的路由方向.因此,如何产生和更新信息素是影响本文算法性能好坏的关键.在以下几种情况下会产生或更新信息素:郑啸 等:基于Agent 和蚁群算法的分布式服务发现1801(1) 已经找到目标服务的Search Agent 在所经过的路径上会留下信息素.它产生的新的信息素会累加到原来该路径已有的信息素上.设Search Agent 从节点n 进入本地节点i ,ph (i ,n )表示从i 到邻居节点n 的路径上的信息素值,则有ph (i ,n )=α⋅ph (i ,n )+(1−α)Δp 1 (4)其中,α∈(0,1),Δp 1为常数. (2) 当在节点n 上找到目标服务时,它还会向节点n 的所有邻居节点扩散信息素.邻居节点上的Guide Agent在收到信息素更新消息后,会在自己服务路由表的相应表项上更新信息素.即ph (m ,n )=β⋅ph (m ,n )+(1−β)Δp 2,m ∈J (n ) (5)其中,β∈(0,1),Δp 2为常数,J (n )是节点n 的邻居集合.(3) 对于服务路由表上的每一项,都会定期作如下更新:ph (i ,n )=ρ⋅ph (i ,n ) (6)其中,ρ∈(0,1)是挥发系数.这样,如果某个邻居长时间始终没有被访问,则它的信息素将会接近为0.这样的节点上可能注册的服务较少,或者已经退出了网络. (4) 当有新的节点加入网络后,它会向其所有邻居发送信息素更新消息.按照公式(5)的规则来更新邻居的服务路由表.(5) 当某个节点上有新的服务注册时,它会向其所有邻居发送信息素更新消息.按照公式(5)的规则来更新邻居的服务路由表.3.2.3 Search Agent 跳数的更新Search Agent 跳数值初始为0,表示目前还没有发现目标服务.如果第1次发现,就将跳数设置为1.此后,如果在沿途节点上继续发现目标服务,就重置为1;否则就做加1操作.因此,Search Agent 在查找服务的同时,还可以记录最近一次发现到的服务距离当前位置的跳数,这个跳数将被包含在信息素更新消息中,用于更新服务路由表.Search Agent k 在节点i 上时,其跳数HC k 的更新规则为0, 0()1, ()1, 0()k k k k kk k HC si C i HC si C i HC HC si C i =∧∉⎧⎪=∈⎨⎪+>∧∉⎩ (7)其中,si k 表示Search Agent k 要查找的服务所属的行业,C (i )表示节点i 上的服务集合.3.2.4 生命周期控制本算法使用TTL 控制Search Agent 的生命周期.在Search Agent 产生时,它的TTL 会被设置一个初值.在经过的每个节点,TTL 值都会被更新.如果在当前节点上没有找到目标服务,TTL 会减少;如果找到了,则不对TTL 值处理.这样可以使这个Agent 再去查找更多的节点.如果当前节点的所有邻居节点都在Agent 的禁忌表中,则它的TTL 值被强制为0.TTL 值为0的Agent 就不再漫游,并被销毁.Search Agent k 在节点i 上时,其生命值TTL k 的更新规则为1, (), ()0, ()()k k k k k TTL si C i TTL TTL si C i J i Tabu k −∉⎧⎪=∈⎨⎪⊆⎩(8)其中,si k 和C (i )同公式(7),J (i )是节点i 的邻居集合. 基于以上的讨论,下面分别给出服务路由表更新算法和路由选择算法的伪代码.算法1. 服务路由表更新.Guide Agent 在收到信息素更新消息后,在上面提到的情况(2)、情况(4)、情况(5)这3种情况下运用本算法.情况(1)、情况(3)这两种情况下的服务路由表更新算法与此类似.1: Input : A service routing table n 1.SrvRoutingTab of a local node n 1, a neighbor node n 2,a pheromone update message msg , a pheromone increment ph , a const beta ;2: IF (msg .Industry ,n 2) in n 1.SrvRoutingTab THEN。
一种基于推荐网络和蚁群算法的服务发现方法
一种基于推荐网络和蚁群算法的服务发现方法谢晓芹;宋超臣;张志强【期刊名称】《计算机学报》【年(卷),期】2010(033)011【摘要】服务分散存储在互联网上,随着互联网上Web服务数量的迅速增长,自动、准确、快速地搜索Web服务已经成为面向服务计算中的难点和关键问题.文中针对在开放、动态环境下现有的服务发现研究中存在的搜索效率不高、负载不均衡和语义欠缺等问题,提出了一种基于推荐网络和蚁群算法的服务发现方法.首先,该方法构建一个自组织服务推荐网络模型,并给出了相关策略,从而适合大规模开放、动态的网络环境,为服务发现提供了搜索空间和基础.其次,在自组织服务推荐网络模型的基础上,给出了一种基于蚁群算法的服务发现方法,该方法使用推荐有效地提高了服务发现的成功率和查全率,引入蚁群算法的思想有效地解决了服务发现中的网络负载均衡问题.最后,实验结果证明了该方法的正确性和可行性.【总页数】11页(P2093-2103)【作者】谢晓芹;宋超臣;张志强【作者单位】哈尔滨工程大学计算机学院,哈尔滨,150001;哈尔滨工程大学计算机学院,哈尔滨,150001;黑龙江省电子信息产品监督检验院,哈尔滨,150090;哈尔滨工程大学计算机学院,哈尔滨,150001【正文语种】中文【中图分类】TP312【相关文献】1.一种基于蚁群算法的无线传感器网络服务发现机制 [J], 霍宏伟;高德云;牛延超;张宏科2.一种基于蚁群算法的无线传感器网络服务发现机制 [J], 霍宏伟;高德云;牛延超;张宏科3.一种基于双层环网络的Web服务发现方法 [J], 周玉姣;钟诚;李智;黄毅然4.一种基于蚁群算法的移动电子商务推荐方法 [J], 胡陈思5.一种基于蚁群算法的用户浏览路径推荐方法 [J], 刘晋佩;曾建平因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software, Vol.21, No.8, August 2010, pp.1795−1809 doi: 10.3724/SP.J.1001.2010.03669 Tel/Fax: +86-10-62562563© by Institute of Software, the Chinese Academy of Sciences. All rights reserved.∗基于Agent和蚁群算法的分布式服务发现郑啸1,2+, 罗军舟1, 宋爱波11(东南大学计算机科学与工程学院,江苏南京 210096)2(安徽工业大学计算机学院,安徽马鞍山 243002)Distributed Service Discovery Based on Agent and Ant Colony AlgorithmZHENG Xiao1,2+, LUO Jun-Zhou1, SONG Ai-Bo11(School of Computer Science and Engineering, Southeast University, Nanjing 210096, China)2(School of Computer, Anhui University of Technology, Maanshan 243002, China)+ Corresponding author: E-mail: xzheng@Zheng X, Luo JZ, Song AB. Distributed service discovery based on agent and ant colony algorithm. Journalof Software, 2010,21(8):1795−1809. /1000-9825/3669.htmAbstract: This paper suggests an ant-like agent service discovery mechanism. There are two types of agentscooperating to search target services: Search Agent and Guide Agent. Search Agent simulates the behavior of an antthat searches for services on the network. Guide Agent is responsible to manage a service route table that consists ofpheromone and hop count, instructing Search Agent’s routing. Volatile pheromones make Search Agent sense thechange of topology and service resource, and hop count makes them know the distance. Semantic similarity is alsointroduced in routing selection as a heuristic factor, which improves the recall. The life-span control policy makesquery traffic controllable. With system size increasing, the query traffic would increase slightly and has an upperbound. The result of simulation shows that the suggested mechanism is scalable and adaptable enough to be suitablefor large-scale dynamic computing environments.Key words: service discovery; peer to peer network; agent; ant colony algorithm; routing mechanism摘要: 提出一种类似蚂蚁觅食活动的Agent服务发现机制.有两类Agent 合作寻找目标服务:Search Agent和Guide Agent.前者模拟蚂蚁的行为在网络上发现目标服务,后者管理一个由信息素和跳数组成的服务路由表,用以指导Search Agent的行进路线.动态变化的信息素可以让Search Agent感知到网络拓扑和服务资源的变化,而跳数可以让它们了解距离.路由选择中还使用语义相似度作为启发因子,用于提高召回率.Search Agent生命周期控制机制∗Supported by the National Natural Science Foundation of China under Grant Nos.60773103, 60903161, 60903162, 90912002 (国家自然科学基金); the National Basic Research Program of China under Grant No.2010CB328104 (国家重点基础研究发展计划(973)); theSpecialized Research Fund for the Doctoral Program of Higher Education of China under Grant No.200802860031 (高等学校博士学科点专项科研基金); the Jiangsu Provincial Natural Science Foundation of China under Grant Nos.BK2007708, BK2008030 (江苏省自然科学基金); the Jiangsu Provincial Key Laboratory of Network and Information Security of China under Grant No.BM2003201 (江苏省网络与信息安全重点实验室); the Key Laboratory of Computer Network and Information Integration (Southeast University), Ministry ofEducation of China under Grant No.93K-9 (东南大学计算机网络和信息集成教育部重点实验室)Received 2008-09-22; Revised 2008-12-18; Accepted 2009-06-011796 Journal of Software软件学报 V ol.21, No.8, August 2010使查询流量负载成为可控的,并具有确定的上界.实验结果表明,该方法在大规模的分布式计算环境下具有良好的可扩展性和动态环境下的适应性.关键词: 服务发现;peer-to-peer网络;agent;蚁群算法;路由机制中图法分类号: TP311文献标识码: A在服务计算环境下,服务是组成分布式异构系统的基本元素.为了使服务请求者可以迅速而有效地发现并定位服务,服务提供者要将自己提供的服务发布到一个服务注册库中.这个注册库记录了服务的功能、接口、参数和提供者等信息.服务请求者只要到注册库中即可寻找满足功能需要的服务.注册库是服务请求者和服务提供者之间的桥梁,服务查找和发现性能的好坏是影响整个面向服务应用系统性能的关键.国内外的研究已经相继提出了多种基于P2P(peer-to-peer)网络的分布式服务注册和发现模式[1−5].这些模式将注册系统划分为若干个相对独立的注册节点.注册节点之间以P2P方式互连,并可以共享数据.分布式的服务发现通常包括两个问题[1]:一是如何迅速而有效地找到目标服务所在的注册节点;二是在注册节点上查找目标服务.后面一个问题可以用集中式服务发现的研究成果加以解决,本文只研究前面一个问题.对于此问题,以往的研究只关心召回率、响应时间等基本性能.解决方法一般是根据服务的内容,将服务按照一定的规则或映射关系存储在注册节点中,服务的内容和存储位置有一定的内在关系.在查询服务时,可以按照事先约定的规则或映射关系定位服务所在的注册节点.这种方法的组织结构复杂,发现机制简单,可以达到较短的响应时间和较高的召回率.但是在动态性较强的开放的服务计算环境下,具有一定自主性的注册节点的加入和退出会变得频繁和不确定.过分强调系统组织结构的这类方法,将导致结构的重新组织,计算开销大,可扩展性弱,适应性差.然而,系统的可扩展性和适应性是在大规模的、动态的分布式计算环境中必须解决的挑战性问题.本文提出一种面向大规模、动态、开放的服务计算环境下的分布式服务发现机制.该机制可以保障用户有效发现服务并具有可扩展性和适应性.首先,提出一个基于非结构化P2P网络的服务注册系统模型.注册系统中的每个注册节点都独自按照服务行业划分和管理服务,为了消除歧义,行业按照一个共同的服务行业分类本体命名.其次,提出了基于Agent的服务发现技术,并用蚁群算法的思想指导Agent的行为.具体来说,就是在P2P注册系统上派出多个自主执行查找任务的Agent.在每一个注册节点,Agent根据所要查找的目标服务所属行业、相应路径上的信息素(pheromone)浓度以及距离目标服务行业的跳数来选择路径.这是一种非直接的协作方式,不需要Agent之间直接通信或传递关于路径的消息,不但可以避免盲目寻找服务,而且可以减少网络负载,节省网络带宽,有利于系统扩展.路径上的信息素由先前经过的Agent留下并积累,它可以指导后来的Agent去搜索服务.当有新的节点或资源加入到系统中时,也要向邻居节点扩散信息素.信息素具有挥发机制,那些长时间没有得到增加的信息素最终会挥发完.依靠信息素更新机制和动态变化的信息素浓度,Agent可以自主适应系统拓扑结构和注册中心服务资源的变化.需要说明的是,本文提出的机制和相关算法并不适用于结构化P2P网络.本文第1节介绍相关研究工作.第2节介绍分布式服务注册系统体系结构,给出服务注册节点的组织方式.第3节介绍基于Agent的服务发现机制,给出Agent的行为以及基于蚁群算法的Agent路由与服务发现机制.第4节对本文提出的算法进行仿真实验和性能分析.第5节总结全文并给出下一阶段的工作.1 相关工作在分布式服务注册与发现的研究中,目前广泛采用P2P结构作为服务注册系统内部的组织方式,但在具体的服务发现机制和研究侧重点上有所不同.METEOR-S[1]是一个支持语义Web服务发布与发现的基于P2P的分布式UDDI(universal description, discovery and integration).它使用一个共享的注册本体对各个UDDI服务器按照服务领域进行分类,每个UDDI 服务器必须映射到注册本体上的1个或多个结点上.UDDI服务器和注册本体之间的映射关系用于组织P2P网络的拓扑结构.在这种机制下,UDDI服务器的内容和系统拓扑结构紧耦合,存在注册本体和服务注册信息同步的问题,自适应的能力较差.而且,由于注册本体的维护是另外一套语义维护体系,增加了大规模环境下的实现郑啸等:基于Agent和蚁群算法的分布式服务发现1797和使用的难度.文献[3]提出了基于传统单层P2P网络的分布式服务发现机制.它使用DNS服务来登记和管理对等结点的信息,并设计了一个称为P2P Registry的Agent作为P2P网络和DNS之间的中间件.在Agent的帮助下,每个对等节点能够通过DNS注册和发现目标服务.文中提出了用Agent实现服务自动注册和发现,但是没有充分发挥Agent自主性和自适应性的特点,还要依靠一个集中式的DNS来定位目标.这个DNS类似于混合P2P 结构中的超级节点.文献[4]提出基于本体社区的双层P2P结构的服务发现模型.本体社区是注册中心的集合,这些注册中心的内容是有限制的,要根据模块化本体中的每一个模块设立注册中心,多个社区之间再通过相同的本体建立连接.因此,这种模型的结构是与本体模型结构相关的.服务发现时,先在社区内采用洪泛式的消息传递,然后在社区之间进行一步转发的消息转发方式,以实现跨社区的服务发现.该模型的特点是根据本体概念之间的关系建立分层的P2P网络,可以适应多本体共存的环境.遗憾的是,实验中注册中心和服务的数量都比较少,不能体现出所提出的模型和相关算法在较大规模分布式环境下的效率如何.与以上的研究不同的是,本文的工作面向大规模的分布式服务发现环境,更加强调系统的可扩展性和适应性.为了减少服务发现的响应时间,已有一些研究建议对注册库中的服务按类别进行组织和管理.这样可以直接在与服务相关的领域或行业中搜索,缩小了搜索范围.UDDI提供了服务分类机制[6],包括北美行业分类系统、通用标准产品和服务分类法等,但这些分类标准并不统一而且较为粗糙,大都依靠服务的领域或地域进行划分,没有用本体方法统一分类中的概念,不支持语义发现.文献[7]提出按照GICS全球行业分类标准建立adUDDI.一个adUDDI中可以注册多个行业的服务,所有adUDDI的信息注册在一个根注册中心.具有相同行业的adUDDI相互连接,组织成一个虚拟的区域.与本文的方法相比,这种方法没有考虑行业分类中的概念之间的层次关系,即子行业和父行业之间的关系.没有建立本体库,因此并不支持语义查询.此外,GICS是投资型分类标准,只考虑了以赢利为目的的经营活动单位,行政事业单位、社会团体、各种组织协会等是不属于其分类对象范围的.因此,为了获得更全面的划分,本文采用管理型的分类标准,如中国的国民经济行业分类标准.另外,本文建立了行业分类本体,可以在语义上比较行业之间的相似度,提高了召回率.本文运用蚁群算法的思想指导Agent的服务发现行为.蚁群算法已经成功地应用在网络路由选择[8]、负载均衡[9]、分布式QoS路由[10]、移动Agent迁移[11]等问题中.文献[12]通过在动态的、不可靠的和大规模的网络环境中模拟生物系统的一些特性,如免疫机制(immunity)、药物趋化现象(chemotaxis)等,来设计自适应、鲁棒的分布式算法,并总结了在非结构化P2P网络中的文件查找、移动自组织网络的路由、负载平衡等方面的应用. Anthill[13]是一个用于构建P2P应用的开发环境和工具.它借用多Agent和进化计算技术,利用称为蚂蚁的移动Agent在网络上漫游并执行任务.由于Anthill仅仅是一个开发环境,因此并没有提出具体的蚂蚁的路由算法.2 服务注册系统体系结构图1显示了本文提出的基于非结构化P2P的服务注册系统的体系结构.图中每个注册节点都是服务注册系统中的对等节点.它们以随机方式互连,组成一个松散耦合的覆盖网络(overlay).每个注册节点的逻辑结构由3个模块组成,即通信模块、服务路由管理模块和服务注册模块.通信模块实现注册节点之间按照非结构化P2P 方式互连和通信,注册节点的加入和退出遵循非结构化P2P网络的算法.这部分利用已有的研究成果实现,本文不再讨论.服务路由管理模块维护一个服务路由表,表中记录了从本地到目标服务行业的路由信息.这个服务路由表由一个称为Guide Agent的Agent来维护.服务注册模块的主体是注册库,它包含注册Web服务的元数据信息文件.为了在分布式的注册系统上发现目标服务,设计了一个可以在系统中自主漫游的移动Agent(mobile agent),这个Agent称为Search Agent.Search Agent具有生命周期,它接受查询任务,负责在服务注册系统中查找目标服务.在服务计算环境下,服务是面向某个具体服务行业领域的.例如,租车服务属于交通运输业,而酒店预订服务属于旅游业.因此,服务注册节点可以对注册的服务按照所属行业领域进行划分、归类和管理.为了统一并确定共同认可的服务行业分类的概念和术语,有必要建立服务行业分类本体.每个注册节点都根据共同的服务行业分类本体来管理和聚集服务.本文按照国民经济行业分类标准(GB/T 4754-2002)[14]建立服务行业分类本体.1798 Journal of Software 软件学报 V ol.21, No.8, August 2010由于本体构建是一个复杂的工程问题,本文不再讨论如何建立一个行业分类本体.图2给出了一个服务行业分类本体的片段.根据行业分类标准的特点,该本体是一个由概念组成的树型层次结构,概念之间的层次关系是subClassOf 关系,表示父类和子类的继承关系.值得注意的是,对于按照其他行业分类标准建立的本体,本文的模型和算法也同样适用. CommunicationSearch agent Search agentSearch agent Fig.1 Architecture of a distributed services registry system图1 分布式服务注册系统体系结构一个用服务行业分类本体进行语义标注的Web 服务可以表示为WS (I ),I 为服务归属的行业集合(这里忽略了Web 服务的输入、输出等).图3是一个服务注册模块的组织结构,它包括一个行业分类本体实例和服务池.行业分类本体实例是一个树状目录结构,表示了当前注册节点中Web 服务的行业分类情况.服务池中存储了Web 服务的元信息.一个Web 服务可以属于1个或多个行业.如,WS 1(si i ,si j )表示该服务可以属于si i 和si j 两个行业.为了加快查询速度,可以利用索引技术.索引技术可以参考信息检索中的成熟算法,本文不再深入研究.Transport Education AccommodationHotel Higher education subClassOf subClassOf subClassOfElementary education subClassOfsubClassOfsubClassOf Industry classificationsubClassOf Accommodation and catering WS n ( si i )......WS 1(si i ,si j )WS n (si j )Classification ontology Web services pools ...WS 2(si j )...si i si j Fig.2 Sample service industry classification ontology 图2 服务行业分类本体例子 Fig.3 Organization of service registry module 图3 服务注册模块组织结构3 基于蚁群算法的Agent 服务发现基于真实蚂蚁行为而提出的蚁群算法起初被用于求解TSP 问题(traveling salesman problem)[15].在该算法中,多个人工蚂蚁被放置在图的多个顶点上.它们模仿真实蚂蚁的行为去寻找最短周游路径.蚁群算法的精髓是利用在路径上保留的信息素来在蚂蚁之间传递关于路径的信息,而这些信息素又是以前蚂蚁走过后散布下的,代表了一定的先验知识.在算法中,信息素全局更新的正反馈机制缩小了搜索范围,其隐含的负反馈机制又保持了搜索范围.受到一些分布式系统中生物群体智能研究[8−12]的启发,本文运用蚁群算法解决分布式服务注册系统中的服务发现问题.对于实际应用中的每一次Web 服务查询请求,系统产生n 个Search Agent 模拟蚂蚁的行为去执行查询任务.分布式的服务注册系统中,一般会有不同组织注册的多个功能相同而QoS 不同的服务,服务请求者需要尽可能地得到所有这些服务的信息,以便选择QoS 最适合的服务.Search Agent 的目标就是在一定郑啸等:基于Agent和蚁群算法的分布式服务发现1799的约束条件下尽可能多地找到QoS不同的目标服务信息,并提交给请求者.3.1 Agent的行为Search Agent在注册系统P2P网络上漫游并查找目标服务.它包含了目标服务(target service)、生命值(time to live,简称TTL)、跳数(hop count)、禁忌表(tabu)等属性变量.生命值表示Agent可以存活的时间,跳数记录了最近一次发现目标服务后,该Agent经过的注册节点(以下简称节点)数,禁忌表中记录了它经过的节点,防止节点重复访问,也记录它的访问线路.Search Agent具有以下行为(涉及到的算法将在下一节加以介绍):(1) 漫游.为了在网络上查询到请求的目标服务,Search Agent必须按照一定的路由机制在节点之间移动.网络中的每个节点都维护了一个服务路由表.Search Agent根据服务路由表的信息选择一个邻居节点作为下一跳节点.如图4所示,服务路由表记录了从本地到目标服务行业的信息,它包括目标服务行业Industry、下一跳节点地址Next hop、到Industry的跳数Hop count以及信息素浓度Pheromone这4个字段.例如,图4的路由表中的第1条记录表示如果目标服务属于行业si i,就可以选择h i作为下一个路由节点,从本地到si i所在节点的距离(跳数)为hc i,这条出口上的信息素浓度为ph i.同时,它将经过的节点都登记到自己的禁忌表中,然后更新自己的跳数属性.(2) 查询服务.它在到达的每一个节点上查询目标服务.节点有关于注册服务的语义描述和QoS属性,所以可以采用语义匹配技术来查询.(3) 发送信息素更新消息.消息包括服务行业字段和跳数字段.在两种情况下发送更新消息.如果查询成功,就向所有邻居节点的Guide Agent群发更新消息,报告在此节点上可以找到一个目标服务,跳数为1.无论查询成功与否,如果自己的跳数不为0,则都要将跳数封装到一个更新消息中,并发送给当前节点上的Guide Agent.(4) 生命周期控制.Agent具有生命周期,当它被创建时,就被赋予一个初始生命值,此后在漫游时,生命值根据一定的规则更新.这样就可以控制在网络上传播的Agent的数量,并确保查询请求结束后不会再有其产生的Agent还在网络上不停地漫游.此外,通过调节生命值的初始值,可以增加或减少搜索半径.由于Search Agent在生命周期结束时会自行销毁,这种机制实现了生命周期的自管理,系统不必管理它的整个生命周期.Industry Next hop Hop count Pheromonesi i h i hc i ph isi i h j hc j ph jsi j h k hc k ph kFig.4 Example of service routing table图4 服务路由表Guide Agent主要维护服务路由表,它具有以下行为:(1) 监听并接收Search Agent的消息.Guide Agent一直监听是否有来自Search Agent或邻居节点上Guide Agent的信息素更新消息.(2) 服务路由表管理.分析接收到的更新消息,如果路由表中存在此类服务行业,就增加相应表项的信息素浓度,更新相应表项的跳数;如果不存在此类服务行业,则增加一个新的表项.Guide Agent根据收到的信息素更新消息中包含的跳数来替代当前表项中的跳数值.由于注册库中的服务有可能发生变化,路由表需要定时更新并减少信息素.那些长时间没有得到增加的信息素最终会挥发完,表示其相应的路径上可能已经不存在相应的服务注册信息,或者没有查找此类服务的需求.如果某个表项的信息素浓度为0,就删除该表项.(3) 扩散信息素更新消息.当所在的节点加入注册系统后,或者有新的服务注册成功后,向所有邻居节点扩散信息素更新消息.消息中的跳数设置为1.3.2 Agent服务发现机制下面从Search Agent的路由机制、信息素的产生和更新以及Search Agent的跳数更新、生命周期控制这1800 Journal of Software 软件学报 V ol.21, No.8, August 20104个方面进行讨论.不失一般性,假设Search Agent 要查询的目标服务只属于1个服务行业.3.2.1 Search Agent 的路由机制Search Agent 查询当前节点的服务路由表.首先,根据服务行业分类本体确定目标服务的行业都和表中的哪些行业语义相似;然后再根据匹配的结果,从多个符合语义相似条件的路由中选择出适当的路由.(1) 服务行业的语义匹配本体概念间的语义相似度计算是服务行业语义匹配的基础.目前提出了很多种概念间语义相似度计算方法,但本文中的服务行业分类本体是一个树型结构,所以采用基于树的计算方法.这类方法利用两个概念在概念树中的最短路径、概念在概念树中的层高以及所在层高的节点密度等作为度量指标.文献[16]提出的两个概念C 1,C 2间语义相似度的计算公式为 12e e (,)e e e h hal h hSim C C ββββ−−−−=⋅+ (1) 其中,l 表示两个概念间的最短路径的长度,h 表示两个概念在树中最近的相同父辈概念在树中的高度,参数α,β≥0是调节因子.本文采用该计算方法作为两个行业本体概念间语义相似度的计算方法.给定一个语义相似度阈值ξ∈(0,1),在当前节点i 上的服务路由表RT i 中的集合I 就是筛选出的与目标服务行业si k 语义相似的行业集合.I 可以表示为{|(,)()}k Industry i I si Sim si si si RT ξπ=>∧∈ (2) 其中,πIndustry (RT i )表示RT i 在Industry 上的投影.(2) 路由选择在服务路由表中选择路由时,会出现两种情况:一是要查询的目标服务所属行业在语义上不与当前服务路由表中任何一个目标服务行业匹配,这时Search Agent 就在所有邻居节点中随机选择一个;二是找到1个或多个目标服务行业可以匹配,这时Search Agent 要根据语义相似度以及表项中相应的信息素值和跳数来确定选择哪一个邻居.下面讨论第2种情况下的路由选择机制.信息素是用蚁群算法思想求解问题的核心因素,它代表了一定的先验知识,其大小代表了在相应的路径上查找成功次数的多少.本文算法还引入两个启发因子,即语义相似度和跳数.语义相似度表示了路由表中的目标服务行业与Search Agent 的目标服务所属行业的相似程度,跳数代表了与目标服务行业的距离.Search Agent 漫游到语义相似度大的行业上查询的准确率可能会提高,漫游到信息素大的邻居节点后的查找成功率可能要高一些,而选择跳数小的可能响应时间较短.因此,要综合考虑这3个参数.假设当前节点为i ,Search Agent k 在第2种情况下以如下概率(公式(3))选择邻居节点j :(,)(1/(,))(,),(,)(1/(,))(,)(,)0,k j k u k u N ph i j hops i j Sim si I j N ph i u hops i u Sim si I p i j j N λλ∈⎧∈⎪⎪=⎨⎪∉⎪⎩∑ (3) ,{|(,)()}().Industry Nexthop i N n si n RT si I Tabu k π=∈∧∈−其中,ph (i ,j )表示节点i 到节点j 上的信息素值;hops (i ,j )表示以节点j 为下一跳时,到达目标服务行业的跳数;λ>0是调节因子,调节信息素和跳数在路由选择中的比重;RT i 表示节点i 上的服务路由表;I x 表示RT i 中下一跳节点x所对应的行业;si k 表示Search Agent k 要查询的目标服务的行业;Sim (si k ,I x )为语义相似度(可用公式(1)计算).πIndustry ,Nexthop (RT i )表示RT i 在(Industry ,Nexthop )上的投影,I 的定义如公式(2).Tabu (k )是Search Agent k 的禁忌表.在服务路由表中,可能会出现多个不同行业对应同一个下一跳节点的情况.因此,为了确保在集合N 中不会删除重复的节点,可以首先对其进行预处理.方法是对于m 个重复的节点n ,用m 个不同的记号n 1,n 2,…,n m 标记.3.2.2 信息素的产生和更新信息素在Search Agent 发现服务的过程中发挥了重要的作用,它引导Search Agent 的路由方向.因此,如何产生和更新信息素是影响本文算法性能好坏的关键.在以下几种情况下会产生或更新信息素:郑啸 等:基于Agent 和蚁群算法的分布式服务发现1801(1) 已经找到目标服务的Search Agent 在所经过的路径上会留下信息素.它产生的新的信息素会累加到原来该路径已有的信息素上.设Search Agent 从节点n 进入本地节点i ,ph (i ,n )表示从i 到邻居节点n 的路径上的信息素值,则有ph (i ,n )=α⋅ph (i ,n )+(1−α)Δp 1 (4)其中,α∈(0,1),Δp 1为常数. (2) 当在节点n 上找到目标服务时,它还会向节点n 的所有邻居节点扩散信息素.邻居节点上的Guide Agent在收到信息素更新消息后,会在自己服务路由表的相应表项上更新信息素.即ph (m ,n )=β⋅ph (m ,n )+(1−β)Δp 2,m ∈J (n ) (5)其中,β∈(0,1),Δp 2为常数,J (n )是节点n 的邻居集合.(3) 对于服务路由表上的每一项,都会定期作如下更新:ph (i ,n )=ρ⋅ph (i ,n ) (6)其中,ρ∈(0,1)是挥发系数.这样,如果某个邻居长时间始终没有被访问,则它的信息素将会接近为0.这样的节点上可能注册的服务较少,或者已经退出了网络. (4) 当有新的节点加入网络后,它会向其所有邻居发送信息素更新消息.按照公式(5)的规则来更新邻居的服务路由表.(5) 当某个节点上有新的服务注册时,它会向其所有邻居发送信息素更新消息.按照公式(5)的规则来更新邻居的服务路由表.3.2.3 Search Agent 跳数的更新Search Agent 跳数值初始为0,表示目前还没有发现目标服务.如果第1次发现,就将跳数设置为1.此后,如果在沿途节点上继续发现目标服务,就重置为1;否则就做加1操作.因此,Search Agent 在查找服务的同时,还可以记录最近一次发现到的服务距离当前位置的跳数,这个跳数将被包含在信息素更新消息中,用于更新服务路由表.Search Agent k 在节点i 上时,其跳数HC k 的更新规则为0, 0()1, ()1, 0()k k k k kk k HC si C i HC si C i HC HC si C i =∧∉⎧⎪=∈⎨⎪+>∧∉⎩ (7) 其中,si k 表示Search Agent k 要查找的服务所属的行业,C (i )表示节点i 上的服务集合.3.2.4 生命周期控制本算法使用TTL 控制Search Agent 的生命周期.在Search Agent 产生时,它的TTL 会被设置一个初值.在经过的每个节点,TTL 值都会被更新.如果在当前节点上没有找到目标服务,TTL 会减少;如果找到了,则不对TTL值处理.这样可以使这个Agent 再去查找更多的节点.如果当前节点的所有邻居节点都在Agent 的禁忌表中,则它的TTL 值被强制为0.TTL 值为0的Agent 就不再漫游,并被销毁.Search Agent k 在节点i 上时,其生命值TTL k的更新规则为1, (), ()0, ()()k k k k k TTL si C i TTL TTL si C i J i Tabu k −∉⎧⎪=∈⎨⎪⊆⎩(8) 其中,si k 和C (i )同公式(7),J (i )是节点i 的邻居集合.基于以上的讨论,下面分别给出服务路由表更新算法和路由选择算法的伪代码.算法1. 服务路由表更新.Guide Agent 在收到信息素更新消息后,在上面提到的情况(2)、情况(4)、情况(5)这3种情况下运用本算法.情况(1)、情况(3)这两种情况下的服务路由表更新算法与此类似.1: Input : A service routing table n 1.SrvRoutingTab of a local node n 1, a neighbor node n 2,a pheromone update message msg , a pheromone increment ph , a const beta ;2: IF (msg .Industry ,n 2) in n 1.SrvRoutingTab THEN。