会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 截止时间 / 一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法

一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法

申请号 CN201610366974.0 申请日 2016-05-26 公开(公告)号 CN106055395B 公开(公告)日 2019-07-09
申请人 中南大学; 发明人 王勇; 黄春阳;
摘要 本发明公开了一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法。采用带有候选列表的蚁群系统,通过多个蚂蚁分别搜索云环境中工作流调度方案,蚂蚁间通过信息素的方式进行工作流调度结果的通讯,从而指导后续蚂蚁搜索的方向和工作流调度方案的决策,与目前的工作流调度方法相比,本发明能够在满足用户截止时间QoS要求下,降低云环境中工作流调度的成本和提高云用户服务的质量。
权利要求

1.一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法,其特征在于,采用带有候选列表的蚁群系统,通过多个蚂蚁分别搜索云环境中工作流调度方案,蚂蚁间通过信息素的方式进行工作流调度结果的通讯,从而指导后续蚂蚁搜索的方向和工作流调度方案的决策,包括以下步骤:步骤1:将相关参数初始化;

步骤2:根据用户定义的工作流截止时间,利用最迟完成时间公式计算每个任务的最迟完成时间;

步骤3:对蚁群中所有蚂蚁进行初始化操作,根据工作流任务的数据依赖或优先约束关系,使用拓扑排序算法随机构造出所有任务的调度序列{t1,t2,…,tn},n为任务的数量,测试工作流的取值范围为[30,1000];

步骤4:蚁群中的所有蚂蚁利用伪随机比例选择规则按照任务调度序列顺序为每个任务选择最好的服务实例,最终生成与蚂蚁数量相同的工作流调度方案;

步骤5:当蚂蚁为任务选择了一个执行的实例之后,则该实例上的信息素利用局部更新规则进行信息素的挥发操作;

步骤6:当所有蚂蚁都构建完工作流调度方案之后,即为每个工作流任务选好了执行的实例后,首先根据适应值函数评价所有蚂蚁的调度性能,到目前为止适应值最大的蚂蚁即为目前最好的蚂蚁,将目前最好的蚂蚁所选择的任务服务实例映射执行信息素全局更新操作;

步骤7:当达到最大迭代次数时方法终止执行,输出最好蚂蚁的工作流执行成本和工作流的完成时间,否则,继续迭代执行步骤3到步骤7的操作;

所述的步骤1中,初始化的参数包括最大迭代次数max_iter_num以用于确定步骤7中何时终止执行方法,蚁群大小m以用于确定步骤3中蚁群中蚂蚁的数量,伪随机比例选择中的开采参数q0以用于确定步骤4中伪随机比例选择规则,以及启发式信息的相对影响因子β以用于确定步骤4中最好的服务实例,信息素的挥发因子ρ和信息素的初始值τ0以用于确定步骤5中局部更新规则,其中信息素的初始值τ0为信息素的最小值,其中,MinCost和MaxCost分别表示工作流调度的最小执行成本和最大执行成本。

2.根据权利要求1所述的方法,其特征在于,所述的步骤2中,每个任务最迟完成时间的计算如下:未调度任务ti的最迟完成时间LFT(ti)为:

LFT(texit)=D

MET(tc)为任务tc的最小执行时间,即在执行速度最快的服务实例上的执行时间,D为整个工作流的截止时间,LFT(texit)为工作流出口任务texit的最迟完成时间,TT(ei,c)表示任务ti与其后继任务tc的数据传输时间。

3.根据权利要求1所述的方法,其特征在于,所述的步骤3中,任务调度序列生成的流程为:(1)初始化准备就绪任务的候选池ReadyPool为空,任务调度序列TSL为空;

(2)找出有向无环图中没有前驱的任务,将其加入到ReadyPool中;

(3)从ReadyPool中随机选择一个任务放到TSL的尾部;

(4)查看该任务的所有后继任务除该任务之外是否有前驱任务,如果没有则将其加入到ReadyPool中;

(5)从ReadyPool中移除该任务,并且移除该任务和所有后继任务之间的有向边;

(6)重复(2)到(5)直至ReadyPool为空,即产生了一个TSL。

4.根据权利要求1所述的方法,其特征在于,所述的步骤4中,伪随机比例选择规则中候选的实例是在任务ti的最迟完成时间LFT(ti)之前完成的实例,任务ti选择服务实例Insij的伪随机比例规则如下:其中,mi为任务ti可使用的服务实例数目,q是一个[0,1]之间均匀分布的随机数,q0为方法利用已知最优的服务实例的概率,0≤q0≤1,β是决定了启发式信息ηij和信息素τij的相对影响比重的参数,ηij和τij分别表示任务ti在服务实例Insij的启发式信息值和信息素值,InsiJ表示是应用轮盘赌规则选择的服务实例,公式如下:

5.根据权利要求1所述的方法,其特征在于,所述的步骤5中,局部信息素更新规则如下:当任务ti根据伪随机比例选择规则选择了执行的服务实例Insij之后,任务到服务实例映射上的信息素τij将要执行局部更新,其公式如下:τij=(1-ρ)τij+ρτ0

其中,ρ表示信息素的挥发因子,0<ρ<1,τ0为信息素初始值。

6.根据权利要求1所述的方法,其特征在于,所述的步骤6中,全局信息素更新规则按照如下操作进行:首先比较所有蚂蚁调度方案解的质量,为其计算适应值,以评价出到目前为止最优的蚂蚁即全局最优蚂蚁,一个蚂蚁调度方案S的质量按照如下的公式进行评价:其中,S.score为调度方案S的适应值,Deadline为工作流的截止时间,S.makespan为调度方案S的完成时间,S.cost为调度方案S的成本;

全局信息素更新操作只应用于全局最优蚂蚁的所有任务实例映射上,假设S(Ins(t1),Ins(t2),…,Ins(ti),…,Ins(tn))为全局最优蚂蚁为每个任务的调度方案,则任务ti到其选择实例Ins(ti)映射上信息素的全局更新规则如下:其中,ρ为信息素的挥发因子,0<ρ<1,(S.score/2)表示全局更新信息素的释放量,表示任务ti在所选服务实例Ins(ti)映射上的信息素值。

说明书全文

一种基于蚁群优化算法的云环境中截止时间约束工作流调度

方法

技术领域

[0001] 本发明涉及云环境中工作流调度的方法,特别涉及一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法。

背景技术

[0002] 云计算是目前一种新兴的资源提供方式,其将所有的软硬件资源作为服务提供给用户,并具有按需付费的特点,因此很多企业和科研机构将各种复杂应用提交到不同的云环境中来执行。而工作流模型是应用的一种常见表示形式,有向无环图结构是工作流模型的一般建模方法,在云中最大的难题之一是工作流调度问题,比如在满足用户截止时间QoS的要求下最小化工作流执行的成本,常见用户QoS是工作流的完成时间和成本。工作流调度问题就是在满足用户QoS的前提下,将所有任务映射到合适的服务实例上,并安排在服务实例上任务的顺序,以优化用户偏好的性能准则——成本。而本发明解决的问题正是这种类型,即在满足云用户要求的截止时间QoS条件下,优化云环境中工作流调度的成本。
[0003] 由于任务调度问题是众所周知的NP-Complete问题,许多调度方法在同构或异构分布式系统中提出,比如网格计算。虽然这些调度方法在传统的分布式系统中有很好的表现,但是很难直接应用于云计算的环境中,由于IaaS在按需资源供给方式、同构带宽和按需计费的价格模型方面与其有很大的差别。网格环境与现在的商业云有三个方面的明显不同:(1)云按需动态资源供给的特点,用户可以自由选择资源的类型和数目,而网格环境中,资源类型、数目甚至使用时间都是事先确定的,这样的特性给云用户有无限资源的憧憬;(2)同一个云服务提供商的服务实例间带宽几乎是同构的,而在网格环境中服务提供商间带宽是异构的;(3)最重要的不同是当前商业云计费的价格模型,其基于用户使用的时间间隔数来收费,而网格环境中是基于任务完成时间来收费。由于时间间隔通常是比较长的,比如Amazon EC2是1小时的间隔,而用户要支付最后的整个时间间隔,即使没有使用完。因此,调度算法应尽可能多的利用最后的时间间隔。
[0004] 目前只有很少的研究工作在云环境中的工作流调度问题上,且云环境中工作流调度问题要同时考虑服务质量要求(比如截止时间)和用户偏好(如成本)的特性使得该问题更难以解决,特别是对于复杂的任务——工作流。
[0005] 目前,解决该问题的方法主要有三类:确定性方法、启发式方法和元启发式方法。确定性方法主要有动态规划和分支定界法,对于调度问题是NP-hard问题,并且工作流是比较复杂的任务,其求解过程是非常耗时的。而启发式方法虽然求解速度比较快,但是得到解的质量有时并不是太好,算法的性能并不是最佳。而元启发式方法即进化算法,具有多点出发、不依赖于问题的梯度信息、具有随机性的概率转换准则和易于并行计算四大优点,能够解决大规模、高复杂度、非线性等难以用传统优化方法解决的问题,所以很适合用来解决工作流调度问题。而由于工作流调度问题是离散的组合优化问题,蚁群优化算法ACO已经被证明对解决离散的组合优化问题有很好的表现,所以其很适合解工作流调度问题。Chen等提出了一种自适应启发式模型的蚁群优化算法来解决工作流调度问题,取得了不错的效果,但是其应用在网格环境中和工作流截止时间的估计并不准确。而上述已经提到,云环境与传统的分布式环境不同,且工作流调度问题是NP-hard问题,因此需要结合云环境和工作流调度问题的特点,设计合适的蚁群优化算法。

