CN104077634B - 基于多目标优化的主动‑反应式动态项目调度方法 - Google Patents

基于多目标优化的主动‑反应式动态项目调度方法 Download PDF

Info

Publication number
CN104077634B
CN104077634B CN201410307479.3A CN201410307479A CN104077634B CN 104077634 B CN104077634 B CN 104077634B CN 201410307479 A CN201410307479 A CN 201410307479A CN 104077634 B CN104077634 B CN 104077634B
Authority
CN
China
Prior art keywords
project
task
individuals
population
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410307479.3A
Other languages
English (en)
Other versions
CN104077634A (zh
Inventor
申晓宁
李爱民
张敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Jiewei Technology Co Ltd
Original Assignee
Nanjing University of Information Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Information Science and Technology filed Critical Nanjing University of Information Science and Technology
Priority to CN201410307479.3A priority Critical patent/CN104077634B/zh
Publication of CN104077634A publication Critical patent/CN104077634A/zh
Application granted granted Critical
Publication of CN104077634B publication Critical patent/CN104077634B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种基于进化多目标优化的主动‑反应式动态项目调度方法,主要解决现有调度算法不能同时处理项目开发环境中存在的不确定因素和紧急动态事件的问题。其实现步骤是:(1)初始化。读取任务和软件工程师的属性,定义优化目标,设定约束条件;(2)在项目初始时,采用主动调度方式,基于静态多目标进化算法,同时优化项目的成本、工期和抗风险能力;(3)在项目开发过程中,采用由紧急动态事件驱动的反应式重调度方式,基于动态多目标进化算法在新环境中快速产生一个新的调度方案。与传统方法相比,本发明能够提前预测项目中存在的不确定性,也能及时响应紧急动态事件的发生,生成的调度方案具有效率高、抗风险能力强及稳定性优的特点。

Description

基于多目标优化的主动-反应式动态项目调度方法
技术领域
本发明涉及一种基于进化多目标优化的主动-反应式动态项目调度方法,可用于在动态不确定的项目开发环境中,实现软件工程师在各项任务中的有效分配。属于项目管理领域。
背景技术
项目调度问题是指建立项目调度的模型,通过某种算法确定软件工程师在各项任务中的工作量,即确定任务分配列表,以在满足各种约束条件的前提下,实现项目的工期最短、成本最低等优化目标。项目调度问题研究得到的任务分配列表可以为项目管理者进行实际任务分配提供重要参考。
实际项目的开发环境是动态不确定的,尤其在一些新兴行业,如云计算、移动互联、超大规模软件系统等大型复杂项目的生命周期中,存在着需求变更、人力资源变动、任务工作量调整等多种动态因素。当面临这些扰动时,根据初始数据产生的最优调度方案的性能可能大大降低。因此亟需研究一种能够处理动态不确定因素的新型项目调度方法。
进化算法是模拟生物在自然环境中的进化过程而形成的一类自适应全局优化概率搜索算法。进化算法可以处理传统优化方法难以解决的复杂优化问题,例如非连续、多模态等问题,它对整个群体实施选择、交叉、变异等操作,可以在算法的一次运行中并行搜索到多个解,加之其具有较强的环境自适应能力,因此,进化算法特别适用于求解项目调度这类同时存在多个折中解的动态多目标优化问题。
目前已有的项目调度方法存在以下不足:
1)大多仅考虑了静态的开发环境,它们假设项目中的所有信息都是预先可知且确定不变的,显然,当实际项目的开发环境发生动态变化或存在不确定因素时,依据静态方法产生的调度方案不再适用。
2)对多个优化目标的处理方式比较单一。大多已有方法采用加权求和法将多个目标转换为一个目标,这种方法将会引入较多的参数,并且需要事先对各个目标进行归一化处理。由于项目的多个目标之间往往是相互矛盾的,因此更好的方式是采用多目标进化算法对多个目标并行处理,从而为项目管理者提供一组反映目标间不同折中程度的调度方案,为其做出最终的决策提供参考。
3)缺乏能够同时处理各类动态因素的动态调度机制。实际项目中,新的紧急任务下达、软件工程师离开等紧急动态事件随时可能发生,同时又存在着任务和人力资源属性的不确定性。已有的少量动态调度方法,如在紧急动态事件发生时,根据启发式规则对原调度方案进行局部调整的启发式动态调度方法,均只考虑了其中的一种因素。因此,亟需设计一种能够应对不同动态因素的动态调度策略,以提高项目的抗风险能力并保证项目的稳定性。
发明内容
本发明的目的在于克服上述现有技术的不足,提出一种基于进化多目标优化的主动-反应式动态项目调度方法,以在现实世界动态不确定的项目开发环境中,同时处理紧急动态事件和不确定性属性等这两类动态因素,实现软件工程师在各项任务中的有效分配。
为实现上述目的,本发明的实现步骤包括如下:
(1)初始化。读取项目初始时的输入信息,包括每个任务的工作量、技能要求、任务优先级图,每位软件工程师所掌握的技能、可在本项目中投入的最大工作量、正常月薪、加班月薪。给出优化目标的定义。由于开发环境是动态变化的,将项目初始时刻视为初始调度点t0,将紧急动态事件(对项目的进行产生重要影响或需要立刻处理的事件,例如软件工程师请假、软件工程师回归、新的紧急任务下达)的发生时刻视为重调度点tl(l=1,2,…)。在tl(l=0,1,2,…)时刻所处的项目开发环境下,项目工期和成本可分别定义为完成当前所有任务剩余的工作量所花费的时间开销和财力;抗风险能力的定义采用基于景象的方法,通过对不确定因素进行多次仿真,以比较项目成本或工期的实际值与预估值之间的差值。稳定性仅在tl(l=1,2,…)有定义,本发明将其定义为软件工程师在新旧方案各个任务中投入的工作量的差别。所设定的约束条件包括任务技能约束,以及软件工程师不能超负荷工作的约束。
(2)在项目初始时刻t0,为了提高调度方案的质量对不确定属性的鲁棒性能,采用主动调度方式生成一个预测方案。根据项目初始时刻任务和软件工程师的属性,基于静态多目标进化算法,同时优化项目的以下目标:项目成本、工期以及抗风险能力,预先产生一组在多个目标间进行折中的调度方案,供项目管理者进行参考,并从中挑选出一个抗风险能力较强的满意解。
(3)在项目开发过程的每个重调度点tl(l=1,2,…)时刻,采用由紧急事件驱动的基于动态多目标进化算法的反应式重调度方式。依据任务和软件工程师的当前属性,通过捕捉项目中不同类型紧急动态事件(软件工程师请假离开、软件工程师回归、新的紧急任务下达)的特征,并充分利用已有的历史调度方案信息,在多目标进化算法的群体初始化中引入与问题知识相关的启发式动态优化策略,使得算法快速地适应动态变化的环境,在较短的时间内产生一组在项目的成本、工期、抗风险能力及稳定性之间折中的新的调度方案,并由项目管理者从中挑选出一个满意解。该方案在项目中一直执行,直到下一个紧急事件发生,重新启动动态多目标进化算法进行调度。
上述调度方法,其中步骤(2)所述的在初始时刻t0,基于静态多目标进化算法的主动调度方式的具体步骤如下:
a)群体初始化。根据t0时刻项目的当前状态,随机生成初始群体P(t0)。针对不确定属性,随机采样一组值δq,q=1,2,…,N。计算初始群体中每个个体的多目标值(项目工期、成本、抗风险能力),并进行约束处理。从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(t0)。设置目标评价次数计数器ct=sizepop,sizepop为群体规模。
b)群体选择。采用二进制联赛选择法从群体P(t0)中选择一个个体sp。首先从P(t0)中随机挑选两个个体,然后判断两个体间的相互支配关系。如果一个个体支配另一个,则选择该个体作为sp;否则,从两个个体中随机选择一个作为sp。
c)外部存储器选择。从外部存储器群体Arc(t0)中随机选择一个个体e。
d)个体繁殖。依据交叉和变异概率,采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
e)解码和目标评价。针对不确定属性,随机采样一组值φq,q=1,2,…,N。计算子代个体sc1和sc2的多目标值(即项目的工期、成本和抗风险能力),并进行约束处理。
f)群体更新。判断子代个体sc1是否支配群体P(t0)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(t0)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(t0)中的某一个体。对子代个体sc2采取与上述同样的群体更新方法。
g)外部存储器更新。判断子代个体sc1是否支配外部存储器Arc(t0)中的某些个体,如果支配,则将所有受支配个体从Arc(t0)中删除,并将sc1加入Arc(t0);如果sc1受Arc(t0)中的某个体支配,则sc1不能加入Arc(t0);如果上述两种情况均不成立,则将sc1加入Arc(t0)。对子代个体sc2采取与上述同样的外部存储器更新方法。如果Arc(t0)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体;
h)终止准则判断。如果ct<最大目标评价次数,则令ct=ct+2,转至第b)步;否则,算法终止,把当前外部存储器Arc(t0)作为Pareto最优解集输出。该解集即为在初始时刻t0预先产生的一组在多个目标间进行折中的预测调度方案,供项目管理者进行参考。
上述调度方法,其中步骤(3)所述的在重调度点tl(l=1,2,…)时刻,基于动态多目标进化算法的反应式重调度方式的具体步骤如下:
I)群体初始化。根据tl(l=1,2,…)时刻项目的当前状态,采用启发式策略构造初始群体P(tl)。针对不确定属性,随机采样一组值σq,q=1,2,…,N。计算初始群体中每个个体的多目标值(项目工期、成本、抗风险能力和稳定性),并进行约束处理。从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(tl)。设置目标评价次数计数器ct=sizepop,sizepop为群体规模。
II)群体选择。采用二进制联赛选择法从群体P(tl)中选择一个个体sp。首先从P(tl)中随机挑选两个个体,然后判断两个体间的相互支配关系。如果一个个体支配另一个,则选择该个体作为sp;否则,从两个体中随机选择一个作为sp。
III)外部存储器选择。从外部存储器群体Arc(tl)中随机选择一个个体e。
IV)个体繁殖。采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
V)解码和目标评价。针对不确定属性,随机采样一组值计算子代个体sc1和sc2的多目标值(项目工期、成本、抗风险能力和稳定性),并进行约束处理。
VI)群体更新。判断子代个体sc1是否支配群体P(tl)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(tl)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(tl)中的某一个体。对子代个体sc2采取与上述同样的群体更新方法。
VII)外部存储器更新。判断子代个体sc1是否支配外部存储器Arc(tl)中的某些个体,如果支配,则将所有受支配个体从Arc(tl)中删除,并将sc1加入Arc(tl);如果sc1受Arc(tl)中的某个体支配,则sc1不能加入Arc(tl);如果上述两种情况均不成立,则将sc1加入Arc(tl)。对子代个体sc2采取与上述同样的外部存储器更新方法。如果Arc(tl)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体;
VIII)终止准则判断。如果ct<最大目标评价次数,则令ct=ct+2,转至第II)步;否则,算法终止,把当前外部集合Arc(tl)作为Pareto最优解集输出。
本发明与现有技术相比存在以下优点:
1)本发明能够同时处理实际项目开发环境中存在的紧急动态事件和不确定性属性,使得产生的调度方案具有较强的抗风险能力,并能在动态变化的环境中,自适应地对原有调度方案做出适当的调整。因此,与现有技术相比,本发明更适合处理现实世界中的动态项目调度问题。
2)本发明同时优化了项目的效率指标(工期、成本)、抗风险能力及稳定性,并采用多目标进化算法对多个目标并行处理,从而能够为项目管理者提供一组反映目标间不同折中程度的调度方案,为其做出最终的决策提供有力的参考。
3)本发明通过捕捉项目中不同类型紧急动态事件的特征,并利用已有的历史调度方案信息,在多目标进化算法中引入了启发式的动态优化策略,提高了本发明的搜索效率,使得本发明能够快速地适应动态变化的环境,在较短的时间内产生一组在多个优化目标间折中的新的调度方案。
附图说明
图1为本发明求解的实施例中的任务优先级图;
图2为本发明提出的基于进化多目标优化的主动-反应式动态项目调度方法的主体流程图;
图3为在项目的初始时刻t0,采用的基于静态多目标进化算法的主动调度方式的流程图;
图4为多目标进化算法中,个体的表示方法和其对应的分配矩阵示例图;
图5为2-D单点交叉算子示意图;
图6为排挤距离估计法示意图。
图7为在项目的重调度点时刻tl(l=1,2,…),采用的基于动态多目标进化算法的反应式重调度方式的流程图;
图8(a)给出了采用本发明求解实施例时得到的调度方案甘特图(部分图)。
图8(b)给出了采用仅优化项目效率指标的多目标进化算法求解实施例时得到的调度方案甘特图(部分图)。
具体实施方式
为了更好地理解本发明的技术方案,下面结合附图和具体的实施例作进一步的描述。
一个实际项目中,有15个软件工程师和10个任务,共有5个技能要求(设为1、2、3、4、5)。任务优先级图如图1所示。每项任务Tj要求的工作量具有不确定性,其初始估计工作量及技能要求集合reqj如表1所示。每个软件工程师ei对整个项目投入的最大允许工作量正常月薪加班月薪以及所掌握的技能集合skilli如表2所示。在项目开始后,有一系列的紧急动态事件陆续发生,例如,在t1=1.04个月时,新的紧急任务T16下达;在t2=1.1个月时,软件工程师e10突然请假离开;在t2=1.2个月时,软件工程师e10回到项目中等。
表1
表2
使用本发明提出的基于进化多目标优化的主动-反应式动态项目调度方法求解该项目实施例的调度方案,主体流程图如图2所示,具体步骤如下:
(1)初始化。读取项目初始时的输入信息,包括任务属性(见表1)和软件工程师的属性(见表2);给出优化目标的定义,并设定约束条件。由于开发环境是动态变化的,将项目初始时刻视为初始调度点t0,将紧急动态事件(对项目的进行产生重要影响或需要立刻处理的事件,例如软件工程师请假、软件工程师回归、新的紧急任务下达)的发生时刻视为重调度点tl(l=1,2,…)。
在tl(l=0,1,2,…)时刻所处的项目开发环境下,项目工期定义为完成当前所有任务剩余的工作量所花费的时间开销,按下式计算:
f 1 ( t l ) = duration I = m a x { j | T j &Element; T _ a v a _ s e t ( t l ) } ( T j e n d ( t l ) ) - min { j | T j &Element; T _ a v a _ s e t ( t l ) } ( T j s t a r t ( t l ) )
其中,分别表示在tl时刻的调度方案中,任务Tj的开始时间和完成时间;T_ava_set(tl)表示tl时刻所有可进行调度的任务的集合;I表示初始景象,它将对不确定属性的估计值(例如实施例中对任务工作量的估计值)作为该属性的值计算项目工期。
在tl(l=0,1,2,…)时刻所处的项目开发环境下,项目成本定义为完成当前所有任务剩余的工作量所花费的财力,按下式计算:
f 2 ( t l ) = cost I = &Sigma; t &prime; &GreaterEqual; t l &Sigma; e i &Element; e _ a v a _ s e t ( t l ) e _ cost i t &prime;
e _ cost i t &prime; = e i n o r m _ s a l a r y &CenterDot; t &prime; &CenterDot; &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &le; 1 e i n o r m _ s a l a r y &CenterDot; t &prime; &CenterDot; 1 + e i o v e r _ s a l a r y &CenterDot; t &prime; ( &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) - 1 ) 1 < &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &le; e i max d e d
其中,t'表示项目处于开发阶段的某一个月,t'>tl表示在t'期间付给软件工程师ei的薪酬;T_active_set(t')表示在t'期间正在进行开发的任务集合;xij(tl)表示在tl时刻的重调度方案中,ei在任务Tj中投入的工作量占全日制工作量的百分比;表示ei能够对整个项目投入的最大工作量占全日制工作量的百分比,表示ei能够加班工作;分别表示ei的正常和加班月薪;e_ava_set(tl)表示在tl时刻所有参与该项目的软件工程师的集合。
在tl(l=0,1,2,…)时刻所处的项目开发环境下,抗风险能力的定义采用基于景象的方法,将一个调度方案在不确定属性(例如实施例中的任务工作量)的多种采样值{θq|q=1,2,…,N}下进行仿真,以比较项目成本或工期的实际值与预估值之间的差值。
f 3 ( t l ) = r o b u s t n e s s = 1 N &Sigma; q = 1 N ( max ( 0 , duration q ( t l ) - duration I ( t l ) duration I ( t l ) ) ) 2 + &lambda; 1 N &Sigma; q = 1 N ( max ( 0 , cost q ( t l ) - cost I ( t l ) cost I ( t l ) ) ) 2
其中,θq是不确定属性的第q个采样值,N是样本个数,在本发明中,设置N=30。durationq和costq分别是采样值θq下相应的项目工期和成本目标值。λ为权系数,在本发明中,令λ=1。
稳定性仅在tl(l=1,2,…)有定义,本发明将其定义为软件工程师在新旧方案各个任务中投入的工作量的差别,按下式计算:
f 4 ( t l ) = s t a b i l i t y = &Sigma; { i | e i &Element; e _ a v a _ s t e ( t l - 1 ) &cap; e _ a v a _ s e t ( t l ) } &Sigma; { j | T j &Element; T _ a v a _ s t e ( t l - 1 ) &cap; T _ a v a _ s e t ( t l ) } &omega; i j | x i j ( t l ) - x i j ( t l - 1 ) |
稳定性的公式只针对在tl和tl-1时刻均需调度的任务进行计算,它的目的是防止软件工程师在新旧方案中的工作安排差别过大。权值ωij设置如下:
&omega; i j = 2 i f x i j ( t l - 1 ) = 0 a n d x i j ( t l ) > 0 1.5 i f x i j ( t l - 1 ) > 0 a n d x i j ( t l ) = 0 1 e l s e
如果在tl-1时刻的方案中,软件工程师ei未被分配到任务Tj中,而在tl时刻的新方案中,安排ei去做Tj,则施加一个较大的惩罚因子ωij=2;如果在原方案中,ei被分配到任务Tj中,但在新方案中,未安排ei参加Tj,则施加一个中等的惩罚因子ωij=1.5;如果新旧方案都安排ei参加Tj,但工作量的投入不同,则施加一个小的惩罚因子ωij=1。
本发明设定的约束条件包括任务技能约束,以及软件工程师不能超负荷工作的约束。
在tl(l=0,1,2,…)时刻所处的项目开发环境下,任务技能约束指参与某项任务的所有软件工程师必须具备该任务要求的所有技能,即
&ForAll; T j &Element; T _ a v a _ s e t ( t l ) , s . t . req j &SubsetEqual; &cup; e i &Element; e _ a v a _ s e t ( t l ) { skill i | x i j ( t l ) > 0 }
其中,reqj表示任务Tj所需求的技能的集合,skilli表示软件工程师ei所掌握的所有技能的集合。
软件工程师不能超负荷工作的约束指在任一时刻t'≥tl,一个软件工程师为正在进行开发的任务同时投入的工作量之和不超过他对整个项目投入的最大允许工作量,即,
e _ work i t &prime; &le; e i max d e d
(2)在项目初始时刻t0,为了提高调度方案的质量对不确定属性的鲁棒性能,采用主动调度方式生成一个预测方案。根据项目初始时刻任务和软件工程师的属性,基于静态多目标进化算法,同时优化项目的以下目标:项目成本、工期和调度方案的抗风险能力,预先产生一组在多个目标间进行折中的调度方案,供项目管理者进行参考,并从中挑选出一个满意解。本步骤中基于静态多目标进化算法的主动调度方式的流程图如图3所示,其具体实现步骤如下:
a)群体初始化。根据t0时刻项目的当前状态,随机生成初始群体P(t0)。针对不确定属性(例如实施例中的任务工作量),随机采样一组值δq,q=1,2,…,N。计算初始群体中每个个体的多目标值(即项目的工期、成本和抗风险能力),并进行约束处理。从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(t0)。设置目标评价次数计数器ct=sizepop,sizepop为群体规模。
初始群体P(t0)由sizepop个随机生成的个体组成,每个个体表示问题的一个候选解,即软件工程师在各任务中的工作量分配矩阵其中M和NI分别表示初始时刻,软件工程师和任务的总个数。个体采用二进制编码,由于分配矩阵X(t0)中一共有M×NI个元素xij(t0),每个xij(t0)采用nb位二进制位表示,因此一个个体的总长度为nb×M×NI。因为xij(t0)的取值范围是所以,
在计算每个个体的目标值时,需将个体解码为分配矩阵。例如,假设初始时项目中有两个软件工程师e1,e2,两项任务T1,T2,令nb=3,则个体的表示方法和其对应的分配矩阵如图4所示。
下面介绍约束处理的方法。
如果某个体违反了任务技能约束,则将它的各个目标值分别设置为一个很高的惩罚值。假设reqsk为该个体中未满足约束的技能总数,则每个目标按如下公式分别惩罚:
f 1 ( t 0 ) = duration I = r e q s k &CenterDot; 2 &CenterDot; k &CenterDot; &Sigma; T j &Element; T _ a v a _ s e t ( t l ) T j e s t _ t o t _ e f f / m i n e i &Element; e _ a v a _ s e t ( t l ) ( e i max d e d )
f 2 ( t 0 ) = cost I = r e q s k &CenterDot; 2 &CenterDot; &Sigma; e i &Element; e _ a v a _ s e t ( t 0 ) &Sigma; T j &Element; T _ a v a _ s e t ( t 0 ) e i o v e r _ s a l a r y &CenterDot; T j e s t _ t o t _ e f f
f3(t0)=robustness=reqsk·2·Crob
其中,Crob是一个常数,本发明设置Crob=100。
如果某个个体违反了软件工程师不能超负荷工作的约束,则采用将工作量归一化的方法。如果分配方案使软件工程师ei在t'时刻超负荷工作,即则将原先为他分配的在每个活动任务(即t'时刻正在开发的任务)中的工作量除以如果则不对工作量进行归一化处理。本发明采用的归一化处理方法能够保证软件工程师不能超负荷工作的约束始终被满足。
b)群体选择。采用二进制联赛选择法从群体P(t0)中选择一个个体sp。首先从P(t0)中随机挑选两个个体,然后判断两个体间的相互支配关系。如果一个个体支配另一个,则选择该个体作为sp;否则,从两个个体中随机选择一个作为sp。
c)外部存储器选择。从外部存储器群体Arc(t0)中随机选择一个个体e。
d)个体繁殖。依据交叉和变异概率,采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
2-D单点交叉算子从矩阵个体中随机选取一行和一列(两个个体选取相同的行和列),然后交换两个体在该行和列左上方和右下方象限中的所有元素,该过程如图5所示。
位翻转变异算子将个体中需要变异的位取为相反的状态,即由0变为1,1变为0。
e)解码和目标评价。针对不确定属性(例如实施例中的任务工作量),随机采样一组值φq,q=1,2,…,N。计算子代个体sc1和sc2的多目标值(即项目的工期、成本和抗风险能力),并进行约束处理。
f)群体更新。判断子代个体sc1是否支配群体P(t0)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(t0)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(t0)中的某一个体。对子代个体sc2采取与上述同样的群体更新方法。
g)外部存储器更新。判断子代个体sc1是否支配外部存储器Arc(t0)中的某些个体,如果支配,则将所有受支配个体从Arc(t0)中删除,并将sc1加入Arc(t0);如果sc1受Arc(t0)中的某个体支配,则sc1不能加入Arc(t0);如果上述两种情况均不成立,则将sc1加入Arc(t0)。对子代个体sc2采取与上述同样的外部存储器更新方法。如果Arc(t0)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体;
本发明采用排挤距离估计个体邻域的密度。将当前群体中的所有个体分别依据各个目标函数进行排序,则个体xi的排挤距离定义为在各个经归一化后的目标函数上,排列在xi的左侧和右侧的两个体的距离的平均值。如图6所示,虚线所围成的四边形的平均边长即为个体xi的排挤距离。某个体的排挤距离越小,则说明该个体周围的密度越大。边界点xk的排挤距离取为无穷大,以保证边界点不会被移除。
h)终止准则判断。如果ct<最大目标评价次数,则令ct=ct+2,转至第b)步;否则,算法终止,把当前外部存储器Arc(t0)作为Pareto最优解集输出。该解集即为在初始时刻t0预先产生的一组在多个目标间进行折中的预测调度方案,供项目管理者进行参考。
(3)在项目开发过程的每个重调度点tl(l=1,2,…)时刻,采用由紧急事件驱动的基于动态多目标进化算法的反应式重调度方式。
依据任务和软件工程师的当前属性(例如每项任务剩余的工作量),通过捕捉项目中不同类型紧急动态事件(软件工程师请假离开、软件工程师回归、新的紧急任务下达)的特征,并充分利用已有的历史调度方案信息,在多目标进化算法的群体初始化中引入与问题知识相关的启发式动态优化策略,使得算法快速地适应动态变化的环境,在较短的时间内产生一组在项目的成本、工期、抗风险能力及稳定性之间折中的新的调度方案,并由项目管理者从中挑选出一个满意解。该方案在项目中一直执行,直到下一个紧急事件发生,重新启动动态多目标进化算法进行调度。本步骤中基于动态多目标进化算法的反应式重调度方式的流程图如图7所示,其具体实现步骤如下:
I)群体初始化。根据tl(l=1,2,…)时刻项目的当前状态,采用启发式策略构造初始群体P(tl)。针对不确定属性(例如实施例中的任务工作量),随机采样一组值σq,q=1,2,…,N。计算初始群体中每个个体的多目标值(项目工期、成本、抗风险能力和稳定性),并进行约束处理。从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(tl)。设置目标评价次数计数器ct=sizepop,sizepop为群体规模。
在tl时刻,根据启发式策略构造的初始群体P(tl)由下述三部分组成:
第一部分,利用历史信息构造“历史解”。在tl时刻,确定当前所有的软件工程师和待开发的任务。提取他们在tl-1时刻调度方案中分配的工作量构成“历史解”。对于需要在tl时刻调度,但未出现在tl-1时刻调度方案中的软件工程师或任务,他们的工作量分配随机产生。20%的初始群体P(tl)由“历史解”及其变异个体组成。
第二部分,通过捕捉项目中不同类型紧急动态事件(软件工程师请假离开、软件工程师回归、新的紧急任务下达)的特征,构造“调度方案修补解”。针对“软件工程师请假离开”这一事件,对于所有未受该事件影响的任务(即离开的工程师未参与该任务),保持分配给它们的软件工程师及其投入的工作量不变;对于受影响的每项任务,首先判断该任务开发队伍中剩余的软件工程师是否满足任务技能约束,如果满足,则保持他们对该任务分配的工作量不变;否则,在该任务的开发队伍中,增加若干名具有较高专业技能的软件工程师,直到满足任务的技能约束为止。针对“软件工程师回归”这一事件,对于每一项任务,如果回归的软件工程师具备该任务要求的某项技能,则将该软件工程师分配到此任务中并随机产生工作量,以加快任务的开发进度;否则,保持为此任务原先分配的方案不变。针对“新的紧急任务下达”这一事件,保持原有任务的分配方案不变,而对于新任务的工作量分配方案则随机产生。30%的初始群体P(tl)由“调度方案修补解”及其变异个体组成。
第三部分,为了增加群体的多样性,在初始群体中引入随机个体。在tl时刻,每个软件工程师在每个待调度的任务中投入的工作量随机生成。50%的初始群体P(tl)由随机个体组成。
设e_ava_set(tl)表示tl时刻所有参与该项目的软件工程师的集合,T_ava_set(tl)表示tl时刻所有可进行调度的任务的集合。群体中的每个个体表示tl时刻问题的一个候选解,即e_ava_set(tl)中的所有软件工程师在T_ava_set(tl)中各任务上的工作量分配矩阵其中·表示集合中元素的个数。个体采用与初始时刻t0相同的二进制编码方式,一个个体的总长度为|e_ava_set(tl)|·|T_ava_set(tl)|·nb。
与初始时刻t0类似,在tl时刻,如果某个体违反了任务技能约束,则将它的各个目标值分别设置为一个很高的惩罚值。假设reqsk为该个体中未满足约束的技能总数,则每个目标按如下公式分别惩罚:
f 1 ( t l ) = duration I = r e q s k &CenterDot; 2 &CenterDot; k &CenterDot; &Sigma; T j &Element; T _ a v a _ s e t ( t l ) T j e s t _ t o t _ e f f ( t l ) / m i n e i &Element; e _ a v a _ s e t ( t l ) ( e i max d e d )
f 2 ( t l ) = cost I = r e q s k &CenterDot; 2 &CenterDot; &Sigma; e i &Element; e _ a v a _ s e t ( t l ) &Sigma; T j &Element; T _ a v a _ s e t ( t l ) e i o v e r _ s a l a r y &CenterDot; T j e s t _ t o t _ e f f ( t l )
f3(tl)=robustness=reqsk·2·Crob
f 4 ( t l ) = s t a b i l i t y = r e q s k &CenterDot; 2 &CenterDot; | e _ a v a _ s e t ( t l ) | &CenterDot; | T _ a v a _ s e t ( t l ) | &CenterDot; max e i &Element; e _ a v a _ s e t ( t l ) ( e i max d e d )
其中,表示对任务Tj在tl时刻剩余工作量的估计值,Crob是一个常数,本发明设置Crob=100。
在tl时刻,对软件工程师不能超负荷工作的约束处理方法与初始时刻t0时相同。
II)群体选择。采用二进制联赛选择法从群体P(tl)中选择一个个体sp。首先从P(tl)中随机挑选两个个体,然后判断两个体间的相互支配关系。如果一个个体支配另一个,则选择该个体作为sp;否则,从两个体中随机选择一个作为sp。
III)外部存储器选择。从外部存储器群体Arc(tl)中随机选择一个个体e。
IV)个体繁殖。采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
V)解码和目标评价。针对不确定属性(例如实施例中的任务工作量),随机采样一组值计算子代个体sc1和sc2的多目标值(项目工期、成本、抗风险能力和稳定性),并进行约束处理。
VI)群体更新。判断子代个体sc1是否支配群体P(tl)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(tl)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(tl)中的某一个体。对子代个体sc2采取与上述同样的群体更新方法。
VII)外部存储器更新。判断子代个体sc1是否支配外部存储器Arc(tl)中的某些个体,如果支配,则将所有受支配个体从Arc(tl)中删除,并将sc1加入Arc(tl);如果sc1受Arc(tl)中的某个体支配,则sc1不能加入Arc(tl);如果上述两种情况均不成立,则将sc1加入Arc(tl)。对子代个体sc2采取与上述同样的外部存储器更新方法。如果Arc(tl)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体。
VIII)终止准则判断。如果ct<最大目标评价次数,则令ct=ct+2,转至第II)步;否则,算法终止,把当前外部集合Arc(tl)作为tl时刻的Pareto最优解集输出。该解集即为在重调度点tl时刻产生的一组在多个目标间折中的重调度方案,供项目管理者进行参考。
在本发明的实施例中,多目标进化算法的参数设置如下:群体规模为100;个体编码中,每个xij采用nb=3位二进制位表示;交叉概率取0.9;变异概率取为1/L,其中L是每个二进制个体的长度;最大目标评价次数取为10000。
本发明的效果可以通过以下仿真实验进一步说明:
1.实验条件:
在CPU为Intel core i5 3.2GHz、内存4GB、WINDOWS XP系统上使用Matlab 2010进行仿真。
2.实验内容:
本发明针对上述具有15个软件工程师、10个任务、5个技能要求的项目实施例求解动态调度方案。本实施例中,每项任务Tj要求的工作量具有不确定性,且有“软件工程师请假离开”、“软件工程师回到项目中”、“新的紧急任务下达”三类紧急动态事件随机发生。该项目的任务优先级图如图1所示,图1中1到15分别表示任务的编号,有向连线表示任务开发需满足的先后次序。
3.实验结果
采用本发明与现有技术中的启发式动态调度方法(当紧急动态事件发生时,根据启发式规则对原调度方案进行局部调整)分别对动态项目调度问题进行求解。图1为实施例的任务优先级图。表3列出了当分别采用两种方法时,完成整个项目的工期和成本的比较。由表3可见,与现有的启发式动态调度方法相比,本发明大幅度降低了项目的工期和成本,显著增强了项目开发的效率。
表3
本发明将项目的抗风险能力、稳定性与项目的效率指标(工期和成本)同时进行了优化。为了验证该方法的有效性,将本发明与仅优化项目效率指标(工期和成本)的多目标进化算法进行比较,图8(a)给出了采用本发明求解实施例时得到的调度方案甘特图(部分图),图8(b)给出了采用仅优化项目效率指标的多目标进化算法求解实施例时得到的调度方案甘特图(部分图)。由于未考虑稳定性,当重调度时,仅优化项目效率指标的多目标进化算法很可能在tl-1和tl时刻,分别将一组不同的软件工程师分配给了同一项任务,并且软件工程师对各项任务投入的工作量会有很大浮动。例如,在图8(b)中,在初始时刻t0,它将软件工程师e1,e7,e9分配给任务T9,在t1时刻,将e1,e2,e9分配给T9,在t2时刻,将e7,e9分配给T9。尽管e9一直参与了任务T9,但他工作量的变化却很大。这些在不同调度点上调度方案的显著差异将导致系统不稳定且缺乏连续性。相比之下,由图8(a)可见,由于考虑了稳定性,本发明在不同的调度点,保持了分配给各项任务的软件工程师不变,而只是对软件工程师投入的工作量做了微调,这使得系统具有更强的稳定性。此外,由于未考虑抗风险能力,仅优化项目效率指标的多目标进化算法当面临任务工作量的不确定性时,其调度方案的性能将会变差。例如,在图8(b)中,任务T1和T4的开发时间大于本发明调度方案(图8(a))中的开发时间。
综上,本发明提出的基于进化多目标优化的主动-反应式动态项目调度方法能够同时处理实际项目开发环境中存在的各类动态因素,如紧急动态事件、不确定性属性。它同时优化了项目的工期、成本、抗风险能力和稳定性指标,使得生成的调度方案在保持较低项目成本和较短工期的同时,具备了更强的鲁棒性能,同时整个项目的稳定性也更强。与现有的启发式动态调度技术相比,本发明能够显著降低项目的开发工期和成本,因此,本发明非常适合处理现实世界中的动态项目调度问题。

