一种基于Pareto多目标蚁群优化算法的软件项目调度方法与流程

文档序号:11831914阅读:879来源:国知局
一种基于Pareto多目标蚁群优化算法的软件项目调度方法与流程

本发明涉及软件项目调度领域,更具体地,涉及一种基于Pareto多目标蚁群优化算法的软件项目调度方法。



背景技术:

随着软件产业迅速发展,软件项目变得越来越庞大且复杂,软件产品开发中爆发出很多问题:不完善的项目管理工作和不严谨的软件开发过程控制导致各种软件质量问题频出,此时,软件项目调度问题变得极其重要且富有挑战性。

现实生活中的软件项目调度问题大多极其复杂,且难以在多项式时间内进行求解,无法利用确定性的算法进行有效求解,现有求解软件项目调度多目标优化问题的方法大多利用以下算法:单目标蚁群组合优化算法,NSGA-II,SPEA2,PAES等。

单目标组合优化算法是将多目标优化问题利用数学组合策略转化为单个目标函数,再利用单目标优化算法进行求解。此方法只能求解得到一个组合最优解,但该解不一定符合软件项目管理者的需求,比如项目管理者有时候需要同时兼顾开发成本最低和工期最短这两个相互冲突的目标,Pareto解是求解多个目标同时优化问题的较合理的决策方案,它是综合考虑各个优化目标的折衷最优解。

NSGA-II,SPEA2和PAES这类经典的多目标进化算法采用仿生学原理,能在一定程度上求解软件项目调度多目标优化问题,获得一组Pareto最优解,但这些结果还不能满足实际软件项目管理的需求。其主要存在以下两个问题:(1)求解时间效率较低;(2)决策支持信息不够。

现有技术缺点:现有的基于经典多目标进化算法或单目标组合优化蚁群算法的软件项目调度方法主要存在求解时间效率低下,求解结果不能满足实际软件项目管理者的需求,以及决策支持信息不足的缺陷。决策支持信息不足是指,面对现有方法求解产生的一组Pareto最优解,管理者除了考虑目标值属性外,没有其他参考信息,尤其在目标值满足需求的一系列解中难以挑选,且可能挑选的解的稳定性很差,存在较大风险。

因此,提出一种解决上述问题的基于Pareto多目标蚁群优化算法的软件项目调度方法实为必要。



技术实现要素:

本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于Pareto多目标蚁群优化算法的软件项目调度方法。

为解决上述技术问题,本发明的技术方案如下:一种基于Pareto多目标蚁群优化算法的软件项目调度方法,包括以下步骤;

S1、将员工对于任务的投入度转化为蚂蚁的觅食路径图;

S2、初始化蚂蚁的觅食路径图,设置非占优解集和初始值;

S3、根据每只蚂蚁i依据觅食路径图来构造一个可行解Si,并评估可行解Si的可行性;

S4、更新非占优解集;

S5、如果算法运行到一定的迭代次数,就终止循环并输出Pareto解集即非占优解集(Pareto Set,PS)中的解,否则进入上述步骤3。

进一步的,所述步骤S1中,包括如下步骤;

S11、产生一个节点插入第0列作为开始节点;

S12、构造j个节点作为第一个员工对于各个任务的候选投入度节点;

S13、构造其他员工的投入度节点;

S14、产生一个节点插入第E+1列作为终止节点;

S15、产生连接各邻居列的节点之间的边。

更进一步的,所述在构造一个解时,蚂蚁只能在每列中选择一个节点来通过,每个员工对于各个任务有且仅有一个投入度。

进一步的,所述步骤S2中,包括如下步骤;

S21、设置非占优解集PS=Ф;

S22、将信息素的初始值设为1。

更进一步的,所述步骤S3中,包括如下步骤;

S31、构造解Si,通过每只蚂蚁i依据其启发式信息、信息素信息以及概率矩阵来构造一个可行解Si

S32、评估解Si,计算可行解Si的项目成本cost和项目工期duration两个目标值,并评估解的可行性。

