首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 软件套件 / 软件组件 / 一种基于蚁群算法的部署优化方法

一种基于蚁群算法的部署优化方法

阅读:1026发布:2020-06-21

专利汇可以提供一种基于蚁群算法的部署优化方法专利检索,专利查询,专利分析的服务。并且本 发明 针对 软件 部署优化问题提出了一种新的基于蚁群 算法 的部署优化方法(Ant Colony Optimization for Deployment Optimization,ACO-DO)。该方法利用效用函数平衡冲突的性能评价因素,通过设计基于问题的启发式,提高算法的收敛速度;通过在部署方案构建过程中,考虑方案组件的选择顺序,提高部署方案的构建 质量 ;通过增加局部搜索过程,避免过早收敛于局部最优解。理论分析和实验结果表明,在实现软件部署优化问题时,ACO-DO比现有的蚁群系统(Ant Colony System,ACS)、 遗传算法 (Genetic Algorithm,GA)具有更好的综合性能。,下面是一种基于蚁群算法的部署优化方法专利的具体信息内容。

1.一种基于蚁群算法的部署优化方法,其特征在于,包括:
构建面向服务软件的部署优化模型,部署优化模型主要包含四部分:应用软件模型ASM、运行平台模型RPM、应用场景AS、和约束CON,其中,ASM用于提供部署软件的信息,RPM提供用于部署的硬件节点信息,AS提供软件性能评估的其它相关因素信息,CON提供软件部署过程中所需满足的约束条件;
基于三种预设性能指标定义目标函数,三种预设性能指标为组合服务的平均延迟时间、组合服务的平均吞吐量以及硬件资源的平均利用率,目标函数定义为公式(1):
其中,d为部署方案,UFu、UFl和UFt分别表示硬件节点的利用率、组合服务的平均延迟时间、组合服务的平均吞吐量所对应的效用函数;使用UC表示使用该软件的所有用户,为一非空用户集,uci表示其中第i个用户;使用N表示可
供软件部署的所有硬件节点, 为一个非空有限硬件节点,nj表
示其中第j个硬件节点;使用CW描述一个组合服务时服务之间的交互关系,为一个非空有限控制流集,第i个控制流wi为描述了第i个
组合服务;lk和tk分别表示在部署方案d下第k类组合服务的平均延迟时间和平均吞吐量;uj表示在部署方案d下第j个硬件节点的利用率;
根据构建的部署优化模型和目标函数设计基于蚁群优化的软件的部署优化方法ACO-DO,并基于优化方法ACO-DO对软件的部署进行优化。
2.如权利要求1所述的方法,其特征在于,设计基于蚁群优化的软件的部署优化方法ACO-DO具体包括:
设计信息素与启发式;
根据设计的信息素和启发式,构建部署方案。
3.如权利要求2所述的方法,其特征在于,在根据设计的信息素和启发式,构建部署方案之后,所述方法还包括:
为部署优化方法ACO-DO设置局部搜索过程。
4.如权利要求2所述的方法,其特征在于,设计信息素与启发式具体包括:
将启发式定义为公式(2):
其中 ,τ(i ,j) 表 示服务 si分 配到 硬件节 点n j所对 应的 信息素 ,为当前部署在硬件节点nj上的所有服务的集合,sk,si分别为
其中第i个、第k个服务;IF(sk,si)为服务sk与si之间的交互频率; 为一个计算能函数,指定每个硬件节点的计算能力; 为一个请求到达函数,计算服务在单位时间内接收的平均请求数; 为一个服务时间需求函数,指定每个服务请求对单位计算能力的平均服务时间需求;DN为已经部署服务的硬件节点数。
5.如权利要求2所述的方法,其特征在于,在根据设计的信息素和启发式,构建部署方案时,采用服务列表表示方案构建过程中服务的分配顺序,并对服务列表进行优化,其中,服务列表的优化使用绝对位置模型表示信息素模型,信息素τs(i,k)表示服务si位于服务列表中第k个位置的期望值,则为服务列表优化问题设计的启发式为:
ηs(i)=RA(si)                  (3)。
6.如权利要求2所述的方法,其特征在于,根据设计的信息素和启发式,构建部署方案,具体包括:
(1)将所有服务都放置于列表Sun中,即Sun={s1,s2,…,sSN}为一个非空有限服务集,表示组成软件的所有服务,且k=1,sList={};
(2)从列表Sun中选择一个服务si放置到服务列表sList的第k个位置;选择规则如下:首先,产生[0,1]之间的一个随机数q,并将其与用户定义的参数qs进行比较,如果q<qs,则为服务列表中第k个位置选择的服务si为:
否则,采用轮盘选择规则完成服务列表第k个位置的服务选择,即选择在服务列表的第k个位置放置服务si的概率pik定义为:
(3)将服务si从列表Sun中移除,且k=k+1,如果k<SN,则跳转到第(2)步;
(4)选择服务列表sList中第一个服务sp,并利用伪随机比例规则为服务sp选择一个部署节点,选择规则如下:首先产生[0,1]之间的一个随机数q,并将其与用户定义的参数qd进行比较,如果q<qd,则服务sp分配的硬件节点nj为:
否则,采用轮盘选择规则完成服务到硬件节点的分配;在轮盘选择规则中,将服务sp分配给硬件节点nj的概率ppj为:
其中,α、β为预设参数;
(5)如果将服务sp分配给硬件节点nj能够满足约束CON,则将服务sp从列表sList中移除;如果 则跳转到第(4)步;
(6)输出构建的部署方案d。
7.如权利要求3所述的方法,其特征在于,为部署优化方法ACO-DO设置局部搜索过程,包括:
(1)当前m个最优部署方案和本次迭代所构建的部署方案组成的方案列表为dList,在该列表中,第i个元素的目标函数值为OBVi,并k=1;
(2)根据部署方案的目标函数值,采用轮盘选择规则从列表dList中选择一个部署方案di其中选择列表dList中的部署方案di的概率为:
(3)选取部署方案di的第k个解组件,并判断如果将其作为新部署方案的解组件时是否能够满足约束CON,如果满足,则将该解组件添加到新部署方案中,否则跳转到第(2)步;
(4)k=k+1,如果k<SN,则跳转到步(2),否则计算构建的部署方案的目标函数值,并将其与当前最优的部署方案进行比较,保留最优的部署方案和目标函数值。

说明书全文

一种基于蚁群算法的部署优化方法

技术领域

[0001] 本发明涉及软件部署与性能分析技术领域,具体涉及一种基于蚁群算法的部署优化方法。

背景技术