Claims (5)

1.一种基于进化多目标优化的主动-反应式动态项目调度方法,包括如下步骤:
(1)初始化:读取项目初始时的输入信息,包括每个任务的工作量、技能要求、任务优先级图,每位软件工程师所掌握的技能、可在本项目中投入的最大工作量、正常月薪、加班月薪;给出优化目标的定义;将项目初始时刻视为初始调度点t0,将紧急动态事件的发生时刻视为重调度点tl,l=1,2,…;在tl,l=0,1,2,…,时刻所处的项目开发环境下,项目工期和成本分别定义为完成当前所有任务剩余的工作量所花费的时间开销和财力;通过对不确定因素进行多次仿真,以比较项目成本或工期的实际值与预估值之间的差值,并将此定义为抗风险能力;稳定性仅在tl,l=1,2,…,有定义,将其定义为软件工程师在新旧方案各个任务中投入的工作量的差别;所设定的约束条件包括任务技能约束,以及软件工程师不能超负荷工作的约束;
(2)在项目初始时刻t0,采用主动调度方式生成一个预测方案;根据项目初始时刻任务和软件工程师的属性,基于静态多目标进化算法,同时优化项目的以下目标:项目成本、工期以及抗风险能力,预先产生一组在多个目标间进行折中的调度方案,供项目管理者进行参考,并从中挑选出一个满意解;
(3)在项目开发过程的每个重调度点tl,l=1,2,…,时刻,采用由紧急事件驱动的基于动态多目标进化算法的反应式重调度方式;依据任务和软件工程师的当前属性,通过捕捉项目中不同类型紧急动态事件,即软件工程师请假离开、软件工程师回归、新的紧急任务下达的特征,并充分利用已有的历史调度方案信息,在多目标进化算法的群体初始化中引入与问题知识相关的启发式动态优化策略,使得算法快速地适应动态变化的环境,在较短的时间内产生一组在项目的成本、工期、抗风险能力及稳定性之间折中的新的调度方案,并由项目管理者从中挑选出一个满意解;该方案在项目中一直执行,直到下一个紧急事件发生,重新启动动态多目标进化算法进行调度。
2.根据权利要求1所述的调度方法,其中步骤(1)所述的tl,l=0,1,2,…,时刻的项目工期定义为:
f 1 ( t l ) = duration I = max { j | T j &Element; T _ a v a _ s e t ( t l ) } ( T j e n d ( t l ) ) - min { j | T j &Element; T _ a v a _ s e t ( t l ) } ( T j s t a r t ( t l ) ) ,
其中,分别表示在tl时刻的调度方案中,任务Tj的开始时间和完成时间;T_ava_set(tl)表示tl时刻所有可进行调度的任务的集合;I表示初始景象,它将对不确定属性的估计值作为该属性的值计算项目工期;
步骤(1)所述的tl,l=0,1,2,…,时刻的项目成本定义为:
f 2 ( t l ) = cost I = &Sigma; t &prime; &GreaterEqual; t l &Sigma; e i &Element; e _ a v a _ s e t ( t l ) e _ cost i t &prime; ,
e _ cost i t &prime; = e i n o r m _ s a l a r y &CenterDot; t &prime; &CenterDot; &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &le; 1 e i n o r m _ s a l a r y &CenterDot; t &prime; &CenterDot; 1 + e i o v e r _ s a l a r y &CenterDot; t &prime; &CenterDot; ( &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) - 1 ) 1 < &Sigma; j &Element; T _ a c t i v e _ s e t ( t &prime; ) x i j ( t l ) &le; e i max d e d ,
其中,t'表示项目处于开发阶段的某一个月,t'>tl表示在t'期间付给软件工程师ei的薪酬;T_active_set(t')表示在t'期间正在进行开发的任务集合;xij(tl)表示在tl时刻的重调度方案中,ei在任务Tj中投入的工作量占全日制工作量的百分比;表示ei能够对整个项目投入的最大工作量占全日制工作量的百分比,表示ei能够加班工作;分别表示ei的正常和加班月薪;e_ava_set(tl)表示在tl时刻所有参与该项目的软件工程师的集合;
步骤(1)所述的tl,l=0,1,2,…,时刻调度方案的抗风险能力定义为:
f 3 ( t l ) = r o b u s t n e s s = 1 N &Sigma; q = 1 N ( m a x ( 0 , duration q ( t l ) - duration l ( t l ) duration I ( t l ) ) ) 2 + &lambda; 1 N &Sigma; q = 1 N ( m a x ( 0 , cost q ( t l ) - cost I ( t l ) cost I ( t l ) ) ) 2 ,
抗风险能力采用基于景象的方法定义,将一个调度方案在不确定属性的多种采样值{θq|q=1,2,…,N}下进行仿真,以比较项目成本或工期的实际值与预估值之间的差值;其中,θq是不确定属性的第q个采样值,N是样本个数;durationq和costq分别是采样值θq下相应的项目工期和成本目标值;λ为权系数;
步骤(1)所述的tl,l=1,2,…,时刻的稳定性定义为:
f 4 ( t l ) = s t a b i l i t y = &Sigma; { i | e i &Element; e _ a v a _ s e t ( t l - 1 ) &cap; e _ a v a _ s e t ( t l ) } &Sigma; { j | T j &Element; T _ a v a _ s e t ( t l - 1 ) &cap; T _ a v a _ s e t ( t l ) } &omega; i j | x i j ( t l ) - x i j ( t l - 1 ) | ,
稳定性的公式只针对在tl和tl-1时刻均需调度的任务进行计算,权值ωij设置如下:
&omega; i j = 2 i f x i j ( t l - 1 ) = 0 a n d x i j ( t l ) > 0 1.5 i f x i j ( t l - 1 ) > 0 a n d x i j ( t l ) = 0 1 e l s e ,
如果在tl-1时刻的方案中,软件工程师ei未被分配到任务Tj中,而在tl时刻的新方案中,安排ei去做Tj,则施加一个较大的惩罚因子ωij=2;如果在原方案中,ei被分配到任务Tj中,但在新方案中,未安排ei参加Tj,则施加一个中等的惩罚因子ωij=1.5;如果新旧方案都安排ei参加Tj,但工作量的投入不同,则施加一个小的惩罚因子ωij=1;
步骤(1)所述的任务技能约束指参与某项任务的所有软件工程师必须具备该任务要求的所有技能,即
&ForAll; T j &Element; T _ a v a _ s e t ( t l ) , s . t . req j &SubsetEqual; &cup; e i &Element; e _ a v a _ s e t ( t l ) { skill i | x i j ( t l ) > 0 } ,
其中,reqj表示任务Tj所需求的技能的集合,skilli表示软件工程师ei所掌握的所有技能的集合;
步骤(1)所述的软件工程师不能超负荷工作的约束指在任一时期t'≥tl,一个软件工程师为正在进行开发的任务同时投入的工作量之和不超过他对整个项目投入的最大允许工作量,即,
e _ work i t &prime; &le; e i max d e d .
3.根据权利要求1或2所述的调度方法,其中步骤(2)所述的在初始时刻t0,基于静态多目标进化算法的主动调度方式的具体步骤如下:
a)群体初始化:根据t0时刻项目的当前状态,随机生成初始群体P(t0);针对不确定属性,随机采样一组值δq,q=1,2,…,N;计算初始群体中每个个体的多目标值,即目标f1(tl)、f2(tl)、f3(tl),并进行约束处理;从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(t0);设置目标评价次数计数器ct=sizepop,sizepop为群体规模;
b)群体选择:采用二进制联赛选择法从群体P(t0)中选择一个个体sp;首先从P(t0)中随机挑选两个个体,然后判断两个体间的相互支配关系;如果一个个体支配另一个,则选择该个体作为sp;否则,从两个个体中随机选择一个作为sp;
c)外部存储器选择:从外部存储器群体Arc(t0)中随机选择一个个体e;
d)个体繁殖:依据交叉和变异概率,采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
e)解码和目标评价:针对不确定属性,随机采样一组值φq,q=1,2,…,N;计算子代个体sc1和sc2的多目标值,即目标f1(tl)、f2(tl)、f3(tl),并进行约束处理;
f)群体更新:判断子代个体sc1是否支配群体P(t0)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(t0)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(t0)中的某一个体;对子代个体sc2采取与上述同样的群体更新方法;
g)外部存储器更新:判断子代个体sc1是否支配外部存储器Arc(t0)中的某些个体,如果支配,则将所有受支配个体从Arc(t0)中删除,并将sc1加入Arc(t0);如果sc1受Arc(t0)中的某个体支配,则sc1不能加入Arc(t0);如果上述两种情况均不成立,则将sc1加入Arc(t0);对子代个体sc2采取与上述同样的外部存储器更新方法;如果Arc(t0)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体;
h)终止准则判断:如果ct<最大目标评价次数,则令ct=ct+2,转至第b)步;否则,算法终止,把当前外部存储器Arc(t0)作为Pareto最优解集输出;该解集即为在初始时刻t0预先产生的一组在多个目标间进行折中的预测调度方案,供项目管理者进行参考。
4.根据权利要求1或2所述的调度方法,其中步骤(3)所述的在重调度点tl,l=1,2,…,时刻,基于动态多目标进化算法的反应式重调度方式的具体步骤如下:
I)群体初始化:根据tl,l=1,2,…,时刻项目的当前状态,采用启发式策略构造初始群体P(tl);针对不确定属性,随机采样一组值σq,q=1,2,…,N;计算初始群体中每个个体的多目标值,即目标f1(tl)、f2(tl)、f3(tl)、f4(tl),并进行约束处理;从初始群体中确定出所有的Pareto非支配解构成外部存储器群体Arc(tl);设置目标评价次数计数器ct=sizepop,sizepop为群体规模;
II)群体选择:采用二进制联赛选择法从群体P(tl)中选择一个个体sp;首先从P(tl)中随机挑选两个个体,然后判断两个体间的相互支配关系;如果一个个体支配另一个,则选择该个体作为sp;否则,从两个个体中随机选择一个作为sp;
III)外部存储器选择:从外部存储器群体Arc(tl)中随机选择一个个体e;
IV)个体繁殖:采用专为矩阵设计的2-D单点交叉算子和位翻转变异算子,由父代个体sp和e生成子代个体sc1和sc2
V)解码和目标评价:针对不确定属性,随机采样一组值q=1,2,…,N;计算子代个体sc1和sc2的多目标值,即目标f1(tl)、f2(tl)、f3(tl)、f4(tl),并进行约束处理;
VI)群体更新:判断子代个体sc1是否支配群体P(tl)中的某些个体,如果支配,则从这些受支配个体中随机挑选一个,并用sc1取代它;如果sc1受P(tl)中的某个体支配,则sc1不能加入群体;如果上述两种情况均不成立,则sc1随机取代P(tl)中的某一个体;对子代个体sc2采取与上述同样的群体更新方法;
VII)外部存储器更新:判断子代个体sc1是否支配外部存储器Arc(tl)中的某些个体,如果支配,则将所有受支配个体从Arc(tl)中删除,并将sc1加入Arc(tl);如果sc1受Arc(tl)中的某个体支配,则sc1不能加入Arc(tl);如果上述两种情况均不成立,则将sc1加入Arc(tl);对子代个体sc2采取与上述同样的外部存储器更新方法;如果Arc(tl)中解的个数超过了其最大容量M,则移除那些排挤距离较小的个体;
VIII)终止准则判断:如果ct<最大目标评价次数,则令ct=ct+2,转至第II)步;否则,算法终止,把当前外部集合Arc(tl)作为Pareto最优解集输出。
5.根据权利要求4所述的调度方法,其中第I)步所述的根据启发式策略构造的初始群体由下述三部分组成:
第一部分,利用历史信息构造“历史解”;在tl时刻,确定当前所有的软件工程师和待开发的任务;提取他们在tl-1时刻调度方案中分配的工作量构成“历史解”;对于需要在tl时刻调度,但未出现在tl-1时刻调度方案中的软件工程师或任务,他们的工作量分配随机产生;20%的初始群体由“历史解”及其变异个体组成;
第二部分,通过捕捉项目中不同类型紧急动态事件,即软件工程师请假离开、软件工程师回归、新的紧急任务下达的特征,调整原有调度方案,构造“调度方案修补解”;针对“软件工程师请假离开”这一事件,对于所有未受该事件影响的任务,即离开的软件工程师未参与该任务,保持分配给它们的软件工程师及其投入的工作量不变;对于受影响的每项任务,首先判断该任务开发队伍中剩余的软件工程师是否满足任务技能约束,如果满足,则保持他们对该任务分配的工作量不变;否则,将在该任务的开发队伍中,增加若干名具有较高专业技能的软件工程师,直到满足任务的技能约束为止;针对“软件工程师回归”这一事件,对于每一项任务,如果回归的软件工程师具备该任务要求的某项技能,则将该软件工程师分配到此任务中并随机产生工作量,以加快任务的开发进度;否则,保持此任务的原先方案不变;针对“新的紧急任务下达”这一事件,保持原有任务的分配方案不变,而对于新任务的工作量分配方案则随机产生;30%的初始群体由“调度方案修补解”及其变异个体组成;
第三部分,为了增加群体的多样性,在初始群体中引入随机个体;在tl时刻,每个软件工程师在每个待调度的任务中投入的工作量随机生成;50%的初始群体由随机个体组成。
CN201410307479.3A 2014-06-30 2014-06-30 基于多目标优化的主动‑反应式动态项目调度方法 Expired - Fee Related CN104077634B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410307479.3A CN104077634B (zh) 2014-06-30 2014-06-30 基于多目标优化的主动‑反应式动态项目调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410307479.3A CN104077634B (zh) 2014-06-30 2014-06-30 基于多目标优化的主动‑反应式动态项目调度方法