进一步的,所述步骤S4中,包括如下步骤;

S41、更新PS,如果非占优解集PS中不存在任何解能占优解Si,就将可行解Si加入PS中,并从PS中移除所有被可行解Si占优的解。

S42、更新信息素矩阵,对每只蚂蚁i来说,如果可行解Si在本轮中被加入了PS中,就对蚂蚁i所在群组的信息素信息进行更新。

S43、更新子问题i的当前最优解xi,如果当前最优解xi被该轮中蚂蚁i的邻居产生的最优解Sx占优,则设置xi=Sx

与现有技术相比,本发明技术方案的有益效果是:

通过基于分解的多目标蚁群优化算法对软件项目调度问题进行求解,获得一组Pareto最优解,再对这些解进行蒙特卡洛实验,分析其在数据参数“员工最大投入度”不确定或不稳定时的鲁棒性,并通过Pareto前沿面泡泡图和阈值筛选前沿面图的可视化为软件项目管理者提供更多的决策支持信息,以此对比各个Pareto解的鲁棒性。实验表明,提出的算法能在经典NSGA-II算法的大约一半时间内有效求解软件项目调度多目标优化问题,且提出的鲁棒性分析方法能为软件项目管理者提供更丰富的决策支持。

本专利提出的基于Pareto的多目标蚁群优化算法,能够在较少的时间内有效地求解软件项目调度问题,在大部分实例中获得比经典的NSGA-II算法更优的解,且能获得具有更小的项目开发周期。提出的对Pareto解的鲁棒性分析方法能判断解的鲁棒性和稳定性,并将其融入到Pareto前沿面中进行可视化展示,给软件项目管理者提供除了各个优化目标值之外的决策支持信息。

附图说明

图1是本发明中软件项目调度问题模型实例;

图2是本发明中蚁群觅食构造图;

图3是本发明中Pareto解的鲁棒性分析流程图;

图4是本发明中15e_10t_g10获得的PF图;

图5是本发明中5e_10t_p5获得的PF图;

图6是本发明中10e_20t_p7获得的PF图;

图7是本发明中15e_30t_g10获得的PF图;

图8是本发明中实例组G1的平均运行时间图;

图9是本发明中实例组G2的平均运行时间图;

图10是本发明中实例组G3的平均运行时间图;

图11是本发明中实例组G4的平均运行时间图;

图12是本发明中实例5e_10t_p5中24个POS*的鲁棒性指标图;

图13是本发明中实例5e_10t_p5的鲁棒性信息的可视化图;

图14是本发明中实例15e_30t_p7中24个POS*的鲁棒性指标图;

图15是本发明中实例10e_10t_g5中24个POS*的鲁棒性指标图;

图16是本发明中鲁棒性信息在Pareto前沿面的可视化图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以是通过中间媒介间接连接,可以说两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明的具体含义。下面结合附图和实施例对本发明的技术方案做进一步的说明。

在本发明中,文中涉及的英文单词或英文缩写解释如下:

Pareto:帕累托,是专业术语,由一个数学家的名字得来的。

NSGA-II:英文全称为Non-dominated Sorting GeneticAlgorithm II,是对NSGA算法的改进版本。NSGA-II中文一般翻译为:快速非支配排序遗传算法。

RPS:Reference Pareto Set,中文翻译为:参考Pareto解集。

POS:Pareto Optimal Solution,中文翻译为:Pareto优化解

RI:Robustness Index,中文翻译为:鲁棒性指标

SPEA2:Strength Pareto Evolutionary Algorithm 2(SPEA2),中文翻译为:改进强度的Pareto进化算法。

PAES:Pareto Archived Evolution Strategy(PAES),中文翻译为:Pareto存档进化策略算法

Unit:单元

Duration:工期

Cost:成本

effort:贡献度

skills:技能

PF:Pareto Front,帕累托前沿面