发明内容

[0006] 本发明主要解决的问题是改善现有云环境中工作流调度算法中的缺陷,提高蚁群优化算法的搜索效率,使蚂蚁能满足工作流调度的QoS约束,并优化用户的成本偏好,同时结合云环境和工作流调度问题特点,设计了一种适应云环境工作流调度问题的蚁群优化算法ACS-CL,从而能够提高云环境工作流调度的服务质量和降低调度的成本。
[0007] 本发明具体采用如下的技术方案:
[0008] 一种基于蚁群优化算法的云环境中截止时间约束工作流调度方法,采用带有候选列表的蚁群系统,通过多个蚂蚁分别搜索云环境中工作流调度方案,蚂蚁间通过信息素的方式进行工作流调度结果的通讯,从而指导后续蚂蚁搜索的方向和工作流调度方案的决策,包括以下步骤:
[0009] 步骤1:将相关参数初始化;
[0010] 步骤2:根据用户定义的工作流截止时间,利用最迟完成时间公式计算每个任务的最迟完成时间;
[0011] 步骤3:对蚁群中所有蚂蚁进行初始化操作,根据工作流任务的数据依赖或优先约束关系,使用拓扑排序算法随机构造出所有任务的调度序列{t1,t2,…,tn},n为任务的数量,测试工作流的取值范围为[30,1000];
[0012] 步骤4:蚁群中的所有蚂蚁利用伪随机比例选择规则按照任务调度序列顺序为每个任务选择最好的服务实例,最终生成与蚂蚁数量相同的工作流调度方案;
[0013] 步骤5:当蚂蚁为任务选择了一个执行的实例之后,则该实例上的信息素利用局部更新规则进行信息素的挥发操作;
[0014] 步骤6:当所有蚂蚁都构建完工作流调度方案之后,即为每个工作流任务选好了执行的实例后,首先根据适应值函数评价所有蚂蚁的调度性能,到目前为止适应值最大的蚂蚁即为目前最好的蚂蚁,将目前最好的蚂蚁所选择的任务服务实例映射执行信息素全局更新操作;
[0015] 步骤7:当达到最大迭代次数时方法终止执行,输出最好蚂蚁的工作流执行成本和工作流的完成时间,否则,继续迭代执行步骤3到步骤7的操作。
[0016] 所述的方法,所述的步骤1中,初始化的参数包括最大迭代次数max_iter_num,蚁群大小m,伪随机比例选择中的开采参数q0以及启发式信息的相对影响因子β,信息素的挥发因子ρ和信息素的初始值τ0,其中信息素的初始值τ0为信息素的最小值,
[0017]
[0018] 其中,MinCost和MaxCost分别表示工作流调度的最小执行成本和最大执行成本。
[0019] 所述的方法,所述的步骤2中,每个任务最迟完成时间的计算如下:
[0020] 未调度任务ti的最迟完成时间LFT(ti)为:
[0021] LFT(texit)=D
[0022]
[0023] MET(tc)为任务tc的最小执行时间,即在执行速度最快的服务实例上的执行时间,D为整个工作流的截止时间,LFT(texit)为工作流出口任务texit的最迟完成时间,TT(ei,c)表示任务ti与其后继任务tc的数据传输时间。
[0024] 所述的方法,所述的步骤3中,任务调度序列生成的流程为:
[0025] (1)初始化准备就绪任务的候选池ReadyPool为空,任务调度序列TSL为空;
[0026] (2)找出有向无环图中没有前驱的任务,将其加入到ReadyPool中;
[0027] (3)从ReadyPool中随机选择一个任务放到TSL的尾部;
[0028] (4)查看该任务的所有后继任务除该任务之外是否有前驱任务,如果没有则将其加入到ReadyPool中;
[0029] (5)从ReadyPool中移除该任务,并且移除该任务和所有后继任务之间的有向边;
[0030] (6)重复(2)到(5)直至ReadyPool为空,即产生了一个TSL。
[0031] 所述的方法,所述的步骤4中,伪随机比例选择规则中候选的实例是在任务ti的最迟完成时间LFT(ti)之前完成的实例,任务ti选择服务实例Insij的伪随机比例规则如下:
[0032]
[0033] 其中,mi为任务ti可使用的服务实例数目,q是一个[0,1]之间均匀分布的随机数,q0为方法利用已知最优的服务实例的概率,0≤q0≤1,β是决定了启发式信息ηij和信息素τij的相对影响比重的参数,ηij和τij分别表示任务ti在服务实例Insij的启发式信息值和信息素值,InsiJ表示是应用轮盘赌规则选择的服务实例,公式如下:
[0034]
[0035] 所述的方法,所述的步骤5中,局部信息素更新规则如下。当任务ti根据伪随机比例选择规则选择了执行的服务实例Insij之后,任务到服务实例映射上的信息素τij将要执行局部更新,其公式如下:
[0036] τij=(1-ρ)τij+ρτ0
[0037] 其中,ρ表示信息素的挥发因子,0<ρ<1,τ0为信息素初始值。
[0038] 所述的方法,所述的步骤6中,全局信息素更新规则按照如下操作进行:
[0039] 首先比较所有蚂蚁调度方案解的质量,为其计算适应值,以评价出到目前为止最优的蚂蚁即全局最优蚂蚁,一个蚂蚁调度方案S的质量按照如下的公式进行评价:
[0040]
[0041] 其中,S.score为调度方案S的适应值,Deadline为工作流的截止时间,S.makespan为调度方案S的完成时间,S.cost为调度方案S的成本;
[0042] 全局信息素更新操作只应用于全局最优蚂蚁的所有任务实例映射上,假设S(Ins(t1),Ins(t2),…,Ins(ti),…,Ins(tn))为全局最优蚂蚁为每个任务的调度方案,则任务ti到其选择实例Ins(ti)映射上信息素的全局更新规则如下:
[0043]
[0044] 其中,ρ为信息素的挥发因子,0<ρ<1,(S.score/2)表示全局更新信息素的释放量, 表示任务ti在所选服务实例Ins(ti)映射上的信息素值。
[0045] 与目前蚁群优化算法求解云环境中工作流调度问题相比,本发明有如下优势:
[0046] 其在蚁群系统的基础上将候选列表的概念充分发挥出来,将那些在任务的子截止时间之前完成的实例加入候选列表,而不满足的不加入,这样可以有效保证解的可行性与质量,从而提高算法收敛的速度和搜索的效率,也能够有效提高解的质量;在伪随机比例选择中,当最优的任务实例不只一个时,本发明设计了最优任务实例选择规则,优先选择任务完成时间最小的服务实例,这样在保证当前任务执行成本最优的情况下尽可能的最小化任务的完成时间,从而为后续任务留出更多的执行时间和降低完成的时间,以便可以选择更便宜的服务实例,同时也能够减少工作流的完成时间,从而使服务实例的执行成本降低,达到降低工作流调度成本的目的。