Publications (2)

Publication Number Publication Date
CN104077634A CN104077634A (zh) 2014-10-01
CN104077634B true CN104077634B (zh) 2017-02-08

Family

ID=51598879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410307479.3A Expired - Fee Related CN104077634B (zh) 2014-06-30 2014-06-30 基于多目标优化的主动‑反应式动态项目调度方法

Country Status (1)

Country Link
CN (1) CN104077634B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268722B (zh) * 2014-10-20 2017-08-22 南京信息工程大学 基于多目标进化算法的动态柔性作业车间调度方法
CN104392317B (zh) * 2014-11-24 2017-12-01 南京信息工程大学 一种基于遗传文化基因算法的项目调度方法
CN104635772B (zh) * 2014-12-08 2017-02-08 南京信息工程大学 一种制造系统自适应动态调度方法
CN105117793B (zh) * 2015-08-10 2018-12-18 大连海事大学 一种双向通航港口船舶调度优化方法
CN107784391B (zh) * 2017-10-20 2018-08-14 中国人民解放军国防科技大学 作业时间随机的基本作战单元使用保障资源优化配置方法
CN108460509B (zh) * 2017-12-20 2021-04-27 中国人民解放军海军大连舰艇学院 一种动态环境下舰队防空资源调度优化控制方法与系统
CN114819762B (zh) * 2022-06-27 2022-09-13 北京神州光大科技有限公司 通过云平台对it系统维保服务信息进行处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606529B1 (en) * 2000-06-09 2003-08-12 Frontier Technologies, Inc. Complex scheduling method and device
CN102289749A (zh) * 2011-09-01 2011-12-21 西安电子科技大学 基于多智能体协同进化的任务排序方法
CN103049800A (zh) * 2012-12-17 2013-04-17 上海大学 一种存储时间受限的自动化立体仓库调度多目标优化方法
CN103699446A (zh) * 2013-12-31 2014-04-02 南京信息工程大学 基于量子粒子群优化算法的多目标工作流动态调度方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606529B1 (en) * 2000-06-09 2003-08-12 Frontier Technologies, Inc. Complex scheduling method and device
CN102289749A (zh) * 2011-09-01 2011-12-21 西安电子科技大学 基于多智能体协同进化的任务排序方法
CN103049800A (zh) * 2012-12-17 2013-04-17 上海大学 一种存储时间受限的自动化立体仓库调度多目标优化方法
CN103699446A (zh) * 2013-12-31 2014-04-02 南京信息工程大学 基于量子粒子群优化算法的多目标工作流动态调度方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一类带约束动态多目标优化问题的进化算法;杨亚强,刘淳安;《计算机工程与应用》;20121231;第48卷(第21期);第45-48,74页 *
改进粗粒度并行遗传算法在网格任务调度中的应用;薛胜军,刘芳芳,唐晨杰;《计算机测量与控制》;20120228;第20卷(第2期);第487-489页 *