MOEA/D-ACO:算法全称为:Multi-Objective Evolutionary Algorithm-Ant Colony Optimization based on Decomposition.

MOEA/D-ACO_MOSPSP:算法全称为:Multi-Objective Evolutionary Algorithm-Ant Colony Optimization algorithm based on Decomposition for Multi-Objective Software Project Scheduling Problem.中文翻译为:用于求解软件项目调度多目标优化问题的基于分解的多目标蚁群算法。

为便于理解本发明,下面对各个附图进行说明:

如图1所示,展示了一个待求解的软件项目实例。相关资源主要是员工和任务,其中员工具有以下属性:员工的职业技能、工资和最大工作额度等。而每个任务又具有一个必不可少的技能集合(skills)和必需的投入度(effort)。各个任务的完成时间要求满足任务序列图(Task Precedence Graph,TPG)。

实现基于Pareto的多目标蚁群优化算法求解软件项目调度问题的第一步,是将软件项目调度中员工对于任务的投入度转化为蚂蚁的觅食路径图。每个任务对应的蚂蚁觅食图如图2所示。其中Unit是一个员工对于一个任务的最小投入度值,该数值可手动设置。每个员工对于任何任务的投入度都是Unit的倍数。

将项目中的一个任务划分为一个蚂蚁觅食图的处理过程描述如下:

(1)产生一个节点插入第0列作为开始节点。

(2)构造j个节点作为第一个员工对于各个任务的候选投入度节点。

(3)如图2所示构造其他员工的投入度节点。

(4)产生一个节点插入第E+1列作为终止节点。

(5)产生连接各邻居列的节点之间的边。

蚁群觅食图构造完后,每只蚂蚁开始在图上觅食搜索解。蚂蚁从开始节点出发,经过有向图中的第1列、第2列,…,第E列,再到终止节点。根据蚂蚁选择的路径就能求得每个员工对于各个任务的投入度值。因此,当一只蚂蚁经过了TPG中所有任务构造的觅食图中的所有列之后,一个关于该软件项目调度问题的候选解就被构造出来了。

注意,在构造一个解时,蚂蚁只能在每列中选择一个节点来通过,因为每个员工对于各个任务有且仅有一个投入度(可能为0)。

在蚂蚁进行搜索构造解时,本专利的方法中采用了以下两种启发式信息策略:

(1)已分配度和员工工资信息(记为H1)。这种启发式信息策略是指图中各条边的启发式信息和该员工在其他任务中投入的分配度以及该员工的工资相关。当员工的工资越低,且在其他任务中已有的分配度越低,则启发式信息越大。

(2)任务需求总投入度和员工已分配度(记为H2)。即启发式信息由该任务所需求的总投入度以及员工在其他任务中已有的分配度决定。当任务所需总投入度越大,且该员工在其他任务中已有的投入度越低,则启发式信息越大。

当蚂蚁在图中行走以构造解时,图中各边上的启发式信息对蚂蚁路径抉择起到很大影响。如果蚂蚁在图中选择了以第k列中第l行的节点为终点的那条边,那么该员工对于该任务的投入度就等于l与Unit的乘积。

利用基于分解的多目标蚁群优化算法求解软件项目调度问题的算法被记作MOEA/D-ACO_MOSPSP,该算法的详细过程描述如下:

输入:

-软件项目调度实例

输出:

-PS,Pareto解集(Pareto Set),也称之为非占优解集。

步骤1)初始化。

步骤1.1)设置PS=Ф。

步骤1.2)将信息素的初始值设为1。

步骤2)构造解。

步骤2.1)构造解Si。每只蚂蚁i依据其启发式信息、信息素信息以及概率矩阵来构造一个可行解Si

步骤2.2)评估解Si。计算解Si的项目成本cost和项目工期duration两个目标值,并评估解的可行性。

步骤3)更新。

步骤3.1)更新PS。如果非占优解集PS中不存在任何解能占优解Si,就将Si加入PS中,并从PS中移除所有被Si占优的解。

