1、动态的 QoS 感知 Web 服务选择和组合优化模型摘 要 Web 服务软件工程的实用化挑战之一是 QoS 感知的选择、组合和稍后的绑定,表现为允许在运行时绑定一组领域 Web 服务构成面向服务的系统。这些领域 Web 服务在提供要求的功能同时,还满足一些非功能约束,例如总的费用或响应时间,并且使之最优化。提出了一种把 Web 服务看作为首类构件对象的关系查询基础结构,它通过各种 Web 服务操作调用评估查询。由于个性化和效率在这种评估中起重要作用,提出了一个基于聚合不同 Web 服务的多属性 QoS 参数的查询优化模型,该模型通过用户设定的全局约束和偏好、一个动态的等级方案、以及多级匹配来调
2、整 QoS。等级提供了一个 Web 服务的行为评估,而多级匹配通过使能类似的和部分的答案对解决方案的空间进行扩展。给出了模型求解的遗传算法,并从适应度函数的静态惩罚、动态惩罚以及拉伸三个方面对优化性能进行了比较。该文最后介绍了一个从高端实现的服务查询引擎原型系统, 用以展示该方法的适应性、可行性和有效性。关键词 Web 服务; 服务质量; 服务选择; 约束优化; 遗传算法中图分类号:TP311 文献标识码: A An Optimization Model for Dynamic QoS-Aware Web Services Selection and CompositionAbstract O
3、ne of the most promising opportunities from a Web services engineering perspective is the QoSaware selection, composition and late-binding. This allows you to dynamically assemble a collection of domain-specific QoS-aware Web services providing the required features into a composition services that
4、can meet some nonfunctional constraints, and optimize criteria such as the overall cost or response time. This paper presents a query infrastructure that considers Web services as first class component objects. It evaluates queries through the invocations of different Web services operations. Becaus
5、e personality and efficiency play a central role in such evaluations, the paper proposes a query optimization model based on aggregating the multi-attribute QoS parameters of different Web services. The model adjusts QoS through global constraints and preferences set by the user, a dynamic rating sc
6、heme, and multilevel matching. The rating gives an assessment of Web services behaviors. Multilevel matching provides the expansion of the solution space by enabling similar and partial answers. The paper describes a genetic algorithm for solving the model, and compares the optimization performance
7、of the genetic algorithm using various fitness functions varying in terms of static penalty, dynamic penalty, and stretching. The proposed approach has been applied to a service query engine system for SEIFCW, which consequently shows its applicability, feasibility and efficiency.Keywords Web servic
8、es; quality of service (QoS); service selection; constraint optimization; genetic algorithm1 引言面向Internet的Web服务应用,比如信息门户、实时网格计算和电子商务应用等,越来越关注提供给用户的服务质量(Quality of Service,QoS) 1。从Web服务发现的角度看,如何从大量的Web服务中有效地快速选择和集成最适合用户需求的、高可信性的、QoS感知的 Web服务成为面向服务软件工程的一个新的挑战。面向服务软件工程代表了基于构件软件工程(Component-Based Softwa
9、re Engineering,CBSE)的自然演化。在CBSE中,一个构件集成者搜索可重用构件,然后使用一些胶合代码(glue code) 2把它们集成到一个实际的新系统中。Web 服务由服务提供者在服务注册中心发布其功能,并通过远程服务调用操作供服务请求者绑定使用,进而没有必要在开发时就把服务集成到应用中。Web服务的接口发布、发现和调用都是执行基于XML的一些标准,例如WSDL、 UDDI和SOAP 。因此,一个面向服务系统是由一些服务调用构成,并使用胶合代码或者一些具体的Web服务组合语言(如BPEL4WS)来合成。面向服务系统的最大期许是使用稍后的绑定机制。事实上,一些关键的业务应用场
10、景(如面向服务ERP 协同集成框架SEIFCW 3中的组装领域服务构件)是给出某个领域服务的所需功能单元的具体特性描述 (这个特色描述将据此作为一个抽象服务),且在组装实现时有多个符合该特性描述的服务( 称为具体服务 )可利用。一个抽象服务和对应的所有具体服务在功能上是等价的,因而可相互取代。它们之间的选择由非功能属性来确定,例如QoS属性。一个用户可决定挑选最便宜的和最快的服务,或者是两者之间的折中。参照文献4 ,QoS的属性包括费用、响应时间、可用性、声誉。此外,还可能有一些领域特定的QoS属性,例如一个运输服务的QoS属性可能有温度或湿度。通常,一个用户可能对某些 QoS属性给出限制值,
11、例如费用不能大于某个给定值,进而来影响服务的选择。另一方面,服务提供者可以把QoS 属性值的估计范围作为和潜在用户之间契约的一部分,例如服务等级协定(Service Level Agreement,SLA)。SLA是用户与服务提供者之间达成的有关服务内容、服务质量等方面的合约,它规定了服务提供者必须为用户提供的具体服务参数。SLA评价的最大优点是赋予用户获知系统性能的权利, SLA评价也为系统提供者提供了一种竞争依据。服务查询引擎(service query engine)是SEIFCW的核心模块之一,它的主要功能包括领域服务查询请求提交、服务检索、服务选择、服务组合并生成基于XML的服务组合
12、描述语言等。由于QoS对于Web 服务在领域的成功应用非常关键,因此,如何使查询的组合服务提供预期的服务质量正成为服务查询引擎设计面临的重要挑战。其中, 一个有关的问题是如何使抽象服务与具体服务之间的快速绑定,且使实际的Web服务满足SLA规定的QoS约束,并使服务集成者所选择的一些适应度标准最优化(例如,费用最小) 。另外,求解QoS 感知组合问题的解是一个NP 难题 5。一些方法,主要是基于线性规划, 已经在一些文献中提出 6。为此,本文提出了一种新颖的服务查询和优化模型用于保障SEIFCW 应用的QoS 感知的服务组合,并用遗传算法(Genetic Algorithm,GA)来解决QoS
13、感知的组合问题。所提模型的主要特点是:使用关系表达查询请求;领域服务的抽象化;可扩展的Web服务QoS 度量;基于多度量的组合服务QoS优化。论文的随后部分组织如下:小节2介绍一种基于关系和抽象操作的QoS感知的Web 服务多层查询体系结构;小节3建立QoS感知的Web服务查询优化数学模型,并使用遗传算法对其目标进行求解;小节 4给出模型在SEIFCW中的实现,并报告和讨论了仿真的结果;小节5介绍一些相关工作,并和相关研究作比较;小节6是最后的结论,同时对未来的工作进行展望。2 Web 服务的查询模式Web 服务的使用主要由通过发送和接收消息的一组调用操作组成。尽管这可满足简单应用的需求,但对
14、访问千变万化的 Web服务的复杂应用,需要使用一种集成方式去操作与交付 Web 服务的功能。此外,随着 Web 服务的广泛应用,提供相同功能的服务越来越多。但由于竞争,Web 服务提供的这些功能 (例如,要求不同的输入和输出参数)和使用条件(QoS 的等级不同)的方式方面是有区别的。另外,满足用户的需求有时并不需要返回精确的答案。事实上,用户可能对可供选择的或部分的答案满意。针对上述挑战,需要提出一个在操作调用期间查询Web服务和信息流的新方法,以便决定各种Web 服务操作的调用,返回相应输出结果的整合。该方法强调查询决策过程的优化,同时应允许部分的答案。2.1 Web服务查询模式的体系结构为
15、了方便用户和 Web 服务的交互,需要使用一个通用的方法表达给定应用领域的 Web 服务空间。为此,我们提出了图 1 所示的三层查询模式,并定义了一组称为抽象操作的特定领域操作,它是对特定领域 Web 服务应用共用操作的抽象化( 虚拟化),不属于任何实际的 Web 服务。查询层(query layer):由提供给用户一个表达和提交查询语句到 Web 服务接口的关系集组成,可使用一种从 XML 文档中抽取数据的查询语言规范 XQuery 来构造。用户从查询层提交关系联合查询(关系和条件的联合) ,其通用形式如下:kiiCXRQ),(:)(其中,符号:-表示映射,R i 是来自查询层的关系,X 和
16、 Xi是变量元组;C k 代表查询中出现的变量条件。条件的形式是 Ck = x op c, 式中 x 是出现在任何一个 Xi中的输入或输出变量,或者是 QoS 规格的元素( 参见小节 3),c 是一个常量,op=, , , , 。查询模型根据各种映射规则把每个关系映射到对应的抽象操作中。抽象层(abstract layer):由一个特定领域典型地提供的类 Web 服务操作组成的,可采用基于 XML 的 WSDL 对包含其操作的服务接口进行描述。标准 WSDL 不提供对 QoS 支持,需要对 WSDL 进行扩展,以便能使 WSDL 恰当地提供 QoS 信息。例如,通过扩展 WSDL 提供一个服务
17、提供者和请求者之间的 Web 服务 SLA 文档引用,可使 WSDL 的每个操作和一个由 Web 服务 SLA 定义的 QoS 相关联,其格式为:QoS 是一个属性集,它的每一个属性, 例如领域(domain)、尺度(scale)和量制(metrics)等需要根据具体应用场景来精确定义。这些 QoS 属性的抽象集都需要绑定到某个接口操作,以便规定它的应用属性集。具体层(concrete layer):代表 Web 上提供的 Web 服务空间,即潜在的目标查询侯选者,包括元服务与组合服务,且与服务等级(service level)有关。当一个服务提供者在注册中心的数据库保存他的服务和服务等级时,
18、其应用范围相应地被定义。一个提供者和一个请求者能协商更精确的属性,并创建一个 SLA 作为契约。由于 Web 服务开始是未知的,查询模型需要发现它们,并与出现在查询中的抽象操作相匹配。使用该查询模式的优点之一是容易使用 UML 的模式驱动方法(model-driven methodology)建模和开发实现 7。下面是抽象层到具体层的转换定义。定义 1。 假设抽象服务接口 I 的 QoS 集定义为如下的一个属性 Pi 集:Q I = P1,P n。其中,对每个 PiQ I ,1in 都有一个领域 dom(Pi)和尺度 scale(Pi)的度量值。当然,属性被度量或赋值的前提条件是首先定义好每个
19、属性的量制 metric(Pi)。此外,假设 。那么,一个接口 I 到一个 QoS 等级为 LS 的具体服务 SI 的映射定义如下:IQIdomdo( )()|): doII式中符号是条件连接词,符号的右边谓词逻辑规定了映射需满足的约束。2.2 关系到抽象操作的映射查询层的关系定义了应用域一个具体的视图,可表达为针对抽象操作的连接查询,似乎抽象操作就是关系。定义 2。 假设 R 是查询层定义的关系集合, V 是抽象操作集合,则对任何关系 RiR ,),(:),( 211 mjjjnj yyVx 式中 xi 是 Ri 的属性, VjV ,y ji 是相应操作的输入和输出变量。这个定义意味着为了获
20、得 Ri 的元组,需要调用不同的操作Vj,但并不要求对这些操做任何的排序或限制并发。用户能直接地使用抽象操作访问 Web 服务,但关系的使用有两个好处。首先,让用户使用一个自然的方式表达和提交类似数据库的查询;另一方面,为对服务空间一些特定部分感兴趣的某个特定用户组提供了量身定制的视图。2.3 抽象操作表示抽象操作代表了一个特定应用域所能提供的典型功能。对在查询中出现的任何抽象操作,最终都要定位到相关的 Web 服务操作,因此抽象操作需要有一个语义描述和句法属性,同时还要有描述具体 Web 服务和抽象操作的一个共同的本体(ontology) 8。任何一个操作,无论是抽象的还是具体的,语义上都可
21、以通过它的功能(function)和类别(category)来描述。功能包含两个属性:功能性(functionality),代表该操作所提供的业务功能;术语(term),包含该操作的一个可替代功能性命名术语列表。类别同样也包含两个属性:领域(domain) ,给出操作的具体应用领域; 术语,抽取出与具体应用领域类似的领域分类术语词表。任何一个操作在调用前都要求它的输入变量被赋值。在构造查询时,用户可为不同的变量自由地指定任意类型的条件。 这可能导致一种情形,就是系统不能调用操作,这是由于一些输入变量遗漏了赋值。如果所有的抽象操作描述都给出了其输入变量的各种可能值,上述问题就会解决(尽管对所有的
22、输入变量不可能总是做到这一点 )。本文扩展每个输入变量到所有可能取值,以便尽量图 1 QoS 感知服务查询的三层体系结构用户Q(X)查询层抽象层QoS接口尺度属性领域 量制*1*1*1操作* 1 1 实现1实现1具体层服务服务等级SLAAgreement请求者 提供者1*1*1*1*满足出现在查询中任意一个条件。下面的五元组形式化地表达了每个抽象操作:Vop = 上式中,In 是输入变量的集合;Out 是输出变量的集合;Restriction 是输入变量的定义域,它由一组对偶(x, range)构成的集合, 其中 x 是 In 中的枚举变量,而 range 是 x 的所有可能值的集合;Cate
23、gory 描述兴趣域;Function 描述业务功能。2.4 抽象操作的匹配类型由于 Web 服务提供者之间的竞争,必然在请求输入、返回输出和 QoS 等方面存在差异。例如,不同运输服务提供者的运输费用、快捷性和服务内容等可能有所区别。这就意味着对某个给定的抽象操作并不总能找到一个精确的匹配。作为替代,仅查找与联合查询中出现的抽象操作精确匹配的具体操作,一个允许抽象操作和具体操作的属性不一致的更灵活的匹配方案可能更满足用户的需求。首先定义一个相似函数 Similarity 来检查两个操作中的两个属性是否相似:如果 x 和 y 符合应用域本体库所定义的相似概念,那么 Similarity (x,
24、 y)就为真。定义 3(操作的输入变量集相等)。 对任意的两个操作 op1 和 op2,In(op 1)=In(op2),当且仅当: In(op 1)和 In(op2)变量数相同,且 x In(op1),yIn( op2),或者xIn(op 2),y In(op 1),使 Similarity (x, y)满足真值。类似地能定义 Out(op1)=Out(op2)。用同样的方法,也可以分别定义 In(op1)In( op2)和 Out(op1)Out( op2), 其中第一个集合是第二个集合的子集。假如 v 和 c 分别表示抽象操作和具体操作,通过改变抽象操作和实际操作的比较方式,可以识别出四
25、种不同的匹配类型。定义 4(抽象操作匹配类型)。 如果两个操作 v 和 c 有相同的输入和输出变量,以及相同的 Category 和 Function,称之为精确匹配 Exact(v, c);如果两个操作 v 和 c 有同样的输入和输出变量,且它们的 Category 和 Function 发生交叠,称为重叠匹配 overlap(v, c);假如两个操作 v 和 c 有同样的 Category 和 Function, 且 Out(c)Out(v)或者 In(c)In(v),称为部分匹配 partial(v, c);如果两个操作 c 和 v 满足 Out(c)Out(v)或者 In(c)In(v
26、) ,且它们的 Category 和 Function 属性交叠,称为部分和重叠匹配 composite(v, c)。由定义 4 可知,精确匹配要求具体操作与抽象操作的每个属性概念都相同,这是最高级别的匹配;重叠匹配提供抽象操作的相近功能的具体操作;部分匹配符合两个操作的输入和输出属性不一致的情形;部分和重叠匹配组合了重叠匹配和部分匹配,并且各种匹配存在如下关系。命题 1。 “=”表示蕴含关系, “”表示逻辑析取关系, “” 表示逻辑合取关系,则存在 Exact(v, c) = partial(v, c)overlap( v, c);Exact(v , c)partial(v , c)over
27、lap(v , c)=composite(v, c)。为了量化各种匹配类型的匹配精确度,还需要给每一个匹配类型赋予了一个匹配度(matching degree),以此直接地影响查询结果的质量。上述每个匹配类型分别获得 1、3/4、1/2 和 1/4 的匹配度。该取值是任意指定的,主要是为了区分不同的匹配精确度。3 基于遗传算法的 Web 服务查询优化方法描述由于存在不同 Web 服务的几个服务执行计划能潜在地解决相同的查询。因此,需要为在所有可能的执行规划中挑选最优的Web 服务建立适当的标准。相互竞争的 Web 服务之间的一个关键特色是他们的 QoS,它包含几个定量的和定性的参数,该参数度量
28、了 Web 服务所发布的功能是否好。 现在已经建立了描述 响应时间(time)、服务费用(cost)、可用性(availability)和可靠性(reliability) 的通用 QoS 规格 4。对于领域具体 QoS 规格要根据具体领域进行定义,本文利用可扩展本体技术建立起来了领域内专门的 QoS 规格。通常,每个 Web 服务都包含一组操作,调用的最小粒度为操作(operation)。Web 服务 ws 的操作 op 的 QoS 定义如下:QoS( ws, op) =, 其各参数的含义为:T(ws , op)表示执行时间;C(ws, op)表示费用;R(ws, op)表示可靠性;A(ws
29、, op)表示可用性;U(ws, op)表示领域 QoS 规格,定义为:(U 1(ws, op), U2(ws, op) , , Un(ws, op),即 n 个用户定义的属性组成的向量。为便于 QoS 模型的建立和求解,把某个 Web 服务 ws 的调用操作 op 记为任务 t,则上面给出的 QoS 模型可简化为如下的一个 5 元组,即 QoS(t) =。每个质量标准都有相应的计算和评价方法,并且 QoS 模型有一个总体评价方法。优化过程的目的是使下面 QoS 参数的每一个值为最大或最小:响应时间(T):代表一个服务操作在被调用后平均返回结果的时间,包括服务计算时间(T com)、中间件开销
30、(T mid)和往返通信时间(T net)。总的响应时间 T(t)= Tcom(t)+ Tmid(t)+ Tnet(t)。服务费用(C):是一个 Web 服务消费者每次服务调用所必须支付的相关费用。可靠性(R):表示服务操作可用的概率,其定义如下: ,其中 MTTF(t)表示操作的平均无故障时MTR(t)F(t)(tR间,MTTR( t)表示操作的平均修复时间。可用性(A):代表一个 Web 服务正常运行的概率。取值越大意味着有较高的可用性,而较小的取值表示可用性低。由于 Web服务是按次进行调用的,可以采用离散时间模型来描述其可用性:,其中 (t)i 定义如下:nttAii1)(lm)(,
31、否 则 果,0作i1)(it用户定义(U):服务消费者定义的领域 QoS 规格,如声誉(reputation)、安全性(security)和互操作性(interoperability)等。优化的目标是使负向参数(如反应时间和费用 )减少到最小值,同时使正向参数 (如可用性和可靠性)取得最大值。正如引言所描述的那样,本工作的一个目标是基于 GA 的方法,能迅速地确定绑定到抽象服务的一个具体服务集,构成一个组合服务的工作流。其中的需求包括:满足基于 SLA 的 QoS 约束。例如,服务的用户可能有一个有限的预算,因此服务费用受到一定的约束,或者响应时间不能超过某个约定。时常,局部限制( 例如,特定
32、操作的费用不能超过限制 )和全局限制(例如,总的响应时间受约束)需要同时被满足;使一些特别的 QoS 参数的某个函数最优化。例如,用户可能想使响应时间最段,同时保持费用低于某个限制。随之而来,还应该考虑由 N 个抽象服务 (操作)构成的一个组合服务 S=ws1,ws 2,ws N,其结构通过一些工作流描述语言来定义。每个元素 wsi 能被绑定到 M 个具体服务 csi1,cs iM,它们在功能上是等价的。在描述使用 GA 找到最优化问题的解之前,还需要描述怎样计算一个组合服务的 QoS,这要从从元服务的 QoS 属性值计算开始。3.1 计算组合服务的QoS计算组合服务的 QoS 方法类似文献4
33、 提出的方法,工作流的描述语言限定为 BPEL4WS。对工作流中的一个 Switch 构造,每个 Case 语句被标注为可能的选择。例如,对一个包含 Switch 的工作流,它由两个 Case 语句组成,费用分别是 C1 和 C2 且出现的概率为 p 和 1 p,则总的费用计算公式如下:pC1 + (1-p)C2 显然,概率是由工作流设计者初始指定,最终还需要通过监测工作流执行所获得的信息加以更新。While 不同于文献4的 Loop 处理,主要地建议采纳一个到达 Switch 构造的机制(基于进入/退出 While 的概率)。我们的方法类似文献6 所采用的方法。例如,While 被标记为一个
34、估计的迭代数 k。代替展开的 While,这里的 While 的 QoS 计算考虑迭代因子k。例如,假如 While 复合体有一个代价 Cl,那么 While 的估计代价将是 kCl。这种处理 While 方法有两个优势:能迅速计算总的工作流 QoS,而不必展开 While; 被估计的 QoS 反映了 While 的迭代数。表 1 计算单个工作流构造的 QoS 属性的聚集函数QoS 属性 Sequence Switch Flow WhileT(t) miitT1)( )(1iniaitTp,21|)(pitTMax)(tTkC(t) iitCiiitCpiitC1 tCA(t) miitA1)
35、( )(1iniaitAp iitA)(ktA)(R(t) iitRiiitRpiitR1 ktRU(t)(isUf,21m)(,iaiBUf21n)(iFUf,2)(,UfL表 1 显示了单个工作流构造的 QoS 属性的聚合函数。一个组合服务的具体应用例子就是一个组合服务的描述,在该描述里,每个抽象服务被绑定到某个相应的具体服务中,总的 QoS 能通过应用表 1 描述的规则被计算。尽管对一些标准的 QoS 属性聚合函数已经被清楚地指定了 4,6,但可能有其它属性(例如,依赖领域的属性) 需要用户基于抽象操作本体库来定义,其单个工作流的聚合函数也要用户指定(见表 1 的最后一行) ,并和标准的
36、 QoS 属性一样发布到服务注册中心的 WS-QoS 本体库中(见图 3) 。该表并不是完备的,它只包含原型系统要使用的规则,且除了 While,聚合函数和文献4 所提出的计算方法基本一致。这些函数能被递归地定义在工作流的复合节点,即对任务t 1,t m的一个 Sequence 构造,响应时间和费用函数是加法,而可用性和可靠性是乘法。Switch 构造的 Case 1,n,其相应概率分别为 pa1,p an,并满足 ,任务分别为 t1,t n,总是1niaip被估计为每个任务的属性值之和,乘上它所属 Case 的概率。Flow 构造的聚合函数基本上同 Sequence 构造相同,除了时间属性,
37、它是并行任务t 1,t p的最大值。最后,具有任务 t 迭代 k 次的 While 构造等于 k 次 t 的 Sequence 构造。3.2 Web服务等级一个 Web 服务在其生命期可能存在起伏,因而它不可能完全实现 SLA 所广告的 QoS 参数。一般来说,大部分用户能接受QoS 参数的实际值和广告值之间的细微偏差。然而,巨大的差距就表明了 Web 服务所提交功能的性能正在下降。由于上述原因,系统需要对被调用的 Web 服务的 QoS 参数实施监控。本质上,QoS 参数波动的度量是给 Web 服务提供一个评估,而这种评估在优化过程中扮演一个重要的角色。一个用户每次选择和调用一个 Web 服
38、务的某个操作 op 时, 我们度量期望的 QoS 和实际发布的 QoS 之间的距离。此处的 QoS 距离是所有 QoS 参数的偏差(或它们的倒数 )加权之和。更精确地说,假设 pQi 和 dQi 分别是 QoS 的第 i 个参数的期望值和实际交付值,pos 和 neg 分别是取最大值和最小值的 QoS 参数序号集, i 指一个服务集成者 (或用户)给一个特定的 QoS 属性所赋予的重要性,则 QoS 距离 (DQoS)的计算公式如下:(1) negi opQopdiposi iiiQoS iiopQd )()() (1)1Web 服务等级用下面公式来刻画:(2)(15.0)()(1.)( )(
39、opDeopeopratingQSDqQSQoSDqoS, ,式(2)中的负阀值 和正阀值 +分别称为置信下限和置信上限; q 为调整 QoS 距离波动参数,通常取值为 1。公式表明:如果一个 Web 服务的 QoS 距离满足 SLA 所规定的 QoS 参数波动区间( ,+),那么它接收正常的等级 1;如果一个 Web 服务的 QoS距离低于负阀值 , 那么它的等级将减少;如果一个 Web 服务的 QoS 距离高于正阀值 +, 那么它的等级将增加。一个简单的 Web服务等级把所有的 QoS 波动归纳到单一的公式中。通过分配给每个参数的各自等级,我们能分别处理每个服务的 QoS。下节将使用每个参
40、数的等级给目标函数中相应的 QoS 赋权值,或聚集所有等级,并用它们度量整个优化公式。在 Web 中,目前已存在多个等级方案系统,其实现主要是依赖用户的反馈,包括消费者对产品和服务的评价,以及来自提供者的个人体验。本文基于图 1 的查询基础结构,使用了一个专用 Agent9负责对 Web 服务操作调用的监控,从而能方便地定期更新并细化自己的服务等级。3.3 目标函数和约束条件Web 服务是否成功地发布了它们的功能主要取决于 QoS。因而,优化过程的目标是选择和使用具有最优 QoS 参数的 Web 服务。另外两个参数等级(rating)和匹配度(md)进一步细化了服务功能发布成功的定义。因此,我
41、们能通过下面三个度量,即期望的QoS 参数、等级和匹配度,来刻画解决一个查询所涉及的任何 Web 服务操作。已存在计算一个基于它的 QoS 参数的操作总体质量的各种方法。在决策过程中广泛地使用的简单添加权重方法通常取得了非常接近更为复杂的方法取得的排序结果。该方法包括以下三个基本步骤,操作质量是最后一步获得的数值之和。对 L 个不同的 QoS 参数标准化,以便使它们可比较。为参与查询的每一个 QoS 参数施加用户指定的权重 i,并且满足 10Lii,为每一个操作添加经过加权和标准化处理后的 QoS 参数。为解析一个查询过程中的每个抽象操作 opj(对应匹配的具体服务数组项目索引),只要定义一个
42、取最大值的目标函数 fj(opj):(3)()()( posijinegijijjjj PNopmdratingopf 式中(4) 否 则, , 如 果1 0)()()()()( minmaxminmax jjijjiji opQopQopopN(5) 否 则, 如 果,1 0)()()( minaxminmax ijjiji pQopQopopP其中 pQimax(opj)是匹配相同抽象操作 opj 的所有具体操作中第 i 个 QoS 参数的最大值,而 pQimin(opj)是其最小值。对目标 fj(opj)(j=1,2,N)正规化处理 ,设 fjmax(opj)和 fjmin(opj)分别
43、为目标 fj(opj)的最大值和最小值,线性正规化后的目标值vj(opj)为:(6)()(minaxjjjjjj opffop若 是操作 opj 其权重,并满足 ,而 ci(g)是联合查询的约束条件,可由算法直接从查询中获得 (等式条件),j 1,0Nijj或者从抽象操作定义的范围获得( 不等式条件 ),则查询过程的可行解向量 g=(op1,op 2,op N)是下列多目标优化问题的解:(7)0,21,)(. )(max gKictsopvFiNjjj3.4 使用遗传算法的搜索策略GA 本质上是一个通过群体的迭代来不断优化的过程 10。它简单、通用, 对问题的种类有很强的鲁棒性,很适合解决 N
44、P 问题。与线性整数规划不同,GA 对优化问题的目标函数和约束条件的线性化不施加限制,从而允许优化模型使用各种可能的 QoS 属性(甚至定制 )。为了让 GA 找到问题的一个解,首先需要使用一个合适的基因组给问题编码。在本文中,基因组使用了一个整数数组来表示,数组中的项目数为组成我们服务的抽象服务数,数组中的每个元素依次包含一个与抽象服务相匹配的具体服务数组项目索引。图 2给出了基因组是怎样产生的原理。交叉(crossover)算子是标准的两点交叉,而变异(mutation) 算子随机地选择一个抽象服务 (即基因组中一个位置),并且随机地用另一个可利用具体服务取代对应的具体服务。显然,能从 G
45、A 进化中获得仅有一个具体服务可利用的抽象服务。选择(selection)算子采用经典的轮盘赌(roulette wheel)选择法。其中,若某个个体 i,其适应度为 Fitness(i),则被选中的概率 Pi为 。算法还在新一代个体产生之后采用最佳个体保存方法(elitist model),即如果新一代群体中适应度topsizeii iFntnp1)()(最高的个体适应度小于老一代最佳个体,而把老一代最佳个体保存入新一代。接下来的问题是设计一个适应度(fitness)函数。适应度函数需要使一些 QoS 属性( 如可靠性)最大化,而其它一些属性(例如费用)最小化。当使用用户定义的领域特定的 Q
46、oS 属性时,适应度函数规约留给工作流设计者。另外,适应度函数必须惩罚不满足约束条件的个体,驱动进化有助于约束满足。考虑到初始种群(设大小为 m)满足式(7)中约束条件,结合问题所采用的编码和遗传算子,满足约束条件 g0 是显然的。为此,可定义如下的一个约束满足的罚函数:(8) KiiygcH1*)()(式(8)中系数 yi 为: ogcii)(,10进而得到,包含一个罚函数的基因组 g 的适应度函数如下:(9)()(rHgFit式(9)中 r 为罚函数尺度系数,r0。最后,有必要定义 GA 的优化准则。根据离线性能函数(off-line performance):(10)TtfTPt/)(*
47、,)(1其中 T 为当前计算中所出现的遗传代数,f( *,t)=maxf(1,t), f(2,t), f(m,t),即第 t 代中的最佳个体适应值。该函数指标反映了群体中最佳个体适应值经平滑处理后的变化情况,描述了个体的进化能力和 GA 的搜索能力,并最终趋向一个收敛值,所以可以用PF(T+1)-PF(T) 作为终止循环的条件之一,文中取 =1.010-5。为了防止群体规模太大,搜索精度要求太高,导致搜索时间过长,本文同时采用设定最大代数的方法作为另一个终止循环条件。图 2 基因组编码CS21CS25OP1 OP2 OPN基因组CS11CS12CS13CSNkCSN1具体服务3.5 动态适应度
48、函数定义在等式(9)中的适应函数对违反约束的个体包含了一个静态惩罚。换句话说,每一代的惩罚是同样的。通常,如果惩罚因子的权重 r 高,那么违反约束的个体存在某种风险,但却可能放弃了一个最为接近的好方案。作为替代,可以采用一个动态的惩罚,即惩罚的权重随着代数而增加。在遗传的早期世代,还可能需要考虑一些个体违反约束。经过若干世代后,种群大体上应能满足约束,进化余下的工作是如何改进适应度函数。动态适应度函数的定义如下:(11)tMaxgrHFtgi *)()(,(这里 t 是当前代数,tMax 是最大遗传代数。3.6 适应度函数的拉伸方法遗传算法在运行早期个体差异较大,当采用轮盘赌方式选择时,后代产生个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,造成早熟(premature) ;在遗传算法后期,适应度趋向一致,优秀的个体在产生后代时,优势不明显,从而使整个种群进化停滞不前(stalling)。因此,对适应度适当地拉伸(stretching) 是必要的。本文借鉴模拟退火(simulated annealing) 10思想,提出如下适应度拉伸方法:(12)0,1)(tgFieit其中,式中