[0002] 面向服务的体系结构以其松耦合、可重用和易组合等特性,已被广泛地应用于当前软件系统的开发之中,采用这一体系结构开发的软件被称为面向服务的软件。面向服务的软件经过长时间的运行会出现性能降级问题,即随着应用范围的扩展、用户数量的增多,软件的性能和服务质量严重下降。实践表明,面向服务软件性能降级的原因主要来自两方面:一是由于软件自身的设计或编码缺陷所引发的,通常可以从开发和构造的度对软件的设计和代码进行优化来解决;二是由于应用和系统环境的变化所引发的,例如运行环境中硬件资源供给不足或出现故障、用户数量增多、某时间段内某个应用服务或业务工作流的使用异常频繁等都可能引发软件的性能降级,目前常用的方法是通过对软件部署方案和资源供给进行调整和优化来解决。例如,优化软件的部署结构,为负载较高的服务分配更多的计算资源;在相同节点上部署交互频繁的服务来减少通讯代价,都能够有效地提升软件性能,解决软件性能降级问题。但为面向服务的软件设计和开发能够表现出优异性能的部署方案较困难。
[0003] 国内外专家学者在软件部署方案的优化与评估方面展开了大量的研究,提出了一些解决方法。归纳起来,这些方法主要分为两类:一是以数理统计为基础的精确方法(例如,线性规划(Liner Programming,LP))。二是以元启发式为基础的近似方法(例如,遗传算法(Genetic Algorithm,GA),蚁群优化算法(Ant Colony Optimization,ACO))。
[0004] 本申请发明人在实施本发明的过程中,发现现有技术的方法,至少存在如下技术问题:
[0005] 精确方法建立在完善的数理统计基础之上,利用该类方法总能搜索到最优解,但需要耗费昂贵的计算成本;而近似方法利用元启发式为指导,虽可能无法获取最优解,但能够以较低的成本快速找到近似最优解。由于软件部署优化问题是典型的NP难题,在最坏的情况下求解该问题,所需耗费的时间将随着问题的规模呈现指数增长。为面向服务的软件设计和开发能够表现出优异性能的部署方案较困难。一方面,由于可能的部署方案总数通常非常巨大,探索可行的部署空间需耗费大量的计算成本。另一方面,评估性能的指标之间以及不同用户对同一指标的评价之间常常存在冲突,搜寻最优的软件部署方案常常需要衡量这些冲突因素。
[0006] 由此可知,现有技术中的方法存在综合性能不佳的技术问题。

发明内容

[0007] 有鉴于此,本发明提供了一种基于蚁群算法的部署优化方法,用以解决或者至少部分解决现有技术中的方法存在综合性能不佳的技术问题。
[0008] 本发明提供了一种基于蚁群算法的部署优化方法,包括:
[0009] 构建面向服务软件的部署优化模型,部署优化模型主要包含四部分:应用软件模型ASM、运行平台模型RPM、应用场景AS、和约束CON,其中,ASM用于提供部署软件的信息,RPM提供用于部署的硬件节点信息,AS提供软件性能评估的其它相关因素信息,CON提供软件部署过程中所需满足的约束条件;
[0010] 基于三种预设性能指标定义目标函数,三种预设性能指标为组合服务的平均延迟时间、组合服务的平均吞吐量以及硬件资源的平均利用率,目标函数定义为公式(1):
[0011]
[0012] 其中,d为部署方案,UFu、UFl和UFt分别表示硬件节点的利用率、组合服务的平均延迟时间、组合服务的平均吞吐量所对应的效用函数;使用UC表示使用该软件的所有用户,为一非空用户集,uci表示其中第i个用户;使用N表示可供软件部署的所有硬件节点, 为一个非空有限硬件节点,nj表
示其中第j个硬件节点;使用CW描述一个组合服务时服务之间的交互关系,为一个非空有限控制流集,第i个控制流wi为描述了第i个
组合服务;lk和tk分别表示在部署方案d下第k类组合服务的平均延迟时间和平均吞吐量;uj表示在部署方案d下第j个硬件节点的利用率;
[0013] 根据构建的部署优化模型和目标函数设计基于蚁群优化的软件的部署优化方法ACO-DO,并基于优化方法ACO-DO对软件的部署进行优化。
[0014] 在一种实施方式中,设计基于蚁群优化的软件的部署优化方法ACO-DO具体包括:
[0015] 设计信息素与启发式;
[0016] 根据设计的信息素和启发式,构建部署方案。
[0017] 在一种实施方式中,在根据设计的信息素和启发式,构建部署方案之后,所述方法还包括:
[0018] 为部署优化方法ACO-DO设置局部搜索过程。
[0019] 在一种实施方式中,设计信息素与启发式具体包括:
[0020] 将启发式定义为公式(2):
[0021]
[0022] 其中 ,τ(i ,j)表示服务si分配到硬件节点nj所对应的信息素,为当前部署在硬件节点nj上的所有服务的集合,sk,si分别为
其中第i个、第k个服务;IF(sk,si)为服务sk与si之间的交互频率; 为一个计算能函数,指定每个硬件节点的计算能力; 为一个请求到达函数,计算服务在单位时间内接收的平均请求数; 为一个服务时间需求函数,指定每个服务请求对单位计算能力的平均服务时间需求;DN为已经部署服务的硬件节点数。
[0023] 在一种实施方式中,在根据设计的信息素和启发式,构建部署方案时,采用服务列表表示方案构建过程中服务的分配顺序,并对服务列表进行优化,其中,服务列表的优化使用绝对位置模型表示信息素模型,信息素τs(i,k)表示服务si位于服务列表中第k个位置的期望值,则为服务列表优化问题设计的启发式为:
[0024] ηs(i)=RA(si)  (3)。
[0025] 在一种实施方式中,根据设计的信息素和启发式,构建部署方案,具体包括:
[0026] (1)将所有服务都放置于列表Sun中,即Sun={s1,s2,…,sSN}为一个非空有限服务集,表示组成软件的所有服务,且k=1,sList={};
[0027] (2)从列表Sun中选择一个服务si放置到服务列表sList的第k个位置;选择规则如下:首先,产生[0,1]之间的一个随机数q,并将其与用户定义的参数qs进行比较,如果q<qs,则为服务列表中第k个位置选择的服务si为:
[0028]
[0029] 否则,采用轮盘选择规则完成服务列表第k个位置的服务选择,即选择在服务列表的第k个位置放置服务si的概率pik定义为:
[0030]
[0031] (3)将服务si从列表Sun中移除,且k=k+1,如果k<SN,则跳转到第(2)步;
[0032] (4)选择服务列表sList中第一个服务sp,并利用伪随机比例规则为服务sp选择一个部署节点,选择规则如下:首先产生[0,1]之间的一个随机数q,并将其与用户定义的参数qd进行比较,如果q<qd,则服务sp分配的硬件节点nj为:
[0033]
[0034] 否则,采用轮盘选择规则完成服务到硬件节点的分配;在轮盘选择规则中,将服务sp分配给硬件节点nj的概率ppj为:
[0035]
[0036] 其中,α、β为预设参数;
[0037] (5)如果将服务sp分配给硬件节点nj能够满足约束CON,则将服务sp从列表sList中移除;如果 则跳转到第(4)步;
[0038] (6)输出构建的部署方案d。
[0039] 在一种实施方式中,为部署优化方法ACO-DO设置局部搜索过程,包括:
[0040] (1)当前m个最优部署方案和本次迭代所构建的部署方案组成的方案列表为dList,在该列表中,第i个元素的目标函数值为OBVi,并k=1;
[0041] (2)根据部署方案的目标函数值,采用轮盘选择规则从列表dList中选择一个部署方案di其中选择列表dList中的部署方案di的概率为:
[0042]
[0043] (3)选取部署方案di的第k个解组件,并判断如果将其作为新部署方案的解组件时是否能够满足约束CON,如果满足,则将该解组件添加到新部署方案中,否则跳转到第(2)步;
[0044] (4)k=k+1,如果k<SN,则跳转到步(2),否则计算构建的部署方案的目标函数值,并将其与当前最优的部署方案进行比较,保留最优的部署方案和目标函数值。
[0045] 本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
[0046] 本发明以面向服务的软件为研究目标,根据面向服务的软件需求和优化目标,构建了面向服务软件的部署优化模型,将ACO算法引入面向服务的软件部署优化问题之中,研究和设计了基于ACO算法和单目标优化策略的面向服务软件部署优化方法。在ACS变体的基础上,针对软件部署优化问题提出了一种新的基于ACO算法的部署优化方法(Ant Colony Optimization for Deployment Optimization,ACO-DO)。该方法利用效用函数平衡冲突的性能评价因素,通过设计基于问题的启发式,提高算法的收敛速度;通过在部署方案构建过程中,考虑方案组件的选择顺序,提高部署方案的构建质量;通过增加局部搜索过程,避免过早收敛于局部最优解。理论分析和实验结果表明,在实现软件部署优化问题时,ACO-DO比现有的ACS、GA具有更好的综合性能。附图说明
[0047] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048] 图1为本发明实施例中基于蚁群算法的部署优化方法的流程图
[0049] 图2为本发明实施例提供的方法中组合服务实例示意图;
[0050] 图3为MILP、ACO-DO、ACS和GA的执行时间;
[0051] 图4为MILP、ACO-DO、ACS和GA得到的目标函数值;
[0052] 图5(包括a和b)为ACO-DO、ACO-DO/H、ACS-H和ACS在实例5上运行的演化曲线图;
[0053] 图6(包括a和b)为ACO-DO、ACO-DO/BO、ACS-CO和ACS在实例6上运行的演化曲线图;
[0054] 图7(包括a和b)为ACO-DO、ACO-DO/L、ACS-L和ACS在实例8上运行的演化曲线图。