步骤3.2)更新信息素矩阵。对每只蚂蚁i来说,如果解Si在本轮中被加入了PS中,就对蚂蚁i所在群组的信息素信息进行更新。

步骤3.3)更新子问题i的当前最优解xi。如果当前最优解xi被该轮中蚂蚁i的邻居产生的最优解Sx占优,则设置xi=Sx

步骤4)迭代终止。如果满足了终止条件,就终止循环并输出PS中的解。否则进入上述步骤3。

1.Pareto解集的鲁棒性分析

软件项目调度模型将问题规范化、理想化处理建模。软件项目调度问题的数据参数如表1所示,其假设所有的这些数据参数都已知,其中员工的最大投入度默认全部设置为1.0。但实际的员工最大投入度难以精确估计,且会随着时间出现变化。对前面算法求解得的Pareto非占优解集进行鲁棒性分析,考察其在员工最大投入度参数不稳定时的鲁棒性情况。

基于员工最大投入度这个不稳定性参数,将不稳定系数α设为5%,对软件项目调度问题求解得到的Pareto非占优解进行鲁棒性分析。当α=5%时,员工最大投入度样本取值区间表示如下:

<mrow> <msubsup> <mi>e</mi> <mi>i</mi> <mrow> <mi>max</mi> <mi>e</mi> <mi>d</mi> </mrow> </msubsup> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.0</mn> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mn>5</mn> <mi>%</mi> <mo>)</mo> </mrow> <mo>,</mo> <mn>1.0</mn> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>+</mo> <mn>5</mn> <mi>%</mi> <mo>)</mo> </mrow> <mo>&rsqb;</mo> </mrow>

以软件项目调度多目标优化问题中的“员工最大投入度”这个不确定的数据参数作为切入点,通过蒙特卡洛模拟实验对算法的求解结果进行鲁棒性分析,以提供除了两个优化目标值(即项目成本和开发周期)之外的鲁棒性信息供决策者参考。软件项目管理者在决策时可综合考虑优化目标函数值和Pareto解的鲁棒性信息,从而获取不仅具有较优目标值,且在小范围变化时目标函数值鲁棒性较高的解。由此可知,该方案能从一定程度上降低整个软件项目调度多目标优化问题的风险。

具体实现流程图如图3所示。

在本发明中,数据集的选择,选择了网上公开的测试数据集。此数据集共有36个软件项目调度的测试数据实例。这36个实例是西班牙学者Alba等人根据实际软件项目情况开发的随机生成器产生的。有员工和任务两个主体,各组实例中的员工数量分别为5、10或15,任务数量则为10、20或30。这些数据集可以分为4组,每组包含9个具有不同员工或任务的软件项目测试实例。在前两组中,总的技能数是未定义的。而在后两组中的测试实例则具有固定的总技能数:5或10。把第一组(G1)中的实例表示为Ee_Tt_p5,如实例5e_10t_p5表示有5个员工,10个任务,且员工具备的技能数是4或5。同样,第二组(G2)中的实例Ee_Tt_p7是技能数为6或7的。在后两组(G3和G4)中的实例被表示为Ee_Tt_gS,如10e_20t_g10表示有10个员工,20个任务,且总共有10种技能。在36组测试数据集中,所有员工的最大工作投入度值默认为1.0,代表所有员工都能完全投入到该项目的工作中。具体数据集的情况如下表所示。

一、方法的选择

对比前人提出的经典算法NSGA-II,从算法求解获得的Pareto最优面和运行时间两方面进行比较。

二、Pareto最优解比较

选择了最具代表性的实验结果来展示算法的特性。RPF参照面(Reference Pareto Front,RPF)是由所有该部分实验中的最优结果组成的。

图4中,MOEA/D-ACO_H1和MOEA/D-ACO_H2分别代表使用启发式信息H1和H2的基于分解的多目标蚁群算法MOEA/D-ACO_MOSPSP。可以观察到在实例15e_10t_10g中MOEA/D-ACO_H2算法的解都比NSGA-II的解更优。且MOEA/D-ACO_MOSPSP算法还在求解10e_30t_g5,10e_10t_10g和15e_20t_g10这些实例时表现更优于NSGA-II。