附图说明

[0047] 图1为工作流应用使用各种云服务模型;
[0048] 图2为云工作流管理系统;
[0049] 图3为云服务资源模型;
[0050] 图4为带有候选列表的蚁群系统的算法框架;
[0051] 图5为五种现实工作流结构;
[0052] 图6为α=1.5时IC-PCP、IC-ACS和ACS-CL在各个不同规模工作流上的NC值;
[0053] 图7为α=2时IC-PCP、IC-ACS和ACS-CL在各个不同规模工作流上的NC值。

具体实施方式

[0054] 下面结合附图对本发明的技术方案进行详细的说明:
[0055] 云工作流应用使用各种云服务模型的示例图如图1所示,由于云环境有大量的资源,包括计算资源、内存资源、存储资源和网络资源等,并且资源可以动态扩展和按需使用的特点,使得很多企业和科研机构将各种复杂应用提交到不同的云环境中来执行,比如软件即服务(Software as a Service,SaaS),平台即服务(Platform as a Service,PaaS),基础设施即服务IaaS(Infrastructure as a Service)。
[0056] 云工作流管理系统的架构图如图2所示,该云工作流管理系统有四层,从上到下依次是工作流应用输入层、抽象工作流建模层、工作流调度层和云服务资源管理层。用户提交工作流应用到输入层,抽象工作流建模层根据输入层的工作流应用文件将其解析为有向无环图的模型,即将应用分解为任务流程化的形式,接着工作流调度层使用调度算法来调度工作流应用到云服务实例上,这也是本发明所工作的地方,而最下层的云服务资源管理层则为调度层提供云服务资源的最新情况,方便及时根据资源情况动态做出最优的调度方案。
[0057] 上述工作流调度系统使用的云服务资源模型如图3所示,其由一个IaaS服务提供商构成,其提供虚拟化的资源给云用户。云服务提供商提供不同服务类型的计算服务S={s1,s2,…,sm},比如不同配置的CPU类型、内存和不同的价格。通常,高服务质量的计算服务有较高的价格,如更快的CPU配置或者更多的内存容量往往有较高的收费。每个计算资源还挂载一个和像亚马逊弹性块存储(Amazon Elastic Block Store,Amazon EBS)那样的存储服务,作为局部存储设备为输入输出文件提供存储空间。并且每种类型的计算资源可以有多个服务实例供工作流任务执行。
[0058] 目前蚁群优化算法在求解云环境中工作流调度问题时,不能有效结合云环境服务实例的计费特点和工作流调度截止时间约束的处理,使得算法搜索效率很慢才能找到可行的调度方案,并且调度方案的质量并不好。因此,本发明针对该问题,提出了一种带有候选列表的蚁群系统,将那些在任务的子截止时间之前完成的实例加入候选列表,而不满足的不加入,这样可以有效保证解的可行性与质量,从而提高算法收敛的速度和搜索的效率,也能够有效提高解的质量。同时,在伪随机比例选择中,当最优的任务实例不只一个时,本发明设计了最优任务实例选择规则,优先选择任务完成时间最小的服务实例,这样在保证任务执行成本最优的情况下尽可能最小化任务的完成时间,从而为后续任务留出更多的执行时间和降低完成的时间,以便可以选择更便宜的服务实例,同时也能够减少工作流的完成时间,从而使服务实例的执行成本降低,达到降低工作流调度成本的目的。并设计了适合问题和云环境特点的启发式信息函数和适应值函数(即信息素全局更新的信息素释放量),即结合任务的截止时间约束和成本设计了启发式信息函数。
[0059] 本发明的带有候选列表的蚁群系统调度方法的框架如图4所示。其具体执行步骤如下:
[0060] 步骤1:算法的初始化操作。初始化算法的一些参数,比如最大迭代次数max_iter_num,蚁群大小m,伪随机比例选择中的开发参数q0以及启发式信息的相对影响因子β,信息素的挥发因子ρ和信息素的初始值τ0。
[0061] 信息素是蚁群优化算法中最重要的影响因子之一。一般来说,信息素被用于记录历史的搜索经验以及未来为蚂蚁搜索行为提供吸引和偏好,任务ti映射到使用的服务实例Insij(Instance)上的信息素定义为τij。在算法的初始化阶段,所有任务到实例映射上的信息素值即为一个初始化的值τ0,即公式如下:
[0062] τij=τ0,1≤i≤n,1≤j≤mi  (1)
[0063] n代表工作流任务的数目,mi代表任务ti可利用的服务实例的数目,如任务ti可利用的实例池(Instance Pool)InsPooli={Insi1,Insi2,…,Insimi}。
[0064] 所有的信息素初始值都为τ0,其应为所有信息素的最小值,而本发明研究的是工作流调度的执行成本优化问题,因此将信息素的初始值设置如下:
[0065]
[0066] 其中,MinCost和MaxCost分别表示工作流调度的最小执行成本和最大执行成本。其中,MinCost是根据工作流任务的优先约束关系将所有任务调度到同一个最便宜的服务实例上执行计算出来的成本,本发明称这种调度为“最便宜的调度”(Cheapest Schedule)。
而MaxCost是根据工作流任务的优先约束关系将所有任务调度到最昂贵的服务实例上执行计算出来的成本,本发明称这种调度为“最昂贵的调度”(The  Most  Expensive Scheduling)。因此,通过公式(2)设置的信息素初始值,是ACS算法执行过程中最小的值。
[0067] 步骤2:计算每个任务的最迟完成时间。根据用户定义的工作流截止时间,利用最迟完成时间公式计算每个任务的最迟完成时间。
[0068] 本发明定义了尚未调度任务的最迟完成时间的概念,这样可以将用户定义的整个工作流截止时间分散到每个任务上,使每个任务都有一个子截止时间的约束,从而让每个任务实际调度时尽可能的在最迟完成时间之前执行完成,以此可以保证工作流的截止时间约束,也即用户定义的时间服务质量要求。未调度任务ti的最迟完成时间LFT(ti)(Latest Finish Time)是指最迟完成该任务的时间,超过该时间完成任务可能导致后续任务不能在截止时间D(Deadline)之前完成,从而导致不满足用户的截止时间服务质量要求。其定义如下:
[0069] LFT(texit)=D  (3)
[0070]
[0071] MET(tc)是指任务tc的最小执行时间(Minimum Execution Time),是任务tc在所有可使用服务实例中具有最小执行时间的服务实例上的执行时间,也即在执行速度最快的服务实例上的执行时间。D为整个工作流的截止时间,LFT(texit)为工作流出口任务texit的最迟完成时间,TT(ei,c)表示任务ti与其后继任务tc的数据传输时间。
[0072] 步骤3:蚂蚁的初始化。每次迭代有m个蚂蚁进行初始化操作,根据工作流任务的数据依赖或优先约束关系,使用拓扑排序算法随机构造出n个任务的调度序列{t1,t2,…,tn},随机构造的目的是为了增加蚁群搜索方向的多样性。
[0073] 在每次迭代的开始,m只蚂蚁进行初始化的阶段,首先要生成任务调度序列,而序列的生成规则要满足工作流任务之间的数据依赖关系,即有向无环图中的任务之间的优先约束关系。这样一个调度序列的产生主要利用有向图的拓扑排序算法,而为了增加每次迭代种群生成任务序列的随机性和多样性,本发明在拓扑排序算法的基础上增加了随机性。下面是任务调度序列生成的具体流程:
[0074] (1)初始化准备就绪任务的候选池ReadyPool为空,任务调度序列TSL为空;
[0075] (2)找出有向无环图中没有前驱的任务,将其加入到ReadyPool中;
[0076] (3)从ReadyPool中随机选择一个任务放到TSL的尾部;
[0077] (4)查看该任务的所有后继任务除该任务之外是否有前驱任务,如果没有则将其加入到ReadyPool中;
[0078] (5)从ReadyPool中移除该任务,并且移除该任务和所有后继任务之间的有向边;
[0079] (6)重复(2)到(5)直至ReadyPool为空,即产生了一个TSL。
[0080] 步骤4:解的构造,即工作流调度方案的产生过程。m个蚂蚁利用伪随机比例选择按照任务调度序列中的顺序为每个任务选择执行的服务实例,最终生成m个工作流调度方案。每次蚂蚁在利用伪随机比例选择时都从实例的候选列表中为任务选择目前最优的实例,当最优的实例不只一个时,使用最优实例选择规则选择使任务的完成时间最小的最优实例。
[0081] 根据上述产生的任务调度序列,接下来要为每个任务选择执行的实例。任务的实例选择规则使用的是ACS中的伪随机比例选择规则,而候选的实例则是只有那些在任务ti的最迟完成时间LFT(ti)之前完成的实例,不满足LFT(ti)的实例不加入。因为根据任务的最迟完成时间计算公式(3)和公式(4),其是利用工作流的截止时间和最快服务实例来倒推计算的,也就是将工作流的截止时间分配到每个任务上,其一定程度上表示任务的截止时间。如果任务ti的完成时间超过LFT(ti),有很大可能导致工作流不能在截止时间之前完成。下面将详细描述任务的实例选择规则。
[0082] 任务ti选择服务实例Insij的伪随机比例规则如下:
[0083]
[0084] 在公式(10)中,mi为任务ti可使用的服务实例数目,q是一个[0,1]之间均匀分布的随机数,而q0为一个参数(0≤q0≤1),表示算法利用已知最优的服务实例的概率,β是一个参数,其决定了启发式信息ηij和信息素τij的相对影响比重。InsiJ表示是应用轮盘赌规则(roulette wheel scheme)选择的服务实例,其公式如下:
[0085]
[0086] InsiJ是根据公式(6)得到的概率分布选择出的服务实例。通过公式(5)和(6)可知,当产生的随机数q≤q0时,算法为任务ti选择τij[ηij]β最大值的服务实例,充分利用算法搜索到较好服务实例的信息,而这种信息是结合了蚂蚁的信息素和问题的启发式信息综合考虑的,有利于蚂蚁继续向当前找到的较好服务实例附近搜索。否则的话,则使用轮盘赌规则,依据服务实例的概率来选择,而服务实例的概率与其τij[ηij]β的值成正比,τij[ηij]β值越大选择该服务实例的概率越大。
[0087] 本发明在候选服务实例列表过程中已经考虑了时间启发式信息,设计的启发式信息只用关注成本,使蚂蚁更倾向于选择那些任务的执行成本较低的服务实例,因此将任务ti映射到服务实例Insij上的启发式信息ηij公式如下:
[0088]
[0089] 分别表示的是任务ti在所有可使用的mi个服务实例上的最小执行成本和最大执行成本, 表示的是任务ti在服务实例Insij上的执行成本。分子分母都加上0.00001是为了避免分子分母为0的情况出现,同时其是个很小的值对ηij结果的影响可以几乎忽略不计。根据公式(7),有较低执行成本的服务实例Insij将会获得较高的启发式信息值,ηij∈(0,1]。
[0090] 步骤5:局部信息素更新。当蚂蚁为任务选择了一个执行的实例之后,则该实例上的信息素将马上利用局部更新规则进行信息素的挥发操作,以减少后续蚂蚁对该实例的吸引,从而增加蚂蚁搜索方向的多样性,有利于找到不同的工作流调度方案。
[0091] 在本发明的ACS-CL算法中,当任务ti根据伪随机比例选择规则选择了执行的服务实例Insij之后,任务到服务实例映射上的信息素τij将要执行局部更新,其公式如下:
[0092] τij=(1-ρ)τij+ρτ0  (8)
[0093] 其中,ρ是一个参数0<ρ<1,表示信息素的挥发因子,而τ0为设置的信息素初始值。通过信息素τij的局部更新,以减少其他蚂蚁为该任务ti选择服务实例Insij的吸引和选择的概率,从而有利于其他蚂蚁探索其他未知的路径,从而增加多样性,不容易使算法进入停滞状态或过早收敛。
[0094] 步骤6:全局信息素更新。当所有蚂蚁都构建完工作流调度方案之后,即为每个工作流任务选好了执行的实例后,到目前为止的最好的蚂蚁所选择的任务服务实例映射将执行信息素全局更新操作,在这些任务服务实例映射上进行信息素的累积操作,从而增加最优工作流调度方案的引导作用,引导更多的蚂蚁往最优工作流调度方案附近搜索,以便将来有更多的蚂蚁搜索到最优的工作流调度方案。
[0095] 当每次迭代所有蚂蚁都构造好完整的解之后,即为每个工作流任务选择了执行的服务实例后,全局最优蚂蚁的所有任务实例映射上的信息素将执行全局更新操作。算法首先比较所有蚂蚁调度方案解的质量,为其计算适应值,以评价出到目前为止最优的蚂蚁(即全局最优蚂蚁)。一个蚂蚁调度方案S的质量按照如下的公式进行评价:
[0096]
[0097] 其中,S.score为调度方案S的适应值,Deadline为工作流的截止时间,S.makespan为调度方案S的完成时间,S.cost为调度方案S的成本。从公式(9)可以看出,调度方案S的评价值有两部分组成:QoS约束(即截止时间)的惩罚和用户偏好QoS(即成本)的质量。每一部分的值都在(0,1],因此调度方案S的评价值在(0,2]。如果调度方案S满足用户要求的工作流截止时间约束,则截止时间约束部分的值为1,而用户偏好QoS成本的值根据调度方案的执行成本来计算,调度方案的工作流执行成本越低获得的值越大。如果调度方案S不满足截止时间约束,则截止时间约束部分的值根据其违反程度来设置,即违反截止时间越多其值越小,而用户偏好QoS成本的值被设置为最小值。而调度方案S的整体值越大,表示其调度方案越优,而到目前为止调度方案整体值最大的蚂蚁称为“全局最优蚂蚁”。
[0098] 全局信息素更新操作只应用于全局最优蚂蚁的所有任务实例映射上,假设S(Ins(t1),Ins(t2),…,Ins(ti),…,Ins(tn))为全局最优蚂蚁为每个任务的调度方案,则任务ti到其选择实例Ins(ti)映射上信息素的全局更新规则如下:
[0099]
[0100] 其中,ρ是与局部信息更新一样的参数0<ρ<1,表示信息素的挥发因子。(S.score/2)表示全局更新信息素的释放量,其与ρ相乘,使得更新后的信息素值在原来的信息素值和新的信息素值之间。τiIns(ti)表示任务ti在所选服务实例Ins(ti)映射上的信息素值。全局信息素更新规则的使用,使全局最优蚂蚁任务实例映射上的信息素进行了累积,从而使目前最优任务实例映射对后续迭代蚂蚁的搜索具有更大的吸引和引导性,有利于蚂蚁向该最优调度方案方向靠近。
[0101] 步骤7:算法终止检验。当达到最大迭代次数max_iter_num时算法终止执行,输出最好蚂蚁的工作流执行成本和工作流的完成时间。否则,继续迭代执行步骤3到步骤7的操作。
[0102] 为了评价ACS-CL算法的优劣,本发明使用Bharathi等开发的工作流生成器生成的综合工作流,其规模分别是30、50、100、500,工作流结构如图5所示。
[0103] 云环境中有一个服务提供商,其提供10个不同类型的计算服务(与Amazon EC2相似),每个服务有不同的处理速度和不同的价格,最快服务的处理速度大约是最慢服务的27倍,相应的价格也是其27倍。在服务实例间的平均带宽设置为20MBps,从外部到云服务提供商之间的平均带宽设置为1GBps。而每个计算服务挂载的存储块大小设置为100GB,使用1小时的服务实例计费间隔。
[0104] 由于使用的工作流有不同的属性特征(如结构、大小、数据传输量),所以归一化每个工作流执行的总成本是至关重要的。基于这个考虑,首先定义了最便宜调度的概念(Cheapest Schedule):根据工作流任务的优先约束关系,调度所有的工作流任务到同一个最便宜的计算服务上。而将一个工作流执行的归一化成本(Normalized Cost,NC)定义如下:
[0105]
[0106] Cc表示使用最便宜调度策略执行相同工作流的成本。NC即为评价每个调度算法那性能的指标,将其与Cc的比值作为算法间对比的依据,比值越小说明越接近最便宜的调度,调度算法越好。
[0107] 由于研究的是截止时间约束下最小化工作流成本问题,因此为了评价调度算法是否满足用户限定的截止时间要求,需要为每个工作流分配一个截止时间。首先,定义最快调度的概念(Fastest Schedule):根据工作流任务的优先约束关系,将所有工作流任务调度到最快的服务实例上执行,如果任务ti存在的服务实例池InsPooli中所有服务实例都不能在任务允许开始时间AST(ti)前是可用的,则重新启动一个新的最快服务实例。不管最便宜调度是否是真实的调度,最快调度几乎不是一个真实的调度,除非只有最快的服务实例才能满足用户的工作流执行要求。因此将最快调度的工作流完成时间(makespan)定义为MF,其仅仅是工作流完成时间的最小边界。为了为每个工作流设置截止时间,定义了截止时间因子α,本发明将工作流w的截止时间Deadline(w)设置为Deadline(w)=ArrivalTime(w)+α·MF,ArrivalTime(w)为工作流w的到达时间。由于当α=1时问题往往没有解,因此本发明将α的值设置在{1.5,2}范围内。
[0108] 本发明ACS-CL算法的参数设置如下:
[0109] 表1算法参数设置
[0110]
[0111] 利用如上的实验环境和测试工作流,通过实验仿真对比了本发明方法ACS-CL、经典的网格环境蚁群优化算法在云环境中扩展算法IC-ACS和目前较好的启发式算法IC-PCP在不同工作流规模上的调度成本效果,从而评价这些调度算法在满足云用户QoS截止时间要求下最小化调度成本的调度性能。
[0112] 得到的实验结果如图6和图7所示,图6表示在截止时间α=1.5每种工作流的任务数量大小为30、50、100和500时三种调度算法工作流执行成本的实验结果,图7表示在截止时间α=2每种工作流的任务数量大小为30、50、100和500时三种调度算法工作流执行成本的实验结果,其中图6和图7中IC-ACS算法部分实验结果为空的情况表示该算法没有找到解,即算法产生的调度方案不满足约束条件。从图中可以看出本发明设计的ACS-CL在大部分测试工作流上都比IC-PCP和IC-ACS算法都有较好的实验效果,特别是CyberShake和Montage工作流。同时随着测试工作流规模的增加和截止时间的宽松缩放,ACS-CL算法的性能表现仍不错,特别是CyberShake和Montage工作流有更好的性能较好,说明了本发明ACS-CL算法加入的候选列表策略和最优实例选择规则,能有效处理大规模工作流的情况,并不随截止时间宽松有较大影响,具有不错的性能表现,能够有效保证在满足用户截止时间QoS要求下,降低云环境中工作流调度的成本和提高云用户服务的质量。