具体实施方式

[0055] 目前尚未提出专针对软件性能优化的部署框架和模型,因此无法显式、准确、全面地描述软件部署方案的性能建模、评估所需的各种信息。此外,当前软件部署优化算法主要采用传统的演化算法,在算法执行过程中存在收敛速度慢和过早收敛问题,并不能保证找到最优的部署方案。
[0056] 本发明针对上述问题,提供了一种基于蚁群算法的部署优化方法,改善了现有技术中的方法存在综合性能不佳的技术问题。
[0057] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0058] 本实施例提供了一种基于蚁群算法的部署优化方法,请参见图1,该方法包括:
[0059] 步骤S1:构建面向服务软件的部署优化模型,部署优化模型主要包含四部分:应用软件模型ASM、运行平台模型RPM、应用场景AS、和约束CON,其中,ASM用于提供部署软件的信息,RPM提供用于部署的硬件节点信息,AS提供软件性能评估的其它相关因素信息,CON提供软件部署过程中所需满足的约束条件。
[0060] 具体来说,本发明使用智能优化算法实现面向服务软件的部署优化,需要先将部署方案描述语言表达的信息转换成适合优化算法处理的信息,即构建面向服务软件的部署优化模型。本发明构建部署优化模型的基本思路是:从面向服务软件的部署方案描述语言提供的信息出发,确定优化模型所需要的目标函数、约束条件和相关变量及参数,从而得到优化模型。
[0061] 本发明针对的研究对象为面向服务的软件,该类软件以服务作为最小单元,并以组合服务的方式向用户提供不同类型的服务。每类组合服务由一组服务和一个控制流组成,每个控制流定义了组合服务内部服务之间的交互关系,不同的组合服务之间可能会共享相同的服务。附图2显示了面向服务软件的一个组合服务的例子,该组合服务由五个服务组成,当服务s_1执行完成后,将以80%的概率并行执行服务s_3和s_4,然后依次执行服务s_4和s_5,或以20%的概率直接执行服务s_5。
[0062] 本发明的优化目标是从大量的软件部署方案中得到使软件性能最优的部署方案,需要在优化过程中评估软件在不同部署方案下的性能,以评价部署方案的质量,因此,部署优化模型,除了需要给出部署所需的软件和硬件信息,还需给出评估软件性能所需的因素,如工作负载、性能评价标准等。本发明将这些因素统称为应用场景。在不同的应用场景下,软件的最优部署方案可能会不同。此外,软件的部署过程常常受到多类约束条件的限制,例如位置约束。为降低模型的复杂性,本发明只考虑位置约束和同位约束两类主要的约束。
[0063] 定义1.应用软件模型ASM是一个五元组ASM=(S,TR,SR,CW,ES):
[0064] ① 为一个非空有限服务集,表示组成软件的所有服务;
[0065] ② 为一个服务时间需求函数,指定每个服务请求对单位计算能力的平均服务时间需求;
[0066] ③ 为一个空间需求函数,指定每个服务运行时占用的内存空间;
[0067] ④ 为一个有限的控制流集合,其中wi为一个控制流,描述了实现一个组合服务时,服务之间的交互关系。
[0068] ⑤ 为一个事件规模函数,指定两个服务间交互的事件的平均规模。
[0069] 定义2.运行平台模型RPM是一个四元组RPM=(N,CP,AS,CC):
[0070] ① 为一个非空有限硬件节点集,表示可供软件部署的所有硬件节点;
[0071] ② 为一个计算能力函数,指定每个硬件节点的计算能力。
[0072] ③ 为一个可用空间函数,指定每个硬件节点上可用的内存空间。
[0073] ④ 为一个通信能力函数,指定任意两个硬件节点之间的网络链接的通信能力。
[0074] 定义3.应用场景AS是一个五元组AS=(RA,IF,UC,PM,UF):
[0075] ① 为一个请求到达函数,指定服务集S中的每个服务接收的请求的平均到达率,即服务在单位时间内接收的平均请求数。
[0076] ② 为一个交互频率函数,指定任意两个服务之间的交互频率。如果si=sj或si与sj之间不存在交互,则IF(si,sj)=0。
[0077] ③ 是一个非空有限用户集,表示使用该软件的所有的用户。
[0078] ④ 是一个非空有限指标集,表示用于评估性能的所有指标。
[0079] ⑤UF={UF1,UF2,…,UFMN}为一个非空有限效用函数集,其中UFi指定第i个性能指标对应的效用函数。
[0080] 定义4.约束CON是一个二元组CON=(LC,CLC):
[0081] ①LC:S×N→{0,1}为位置约束函数,用于约束服务到硬件节点的分配。如果服务si可以部署在硬件节点nj上,则LC(si,nj)=1,否则LC(si,nj)=0。
[0082] ②CLC:S×S→{0,1}为同位约束函数,用于约束两个服务之间的位置关系。如果服务si和sj必须被部署在同一个硬件节点上,则CLC(si,sj)=1;如果服务si和sj不能被部署在同一个硬件节点上,则CLC(si,sj)=-1,如果si和sj之间不存在这一约束,则CLC(si,sj)=0。
[0083] 步骤S2:基于三种预设性能指标定义目标函数,三种预设性能指标为组合服务的平均延迟时间、组合服务的平均吞吐量以及硬件资源的平均利用率,目标函数定义为公式(1):
[0084]
[0085] 其中,d为部署方案,UFu、UFl和UFt分别表示硬件节点的利用率、组合服务的平均延迟时间、组合服务的平均吞吐量所对应的效用函数;使用UC表示使用该软件的所有用户,为一非空用户集,uci表示其中第i个用户;使用N表示可供软件部署的所有硬件节点, 为一个非空有限硬件节点,nj表
示其中第j个硬件节点;使用CW描述一个组合服务时服务之间的交互关系,为一个非空有限控制流集,第i个控制流wi为描述了第i个
组合服务;lk和tk分别表示在部署方案d下第k类组合服务的平均延迟时间和平均吞吐量;uj表示在部署方案d下第j个硬件节点的利用率。
[0086] 具体来说,在研究面向服务软件的部署优化问题时,本发明主要考虑三种重要的性能评价指标:组合服务的平均延迟时间(用l表示)、组合服务的平均吞吐量(用t表示)以及硬件资源的平均利用率(用u表示)。目标函数的值主要通过性能估算方法获得。
[0087] 在具体实现时,本实施方式可以参考Chandra M B的方法给出性能指标的估算方法。该方法借鉴排队论思想,根据软件部署优化模型中给出的参数,利用数学分析方法估算本发明研究所关注的三种性能指标的值。本发明实施例使用M/D/N(泊松到达、确定的服务时间、服务中心)队列对软件服务进行建模。根据问题模型中给出的服务时间需求TR、服务的平均请求到达率RA和硬件节点的计算能力CP,可以估算出每个服务的计算延迟概率分布和吞吐量,以及每个服务对硬件节点的利用率。估算主要分两种情况:只有一个服务部署在硬件节点上和有多个服务部署在同一个硬件节点上。
[0088] 本发明估算性能指标考虑两种情况:
[0089] (1)只有一个服务部署在硬件节点上
[0090] 假设只有服务s1部署在硬件节点n1上,且服务s1的每个请求对单位计算能力的平均服务时间需求为TR(s1),平均请求到达率为RA(s1),硬件n1节点的计算能力为CP(n1),则服务s1的计算延迟时间大于α的概率可以使用公式(2)进行近似估算:
[0091]
[0092] 其中:
[0093]
[0094]
[0095] 在公式(2)-(4)中, 为服务s1对硬件节点n1的利用率, 为服务s1的请求的服务速率。在公式(3)中,当 时,硬件节点n1的利用率将超过100%。因此,RA(s1)必须被降低至RA′(s1),使得 (例如,可以通过每单位时间丢弃RA(s1)-RA′(s1)个请求来实现)。由上面的分析可知,当 时,RA(s1)为服务s1的吞吐量;当RA′(s1)(即 )为服务s1的吞吐量,此时需用RA′(s1)替换公式(3)中的RA(s1),以获得服务s1的计算延迟分布。
[0096] (2)一个硬件节点部署多个服务
[0097] 假设两个服务s2和s3被部署在同一个硬件节点n2上,它们的平均执行时间分别为TR(s2)和TR(s3),平均请求到达率分别为RA(s2)和RA(s3)。服务s2和服务s3对硬件节点n2的占用率 和 可以利用公式(3)进行计算。 和 分别为服务s2和s3对硬件节点n2的可占用百分比。由于每个服务对硬件节点的占用率不可能达到100%,它们的实际服务率分别被降低为 和 当计算这些
服务的计算延迟时间时,需要在公式(3)中使用被降低后的实际服务率。当时,即硬件节点n2的利用率超过了100%,服务s2和s3的服务率 和 需
要进一步降低为 和 以保证 然后再使用公式(2)计算服务s1和s2的
计算延迟分布。
[0098] 根据上面的结果可以得出每个硬件节点的利用率 而对于组合服务的延迟时间和吞吐量则需要根据组合服务的控制流,应用相应的聚合函数来实现,表1给出了本发明所使用的聚合函数。
[0099] 表1聚合函数表
[0100]
[0101] 下面以附图2为例,介绍利用聚合函数计算组合服务吞吐量的计算方法。附图2中,服务s2和s3并行连接部分的吞吐量为服务s2和s3的吞吐量中的最小值,服务s1的吞吐量、服务s2和s3并行连接部分的吞吐量、服务s4、服务s5的吞吐量中的最小值即为端到端的吞吐量。
[0102] 组合服务的延迟时间包含两部分:计算延迟和通信延迟。上面的方法只给出了每个服务的计算延迟cpl,而服务之间的通信延迟cml需要根据以下公式计算:
[0103]
[0104] 其中, 表示服务si和sj之间的通信延迟, 和 分别表示服务si和sj所部署的硬件节点。
[0105] 如果简单的使用聚合函数计算组合服务的延迟,将不能揭示延迟时间的概率分布,从而导致评估不够准确,为了获得更精确的组合服务延迟,本发明使用Monte Carlo方法计算每类组合服务的延迟时间概率分布。使用该方法需要根据以下步骤模拟一个工作流进程:首先,根据分支概率(若该工作流无分支,则所有的服务都被执行)选择服务执行(一个工作流中的一条路径);其次,对每个服务,根据它的吞吐量选择其中一个实例(具有较大吞吐量的实例拥有更多的被选择机会);再次,对于每个服务实例,根据它的延迟概率分布选取它的一个延迟样本值;最后,通过应用表1中的聚合函数聚合一组样本延迟,并通过多次重复该过程,模拟对一个应用的多次请求。
[0106] 步骤S3:根据构建的部署优化模型和目标函数设计基于蚁群优化的软件的部署优化方法ACO-DO,并基于优化方法ACO-DO对软件的部署进行优化。
[0107] 在一种实施方式中,步骤S3可以通过下述方式来实现:
[0108] 设计信息素与启发式;
[0109] 根据设计的信息素和启发式,构建部署方案。
[0110] 具体来说,首先,设计信息素与启发式,软件部署优化问题蚂蚁构建的每个解对应一种可行的部署方案,解组件对应软件服务到硬件节点的一种分配,蚂蚁通过一步步将每个服务分配到一个硬件节点来构建部署方案,当所有服务都被分配到一个相应的硬件节点时,一个部署方案就构建完成。本发明分别使用τ(i,j)和η(i,j)表示即将服务si分配到硬件节点nj(可以用公式d(si)=nj表示)所对应的信息素和启发式。
[0111] 在一种实施方式中,在根据设计的信息素和启发式,构建部署方案之后,所述方法还包括:
[0112] 为部署优化方法ACO-DO设置局部搜索过程。
[0113] 具体地,本发明为了进一步改进所提出的ACO-DO算法的性能,为ACO-DO算法设计了一个局部所搜索过程。本发明设计的局部搜索过程应用于蚂蚁的一次迭代完成之后,并基于m个当前最优的部署方案和蚂蚁本次迭代所构建的部署方案来实现。
[0114] 设计信息素与启发式具体包括:
[0115] 将启发式定义为公式(2):
[0116]
[0117] 其中 ,τ(i ,j)表示服务si分配到硬件节点nj所对应的信息素,为当前部署在硬件节点nj上的所有服务的集合,sk,si分别为其
中第i个、第k个服务;IF(sk,si)为服务sk与si之间的交互频率; 为一个计算能力函数,指定每个硬件节点的计算能力; 为一个请求到达函数,计算服务在单位时间内接收的平均请求数; 为一个服务时间需求函数,指定每个服务请求对单位计算能力的平均服务时间需求;DN为已经部署服务的硬件节点数。
[0118] 其中,在根据设计的信息素和启发式,构建部署方案时,采用服务列表表示方案构建过程中服务的分配顺序,并对服务列表进行优化,其中,服务列表的优化使用绝对位置模型表示信息素模型,信息素τs(i,k)表示服务si位于服务列表中第k个位置的期望值,则为服务列表优化问题设计的启发式为:
[0119] ηs(i)=RA(si)  (3)。
[0120] 一种实施方式中,根据设计的信息素和启发式,构建部署方案,具体包括:
[0121] (1)将所有服务都放置于列表Sun中,即Sun={s1,s2,…,sSN}为一个非空有限服务集,表示组成软件的所有服务,且k=1,sList={};
[0122] (2)从列表Sun中选择一个服务si放置到服务列表sList的第k个位置;选择规则如下:首先,产生[0,1]之间的一个随机数q,并将其与用户定义的参数qs进行比较,如果q<qs,则为服务列表中第k个位置选择的服务si为:
[0123]
[0124] 否则,采用轮盘选择规则完成服务列表第k个位置的服务选择,即选择在服务列表的第k个位置放置服务si的概率pik定义为:
[0125]
[0126] (3)将服务si从列表Sun中移除,且k=k+1,如果k<SN,则跳转到第(2)步;
[0127] (4)选择服务列表sList中第一个服务sp,并利用伪随机比例规则为服务sp选择一个部署节点,选择规则如下:首先产生[0,1]之间的一个随机数q,并将其与用户定义的参数qd进行比较,如果q<qd,则服务sp分配的硬件节点nj为:
[0128]
[0129] 否则,采用轮盘选择规则完成服务到硬件节点的分配;在轮盘选择规则中,将服务sp分配给硬件节点nj的概率ppj为:
[0130]
[0131] 其中,α、β为预设参数;
[0132] (5)如果将服务sp分配给硬件节点nj能够满足约束CON,则将服务sp从列表sList中移除;如果 则跳转到第(4)步;
[0133] (6)输出构建的部署方案d。
[0134] 具体来说,在部署软件时,为了减少通讯延迟,通常希望将相互交互的服务部署在同一个硬件节点上,然而,这又会引起服务之间的资源竞争,从而产生计算延迟。为了均衡这两种开销,本发明将启发式定义为:
[0135]
[0136] 其中Sj为当前部署在硬件节点nj上的所有服务的集合,IF(sk,sj)为服务sk与sj之间的交互频率,DN为已经部署服务的硬件节点数。
[0137] 在该启发式中, 为服务si与部署在硬件节点nj上的所有服务的交互频率之和, 为当前部署在硬件节点nj上的所有服务以及服务si在处理所有请求时,对单位计算资源的占用比例,CPnj为硬件节点nj的计算能力,则为当前部署在硬件节点nj上的所有服务以及服务si在处理所
有请求时,对硬件资源nj的占用比例,该值越大,表明nj的工作压力越大(即,服务之间对资源的竞争越激烈),产生的计算延迟也就越大,当它的值大于等于1时,表明nj为满负荷。从公式(7)中可以看出,当硬件节点nj已被使用(即已部署了服务),启发式的值与服务si与当前部署在硬件节点nj上的所有服务之间的交互频率呈正比,表示应尽可能的将服务部署在与其交互频繁的服务所部署的硬件节点上,以降低由服务交互带来的通信开销,而与硬件节点nj的工作压力呈反比,表示应尽可能地将服务部署在工作压力较小的硬件节点上,以减小服务之间的资源竞争带来的计算延迟;当硬件节点nj未被使用(即,在nj上还没有部署服务),启发式的值与nj的计算能力呈正比,表示应尽可能的将服务部署到计算能力强的硬件节点上,以减小计算延迟,而与已使用的硬件节点数成反比,表示应尽可能的将服务部署到已使用的硬件节点上,从而减少所使用的计算资源,节约成本。
[0138] 从上述定义的启发式信息中可以看出,先分配的服务将影响后续服务的分配,从而影响最终生成的部署方案。如果能够采用较好的服务分配顺序,将有助于提高最终生成的部署方案的质量。为此,本发明使用蚁群算法对部署方案构建过程中服务的分配顺序进行优化,以期望提高最终构建的部署方案的质量,从而提高本发明算法的求解速度。
[0139] 本发明使用服务列表表示服务的分配顺序,服务列表的优化属于一种调度问题,在现有使用ACO解决调度问题的研究中,通常主要存在两种寻找调度顺序的信息素模型:绝对位置模型和相对位置模型。使用绝对位置模型时,信息素τs(i,k)表示在服务列表中服务si位于第k个位置的期望值,而使用相对位置模型时,信息素τs(i,k)表示在服务列表中服务sk位于服务si之后的期望值。鉴于本发明问题的复杂性,本发明使用绝对位置模型表示服务列表优化问题的信息素模型。
[0140] 在软件运行过程中,具有较大请求量的服务的性能指标的变化通常会对软件的整体性能产生较大影响,如果能够先满足这些服务的性能需求,则软件的整体性能将得到较大的提升。因此,本发明采取尽可能的先为这些服务选择较优的部署节点,希望通过保证这些服务的性能需求,保证生成的部署方案的质量。据此,本发明为服务列表优化问题设计的启发式为:
[0141] ηs(i)=RA(si)  (7)。
[0142] 接着,构建部署方案,其中,部署方案的构建主要分两步:服务列表的构建和部署方案的构建。其中,服务列表的构建主要是为了确定部署方案构建过程中服务的最优分配顺序。
[0143] (1)服务列表的构建
[0144] 在服务列表的构建过程中,如果仅仅简单地使用τs(i,k)进行解组件的选择,容易导致结果收敛于局部最优解。为解决这一问题,本发明结合伪随机比例规则和Merkle等人提出的求和规则进行解组件的选择。伪随机比例规则的特征是,蚂蚁有qs的概率直接选择具有最大信息素和启发式值的解组件,这样算法就能强有力地利用蚂蚁过去的搜索经验。而求和规则的特征是,在应用伪随机比例规则时,使用将服务sj分别放置到第1到k个位置的信息素之和 替代简单地使用信息素τs(i,k)进行选择。根据上述分析,服务列表sList的构建步骤如下:
[0145] 步骤1:将所有服务都放置于列表Sun中,即Sun={s1,s2,…,sSN},且设sList={},k=1;
[0146] 步骤2:如果k>SN,则跳转到步4,否则从列表Sun中选择一个服务si放置到服务列表sList的第k个位置。选择规则如下:首先,产生[0,1]之间的一个随机数q,并将其与用户定义的参数qs进行比较,如果q
[0147]
[0148] 否则,采用轮盘选择规则完成服务列表第k个位置的服务选择。选择将服务si放置到服务列表的第k个位置的概率pik被定义为:
[0149]
[0150] 步骤3:将服务si从列表Sun中移除,并跳转到Step2;
[0151] 步骤4:输出服务列表 其中p1,p2,…,pSN∈{1,2,…,SN},且pi≠pj。
[0152] (2)部署方案的构建
[0153] 在构建部署方案时,蚂蚁根据上面生成的服务列表,依次将每个服务选择分配到一个硬件节点,以形成一个部署方案。在将服务分配到硬件节点的过程中,约束CON将被用来阻止蚂蚁将服务分配到不满足约束的硬件节点上,从而避免构建不可行的部署方案。服务到可行的硬件节点的分配遵循ACS算法中的伪随机比例规则。假设服务si的可行硬件节点集为FH,当将服务si分配到一个硬件节点时,需要首先产生[0,1]之间的一个随机数q,并将其与用户定义的参数qd进行比较,如果q
[0154]
[0155] 否则,采用轮盘选择规则完成服务到硬件节点的分配。在轮盘选择规则中,将服务si分配给硬件节点nj的概率pij为:
[0156]
[0157] 其中,α,β为参数,它们的值决定了在选择过程中启发式信息和信息素的相对重要性,若α>β,则蚂蚁的选择更依赖于信息素的值;若α<β,则蚂蚁的选择更依赖于启发式信息的值。
[0158] 算法1.部署方案构建算法
[0159] 输入:应用软件模型ASM、运行平台模型RPM、约束CON、方案组件集{|i={1,2,…,SN},j={1,2,…,HN}},服务列表 其中p1,p2,…,pSN∈{1,
2,…,SN},且pi≠pj,信息素集{τs(i,k)|i={1,2,…,SN},j={1,2,…,SN}}和{τ(i,j)|i={1,2,…,SN},j={1,2,…,HN}},启发式集{ηs(i)|i={1,2,…,SN}}和{η(i,j)|i={1,
2,…,SN},j={1,2,…,HN}}
[0160] 输出:部署方案d:S→N。
[0161] 1.初始化部署方案d=NULL,c=0;
[0162] 2.c=c+1,设置禁忌表
[0163] 如果c>SN,则跳转到步8,结束方案的构建;
[0164] 3.如果 则跳转到步2;
[0165] 4.如果|tabu|
[0166] 5.b=b+1,如果b≥c,则跳转到步7;
[0167] 6.计算 的值,如果 (即服务 不能与服务 部署到同一个硬件节点上)且 则tabu=tabu∪nx,并跳转到步4;否则,跳转到步5;
[0168] 7 .如 果 n x 拥 有 足 够 的 运 行 空 间 支 持 服 务 以 及 服 务 集(即必须与服务 部署到同一个硬件节点的所有服务)中的所有服务的运行,则对所有 设置d(sy)=nx,sList=sList-sy,并跳转到步2;否则tabu=tabu∪nx,并跳转到步4;
[0169] 8.结束算法,输出构建的部署方案d。
[0170] 再基于ACS算法,ACO-DO算法中信息素的管理主要包括三部分:信息素的初始化、信息素的局部更新和信息素的全局更新。在本发明的方法中,有两类信息素需要管理:服务列表构建过程中的信息素τs(i,k)和部署方案构建过程中的信息素τ(i,j)。
[0171] 信息素的初始化在算法开始时执行,用于为所有信息素设置一个初始值。本发明设置τs(i,k)的初始值为:
[0172]
[0173] 由于本发明问题模型中定义的位置约束LC能够帮助算法在构建部署方案之前排除一些不可行的方案组件,因此,本发明结合位置约束定义部署方案构建过程中使用的信息素的初始值,将不满足位置约束LC的方案组件的信息素的值设置为0,以此阻止蚂蚁选择这些不可行的方案组件。根据上述分析,信息素τ(i,j)的初始值定义如下:
[0174]
[0175] 其中,τ0为一个常数,本发明设置τ0的值为1。
[0176] 信息素的局部更新在蚂蚁选择一个解组件之后执行,旨在提高蚂蚁构建的解的多样性,即通过降低蚂蚁已选择的解组件对应的信息素值,使得后续蚂蚁有更大的机会选择其它的解组件,从而构建不同的解。公式(14)和(15)分别给出了信息素τs(i,k)和τ(i,j)的局部更新规则:
[0177]
[0178] τ(i,j)=(1-ρ)·τ(i,j)+ρ·τinitial(i,j)  (15)
[0179] 其中,ρ表示信息素的挥发率,其值位于区间(0,1]之间。
[0180] 信息素的全局更新在每一轮循环结束时(即,所有蚂蚁完成一次部署方案构建时)执行,旨在指导蚂蚁朝着最优解的方向构建解。它主要通过增加与当前最优解所对应的信息素的值,引导蚂蚁在当前最优解的附近进行搜索。信息素τs(i,k)和τ(i,j)的全局更新规则为:
[0181] τs(i,k)=(1-ρ)·τs(i,k)+ρ·Δτ  (16)
[0182] τ(i,j)=(1-ρ)·τ(i,j)+ρ·Δτ  (17)
[0183] 其中, 为当前最好部署方案dgbest对应的目标函数值与初始部署方案d0对应的目标函数值的比值。基于这些定义,随着算法的演化,当前最优部署方案的目标函数值越来越大,Δτ的值也越来越大。换句话说,更多的信息素将被添加到当前最优部署方案的组成成分上,使得它们对后续迭代过程中的蚂蚁更具吸引力。
[0184] 具体地,为部署优化方法ACO-DO设置局部搜索过程,包括:
[0185] (1)当前m个最优部署方案和本次迭代所构建的部署方案组成的方案列表为dList,在该列表中,第i个元素的目标函数值为OBVi,并k=1;
[0186] (2)根据部署方案的目标函数值,采用轮盘选择规则从列表dList中选择一个部署方案di其中选择列表dList中的部署方案di的概率为:
[0187]
[0188] (3)选取部署方案di的第k个解组件,并判断如果将其作为新部署方案的解组件时是否能够满足约束CON,如果满足,则将该解组件添加到新部署方案中,否则跳转到第(2)步;
[0189] (4)k=k+1,如果k<SN,则跳转到步(2),否则计算构建的部署方案的目标函数值,并将其与当前最优的部署方案进行比较,保留最优的部署方案和目标函数值。
[0190] 具体来说,局部搜索过程采用轮盘法则,根据选用的部署方案的目标函数值,从构成这些部署方案的组件中随机选择方案组件,构成新的部署方案,其中m个最优部署方案的选取是为了提高构建最优部署方案的可能性;而在用于选择的部署方案中增加本次迭代所构建的部署方案,则是为了降低在该过程中构建相同部署方案的可能性,以提高构建解的多样性。新方案构建完成后,需对其进行评估,以计算它的目标函数值,然后将其与当前最优的部署方案进行比较,保留最优的部署方案。
[0191] 在进行方案组件的选择时,选择部署方案di的组件的概率为:
[0192]
[0193] 其中,FD表示一个有限的部署方案集,它表示可以用于局部搜索的所有可行的部署方案集。在进行局部搜索时,FD的初始值为m个当前最优的部署方案和本次迭代构建的部署方案的集合,OBVi表示FD中第i个部署方案的目标函数值。
[0194] 根据上述分析,算法2描述了局部搜索过程所对应的搜索算法。
[0195] 算法2.局部搜索算法
[0196] 输入:m个当前最优的部署方案(用列表BDList表示)及对应的目标函数值(用列表BOList表示);本次迭代构建的部署方案集(用列表CDList表示)及其对应的目标函数值集(用列表COList);目标函数f;服务列表sList={sp1,sp2,…,spSN};
[0197] 输出:当前最优的部署方案dgbest和最优目标函数值OBVgbest
[0198] 1.设i=0;
[0199] 2.i=i+1,如果i>m,则跳转到步6;否则,初始化部署方案di=NULL,c=0,其中 属于m个当前最优的部署方案和本次迭代构建的部署方案的集合,且当i≠j时,
[0200] 3.c=c+1,设置禁忌表 如果c>SN,则跳转到步12,结束方案的构建;
[0201] 4.如果 则跳转到步3;
[0202] 5.如果FD≠φ,则根据公式(9)计算各部署方案的选择概率gpij;否则跳转到步10;
[0203] 6.根据步5计算的各部署方案的选择概率选择一个部署方案 满足并设置
[0204] 7.b=b+1,如果b≥c,则跳转到步9;
[0205] 8.计算 的值,如果 (即服务 不能与服务 部署到同一个硬件节点上)且 则 且当FD≠φ时,
然后跳转到步5;否则,跳转到步7;
[0206] 9.如果 拥有足够的运行空间支持服务 以及服务集(即必须与服务 部署到同一个硬件节点的所有服务)中的所有服务
的运行,则对所有 且 设置 sList=sList-sy,并跳转
到步3;否则 且当FD≠φ时, 然后跳转到步5;
[0207] 10.如果|tabu|
[0208] 11.计算部署方案di对应的目标函数值OBVi,如果OBVi>OBVbest,则OBVbest=OBVi,dbest=di更新最优部署方案列表BDList和最优目标函数值列表BOList;如果OBVi
[0209] 12.结束局部搜索过程,输出当前最优的部署方案dgbest、最优目标函数值OBVgbest。
[0210] 在具体实现时,本发明根据针对模型定义设计的基于蚁群优化的软件的部署优化方法ACO-DO以及设计的ACO-DO算法设计局部搜索过程,对ACO-DO算法进行完整描述。
[0211] 具体来说,通过上述对ACO-DO算法中的信息素和启发式的设计、方案构建、信息素管理以及局部搜索方法等关键部分的详细分析与设计,算法3给出了ACO-DO算法的完整描述。
[0212] 算法3.ACO-DO算法.
[0213] 输入:种群规模AN、最大迭代次数I、应用软件模型ASM、运行平台模型RPM、应用场景AS、约束CON、目标函数f
[0214] 输出:最优部署方案或近似最优部署方案dgbest
[0215] 1.设置当前迭代次数ci=0,初始化历史最优的m个部署方案列表BDList=null以及对应的目标函数值列表BOList=null;初始化当前最优的部署方案dgbest=null以及当前最优的目标函数值OBVgbest=0;根据公式(6)、(7)、(12)和(13)分别对信息素τs(i,k)和τ(i,j)以及启发式ηs(i)和η(i,j)进行初始化,其中i={1,2,…,SN},j={1,2,…,HN},k={1,2,…,SN};
[0216] 2.ci=ci+1,如果ci
[0217] 3.ca=ca+1,如果ca>AN,则跳转到步9;
[0218] 4.根据第二步定义的服务列表构建步骤,构建服务列表sList,并根据公式(14)对列表sList对应的信息素进行局部更新.
[0219] 5.执行第二步定义的部署方案构建算法构建一个部署方案d,并根据公式(15)对部署方案d对应的信息素进行局部更新;
[0220] 6.利用第一步给出的方法估算部署方案d对应的三个性能指标的值l,t和u;
[0221] 7.根据第一步中设计的目标函数计算构建的部署方案对应的目标函数值OBV,并将其与OBVbest进行比较,如果OBV>OBVbest,则OBVgbest=OBV,dgbest=d;
[0222] 8.如果 满足OBVj
[0223] 9.执行第三步给出的局部搜索算法;
[0224] 10.根据公式(16)和(17)对当前最优服务列表和部署方案所对应的信息素进行全局更新,并跳转到步2;
[0225] 11.结束算法,输出最终得到的软件部署问题的最优或近似最优部署方案dgbest。
[0226] 为了更清楚地说明本发明提供的方法的有益效果,本发明还对ACO-DO算法进行了实验验证。
[0227] 1、生成模拟实例
[0228] 本发明实验共生成了8种规模的实例,各实例的规模如表2所示,相关参数的范围如表3所示。此外,还有一些参数在表2和表3中没有涉及,如控制流、效用函数和服务间的交互频率。本发明中控制流和效用函数根据具体问题随机定义,服务间的交互频率由控制流CW和请求到达率AR分析得来。实验针对各实例随机生成一个部署方案作为该实例的初始部署方案。对于同一个实例,所有算法都从相同的初始部署方案开始进行优化。
[0229] 表2测试实例的规模
[0230]
[0231] 表3实例参数的范围
[0232]
[0233] 蚁群算法和遗传算法都属于近似方法。由于近似方法的参数配置会极大地影响算法的性能,为了给算法寻找最合适的参数配置,通常需要对不同配置的参数组合进行测试。本发明参考应用这些算法的相关文献,根据各文献中的参数设置,给出算法中每个参数的变化范围和变化步长,并通过反复试验,得出本发明实验中算法的最优参数配置。在执行参数确定的实验之前,有些参数可以根据参考文献直接确定,如蚁群算法(即ACO-DO和ACS)的种群数AN=10,参数α=1,变异参数m=10;遗传算法的种群数P=100。其它参数则根据测试结果得出,各参数的变化范围和变化步长如表4所示。根据实验测试结果,本发明得出各算法的具体参数配置如下:对于ACO-DO,信息素更新率ρ=0.1,参数β=2,伪随机比例参数qs=qd=0.5;对于ACS算法,信息素更新率ρ=0.1,参数β=2,伪随机比例参数q=0.5;对于遗传算法,杂交率pc=0.9,变异率pm=0.1。
[0234] 表4算法参数的变化范围和步长
[0235]
[0236] 由于近似算法采用的是随机搜索过程,执行结果难以预测,通常需要对这些算法进行多次独立的重复执行,使用重复执行结果的平均值表示它们的性能。因此,本实验针对ACO-DO算法和遗传算法,在每个问题实例上独立重复执行30次,并取30次独立执行的平均结果进行对比实验。
[0237] 2、对ACO-DO算法的有效性分析
[0238] 本发明主要从两个方面评价ACO-DO算法的有效性:(1)性能,即算法的执行时间(2)准确性,即目标函数值。为了实现对比分析,本发明还实现了MILP算法、不带启发式的ACS算法和Malek S等的GA算法。MILP算法属于精确的方法,它总是能够找到最优的解,因此,可以通过将MILP算法得到的目标函数值与其他三种算法得到的目标函数值进行对比,判断这三种算法的准确性。然而,由于MILP算法通常需要较高的计算成本,不适合于求解较大规模的问题,因此,在较大规模问题中,本发明将ACO-DO算法与ACS算法和GA算法进行对比,评估ACO-DO算法在较大规模问题中的有效性。三种近似算法(ACO-DO、ACS和GA)的终止条件是,如果在连续的500次评估(即,ACO-DO算法的连续25次迭代或ACS算法的连续50次迭代或遗传算法的连续5次进化)过程中没有找到更好的解,则算法终止。附图3和4分别显示了这四种算法在本发明生成的模拟实例上运行所花费的执行时间和得到的目标函数值的平均值。MILP算法的复杂性使得它不能求解较大规模的问题,因此,在附图3和4中,MILP只给出了它能够求解的问题的结果。
[0239] 根据附图3底部的表格中显示的各算法对前三种较小规模问题的执行时间可以看出,随着问题规模的逐渐增大,MILP算法的执行时间急速增长,而近似算法的执行时间变化则较为缓慢。这说明近似方法能够有效的降低软件部署优化问题的求解时间。而从三种近似算法对所有7种规模实例的执行时间来看,ACO-DO算法和ACS算法的执行时间较为接近,遗传算法的执行时间相对较长,这是因为在高度受限的问题中,遗传算法可能会产生许多无效个体,导致算法收敛时间较长。
[0240] 根据附图4底部的表格中显示的各算法在前三种较小规模的问题中得到的目标函数值可以看出,ACO-DO算法和GA算法得到的目标函数值都比较接近最优目标函数值(即MILP算法的结果),一般不低于最优目标函数值的15%,而ACO算法得到的目标函数值则相对较差。通过对比ACO-DO、ACS和GA算法在所有7中规模的问题中得到的目标函数值可以看出,ACS得到的目标函数值相对较差,且随着问题规模的扩大,它与其它两种算法的差距越来越大,这是因为ACS算法容易过早收敛于局部最优解,因此,对待规模较大的问题时,它的准确度就比较差。而ACO-DO算法和GA算法得到的目标函数值比较接近,且随着问题规模的增大,它们之间的差距越来越小,这是因为GA算法总是能够持续的找到较好的解,因此对待规模较大的问题,它会表现出较好的准确度。
[0241] 综合以上两方面的比较,ACS算法虽然具有与ACO-DO算法一样较短的执行时间,但ACS算法的准确度明显低于ACO-DO算法,且在规模较大的问题中尤为明显;GA算法虽然具有与ACO-DO算法近似较好的准确度,甚至有时精确度比ACO-DO更好,但GA算法的执行时间较长,且问题规模越大,它们之间的时间差距越大。因此,可以得出结论,ACO-DO相比其它算法,能够花费较短的时间找到较好的解,即ACO-DO算法优于其它算法。
[0242] 3、启发式的影响
[0243] 本发明在ACO-DO算法中引入了基于部署优化问题的启发式,以期望提高算法的收敛速度和求解质量。为了评估本发明引入的启发式对算法性能的影响,本发明设置ACO-DO算法中的启发式参数β=0,将得到的算法记为ACO-DO/H(ACO-DO without Heuristic),将基于ACS算法且使用本发明定义的启发式的算法记为ACS-H(ACS with Heuristic),然后分别对比ACO-DO和ACO-DO/H以及ACS-H和ACS。
[0244] 本实验在前面生成的各实例上分别对ACO-DO、ACO-DO/H、ACS-H和ACS四种算法独立执行30次,每次执行3000次评估,记录每次实验迭代过程中得到的目标函数值,画出这四种算法的演化曲线。附图5(a)和5(b)分别显示了这两组算法在实例5上运行的演化曲线图(演化曲线上的值为30次独立实验得到的平均值)。
[0245] 从附图5中可以看出,当执行相同次数的评估的时,ACO-DO总是能够比ACO-DO/H找到拥有更优目标函数值的部署方案,且ACS-H总是能够比ACS找到拥有更优目标函数值的部署方案,这说明本发明定义的启发式能够有效地帮助算法找到更好的解。此外,从附图5中还可以看出,ACO-DO和ACS-H的收敛速度分别快于ACO-DO/H和ACS,且ACO-DO和ACS-H最终找到的解分别优于ACO-DO/H和ACS,这说明本发明的启发式能够指导蚂蚁快速找到较好的部署方案。
[0246] 4、方案构建顺序的影响
[0247] 方案构建顺序的引入基于在构建部署方案的启发式设计中,先部署的服务将影响后续服务的部署选择,希望通过设计较优的部署方案构建顺序,将各服务部署到合适的硬件节点上,从而提高构建的部署方案的质量。为了评估ACO-DO算法中引入的方案构建顺序对算法性能的影响,本发明将基于ACO-DO算法,但不考虑方案构建顺序(即仅根据伪随机比例规则和信息素、启发式的值进行部署方案的构建)的算法记为ACO-DO/CO(ACO-DO without Build Order),将基于ACO-DO算法且使用本发明定义的构建顺序的算法记为ACS-BO(ACS with Build Order),并在前面生成的各实例上分别对ACO-DO、ACO-DO/BO、ACS-BO和ACS四种算各独立执行30次,每次执行3000次评估,记录每次实验迭代过程中得到的目标函数值,画出这四种算法的演化曲线。附图6(a)和6(b)分别显示了这两组算法在实例6上运行的演化曲线图(演化曲线上的值为30次实验的平均值)。
[0248] 从附图6中可以看出,在算法开始执行的较短时间内,两组算法中的两类算法得到的目标函数值都相差不大,这是由于在算法执行的初始阶段,构建顺序还处于寻优阶段,优势不能完全得以体现。而随着算法的演化,两组算法中的两类算法得到的目标函数值的差值越来越大,直到算法最终收敛,这是由于随着算法的演化,构建顺序越来越优,在后续的寻找最优部署方案的过程中发挥的作用越来越大。
[0249] 对比附图6(a)和6(b)可以看出,附图6(b)中构建顺序的优势明显低于附图6(a),这是因为附图6(b)中对比的两种算法没有使用本发明定义的启发式,构建顺序对最终构建的部署方案的影响仅依赖于约束,这使得构建顺序的优势无法得以完全发挥。上述对比可以说明,本发明提出的方案构建顺序能在一定程度上提高软件部署放案的构建质量。
[0250] 5、局部搜索过程的影响
[0251] 为了评估ACO-DO算法中引入的局部搜索过程对算法性能的影响,本发明将不带本发明定义的局部搜索方法的ACO-DO算法记为ACO-DO/LS(ACO-DO without Local Search),将基于ACS算法且使用本发明定义的局部搜索方法的算法记为ACS-LS(ACS with Local Search),并在前面生成的各实例上分别对ACO-DO、ACO-DO/LS、ACS-LS和ACS四种算各独立执行30次,每次执行4000次评估,记录每次实验迭代过程中得到的目标函数值,画出这四种算法的演化曲线。
[0252] 从附图7中可以看出,使用局部搜索过程的算法(ACO-DO和ACS-L)比没有使用局部搜索过程的算法(ACO-DO/L和ACS)能够更快地找到较好的解,且能够最终得到较优的目标函数值。这说明局部搜索方法能够进一步提高ACO-DO算法的性能。
[0253] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0254] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