图5说明MOEA/D-ACO_MOSPSP算法在解决实例5e_10t_p5时获得的解大部分比NSGA-II的解更优,且有获得具有更小的开发持续时间目标值的解的趋势。在其他12个实例中也发现了同样的结果,这些实例为:10e_10t_p5,10e_20t_p5,15e_10t_p5,15e_30t_p5,10e_10t_p7,15e_10t_p7,15e_30t_p7,10e_10t_g5,15e_10t_g5,15e_20t_g5,15e_30t_g5和5e_10t_g10。

但是,在测试实例10e_20t_p7中NSGA-II的结果要优于当前设置的MOEA/D-ACO_MOSPSP算法,具体结果如图6所示。且类似的结果也出现在以下10个实例中:5e_20t_p5,10e_30t_p5,15e_20t_p5,5e_10t_p7,5e_20t_p7,10e_30t_p7,5e_10t_g5,5e_20t_g5,5e_30t_5和10e_20t_g5。

另外,当软件项目问题相当复杂时,MOEA/D-ACO_MOSPSP算法和NSGA-II都只能得到少量的解。图7表明在复杂实例15e_30t_g10中两个算法所获得的Pareto解都不多,其中MOEA/D-ACO_MOSPSP算法能获得比NSGA-II算法更优的解。且在实例5e_20t_g10,10e_20t_g10,10e_30t_g10和5e_30t_p5中也有同类的情况。

算法运行时间比较

从其结果图8至图11中可以看到MOEA/D-ACO_MOSPSP算法比NSGA-II花费大约少一半的运行时间。图中所有的时间是各算法运行10次后取的平均值。

鲁棒性分析结果的可视化

从36组测试数据中抽取3组代表性的数据进行实验,其分别为实例5e_10t_p5,15e_30t_p7和10e_10t_g5。

软件项目调度问题实例5e_10t_p5经过1000次迭代后产生了1000个Pareto非占优解集合,共64000个POS解。从RPF中选取24个具代表性的参考解POS*(去除了比较相近的解),这24个POS*的鲁棒性分析结果统计如图12所示。图中各个解的鲁棒性指标参差不齐,说明了非占优解集中各个解的不稳定性。

Pareto前沿面的鲁棒性信息的可视化如图13所示。其中图(a)以泡泡图的方式展示了24个POS*的鲁棒性,圆的直径越大代表鲁棒性越强。通过图(a)可以较清晰的看出哪些解的鲁棒性更强,哪些解的鲁棒性很弱。如在实例5e_10t_p5中,接近Duration值最大的区域的解鲁棒性很弱,而Duration取值较小的解的鲁棒性强。另外,如果决策者想采取Duration<20且Cost<780000的解决方案,从图中可以看出在这区间类的解有9个,而其中Duration值最小的那个解的鲁棒性最强。

图13(b)则筛选出了鲁棒性指标大于40%的解,是一种少干扰信息的可视化形式,在特定场景也很实用。对于实例5e_10t_p5,其24个POS*中只有6个解满足RI>40%。此时,决策者可以较容易地在满足鲁棒性指标要求的解中选取自己期望目标值的可行解。

实例15e_30t_p7和10e_10t_g5的鲁棒性指标图分别如图14和图15所示,对应的带鲁棒性泡泡图如图16(a)和图16(b)所示。

通过以上实验结果展示和分析,可以看出软件项目调度多目标优化问题的鲁棒性分析对项目决策者很有价值。嵌入鲁棒性信息的Pareto前沿面可视化图在表达各个解的目标函数值的同时,还能清晰地表达解的鲁棒性信息,便于决策者综合后作决定,从而获得更好的解决方法。

图中,描述位置关系仅用于示例性说明,不能理解为对本专利的限制;显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1