Also Published As

Publication number Publication date
CN104077634A (zh) 2014-10-01

Similar Documents

Publication Publication Date Title
CN104077634B (zh) 基于多目标优化的主动‑反应式动态项目调度方法
Shen et al. Mathematical modeling and multi-objective evolutionary algorithms applied to dynamic flexible job shop scheduling problems
Simaria et al. A genetic algorithm based approach to the mixed-model assembly line balancing problem of type II
Pereira Jr et al. On multicriteria decision making under conditions of uncertainty
Papageorgiou et al. Application of fuzzy cognitive maps to water demand prediction
CN107229693A (zh) 基于深度学习的大数据系统配置参数调优的方法和系统
CN111309927B (zh) 一种基于知识图谱挖掘的个性化学习路径推荐方法及系统
Mishra et al. A fuzzy goal-programming model of machine-tool selection and operation allocation problem in FMS: a quick converging simulated annealing-based approach
CN114580678A (zh) 一种产品维修资源调度方法和系统
CN104392317B (zh) 一种基于遗传文化基因算法的项目调度方法
Wu et al. E-commerce workshop scheduling based on deep learning and genetic algorithm
Aziz Optimizing strategy software for repetitive construction projects within multi-mode resources
Fakhrzad et al. A new multi-objective job shop scheduling with setup times using a hybrid genetic algorithm
Sanusi et al. Comparative assessment of genetic and memetic algorithms
Li et al. Order assignment and scheduling under processing and distribution time uncertainty
Chan et al. An introduction of dominant genes in genetic algorithm for FMS
CN111553610B (zh) 一种基于学习-遗忘效应的调度方法及系统
Chang et al. Digital marketing strategies leveraging data fusion and communication technology for effective human resource management and organizational configuration
CN107563555A (zh) 基于Q学习memetic算法的动态多目标软件项目调度方法
Savsani et al. Optimal aggregate production planning by using genetic algorithm
Wu et al. An Improved Genetic‐Shuffled Frog‐Leaping Algorithm for Permutation Flowshop Scheduling
Azadeh et al. A novel hybrid fuzzy logic-genetic algorithm-data envelopment approach for simulation optimisation of pressure vessel design problems
Sosa et al. Genetic algorithm-based solution of multi-objective stochastic transportation problem
Tseng et al. Hybrid Taguchi-genetic algorithm for selecting and scheduling a balanced project portfolio
Wang A Business Management Resource‐Scheduling Method based on Deep Learning Algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20191204

Address after: Room 505c, 5 / F, podium Building 9, No. 3609, Baishi Road, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Jiewei Technology Co., Ltd

Address before: 210044 Nanjing City, Pukou Province, Nanjing Road, No. 219, No. six, No.

Patentee before: Nanjing University of Information Science and Technology

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170208

Termination date: 20200630

CF01 Termination of patent right due to non-payment of annual fee