CN114298376A - 一种基于启发式离散人工蜂群算法的软件项目调度方法 - Google Patents
一种基于启发式离散人工蜂群算法的软件项目调度方法 Download PDFInfo
- Publication number
- CN114298376A CN114298376A CN202111453983.0A CN202111453983A CN114298376A CN 114298376 A CN114298376 A CN 114298376A CN 202111453983 A CN202111453983 A CN 202111453983A CN 114298376 A CN114298376 A CN 114298376A
- Authority
- CN
- China
- Prior art keywords
- employee
- skill
- honey
- project
- task
- 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.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于启发式离散人工蜂群算法的软件项目调度方法,包括以下步骤(1)项目信息读取,包括任务和员工的属性;(2)设计新技能学习机制;(3)初始化算法参数;(4)生成初始蜜源种群,并计算目标值;(5)引领蜂通过多元学习策略对蜜源进行全局搜索;(6)跟随蜂通过基于启发信息的变异机制对蜜源进行局部搜索;(7)侦查蜂抛弃无用的蜜源,并重新随机生成新的蜜源替代旧蜜源;(8)判断迭代次数是否达到最大值,若达到,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入度的调度结果。本发明具有搜索能力强,生成的调度方案效率高的优点。
Description
技术领域
本发明属于项目管理领域,特别涉及了一种基于启发式离散人工蜂群算法的软件项目调度方法。
背景技术
近年来,软件行业已经发展成为国民经济的重要产业。国家出台了《新时期促进集成电路产业和软件产业高质量发展的若干政策》等相关文件以进一步优化软件产业的发展环境,深化产业国际合作,提升产业创新能力和发展质量。软件项目调度(SPSP)是软件开发的重要环节,直接影响软件企业的经济效益和市场竞争力。SPSP是指要找到一种合理的人力资源和任务的安排方式,最小化项目开发成本和持续时间,同时满足人力资源和任务的相关约束。由于软件项目一般具有周期长、复杂度高、专业性强且人力资源灵活多变的特点,传统的精确算法难以在有限的时间内得到符合要求的解。大多数学者采用元启发式算法搜索最优调度方案,进而辅助软件项目管理者做出最终的决策。
人工蜂群算法(artificial bee colony,ABC)是由土耳其学者Karaboga于2005年提出的一种模拟蜜蜂采蜜行为的元启发式算法,该算法具有引领蜂、跟随蜂和侦查蜂三个阶段。它通过引领蜂、跟随蜂和侦查蜂之间的信息交互,实现对蜜源的开采,进而寻找具有最多花蜜的蜜源。与其它群智能算法相比,ABC算法控制参数少,对于不同阶段可采用不同的策略,结构灵活,易于改进。本发明所提基于启发式离散人工蜂群算法的软件项目调度方法,它将软件项目调度问题信息与启发式离散人工蜂群算法的结构特点相融合,该算法基本步骤如下:采用整数编码的方式,随机生成初始蜜源种群,计算每个蜜源个体的目标值;引领蜂阶段:每一只引领蜂通过随机学习、精英学习和优值学习三种算子的选择概率,通过轮盘赌策略选择一种算子对相应蜜源进行开采,对每一个开采前后的蜜源进行贪婪选择,留下目标值较优的蜜源个体;跟随蜂阶段:首先,每一只跟随蜂通过排序选择策略选择一个需要进行变异的蜜源,然后基于员工任务契合度选择需要保留的最优个体部分信息,对满足变异概率,并基于目标值的优劣采用不同的变异策略,对开采前后的蜜源实行贪婪选择策略;侦查蜂阶段:判断是否存在未更新次数超出最大未更新次数limit的蜜源。如果有多个,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源。基本人工蜂群算法搜索较为盲目,收敛速度较慢,且具有易陷入局部最优,求解精度低等不足,综上,提出一种收敛效率更高且具有较强跳出局部最优能力的软件项目调度方法极为必要。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种基于启发式离散人工蜂群算法的软件项目调度方法,本发明能够极大地提高算法的全局搜索能力,具有较强的跳出局部最优的能力,从而快速高效地得到一组关于软件项目调度的最佳员工-任务调度方法。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于启发式离散人工蜂群算法的软件项目调度方法,包括以下步骤:
步骤S1,读取项目的输入信息,定义优化目标,设定约束条件:
项目的输入信息包括每个任务的工作量、技能要求、技能难度和任务优先级图,每位员工的已有技能、已有技能熟练度、学习能力、可投入的最大工作量、正常月薪和加班月薪。优化目标为最佳员工-任务调度方案中,项目工期和项目成本加权求和值最小。约束条件包括任务技能约束和员工不允许超负荷工作。
步骤S2,针对项目新技能需求,设计新技能学习机制,新技能学习机制包括员工选择学习新技能、新技能熟练度的增长曲线函数及其投入度的自适应变化。
步骤S3,初始化启发式离散人工蜂群算法参数。
步骤S4,生成初始蜜源种群,并计算每个蜜源的目标值:
采用整数编码,随机生成SN个蜜源个体,每个个体的编码均为M×N的矩阵:
Y=(yij)M×N,i=1,2,...,M,j=1,2,...,N。
其中,Y表示个体编码矩阵,yij∈{0,1,2,...,h},h表示解的粒度,即将员工Ei的最大投入度平均分为h份。为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度的yij/h奉献给任务Tj。通过每个任务Tj占据每个员工Ei最大贡献度的比例yij/h,将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
计算初始种群中每个个体的目标值:
f(X)=ωt·tdur+ωc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性。
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采。计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数。
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式。对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数。
步骤S7,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源:
判断是否存在未更新次数超出最大未更新次数limit的蜜源。如果有多个,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源。
步骤S8,终止准则判断:
若达到最大迭代次数,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入的工作量分配结果,否则,转至步骤S5。
优选的:步骤S1中所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
步骤S1中所述项目成本表示完成项目所有任务所花费的财力,它定义为:
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,表示在t′期间付给员工Ei的薪酬,表示Ei的正常月薪,表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合。xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比。表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当时,表示能够加班。
步骤S1所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
其中,表示员工Ei的技能熟练度集合,表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数。表示Ei没有第k个技能,表示Ei完全掌握第k个技能,C表示技能熟练度的最大值。tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...。将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示。
步骤S1所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
其中,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能。
步骤S1所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
优选的:步骤S2中所述员工选择学习新技能的方法:
其中,表示Eq的学习能力,表示员工Ei已有技能与新技能z相似熟练度的最大值, 表示是员工Ei在t0时刻对项目所有任务的总熟练程度, 表示所有员工在t0时刻对项目所有任务的总熟练程度的最大值, 表示所有员工在t0时刻对项目所有任务的总熟练程度的最小值,选择合适度最大的员工q学习新技能z,即
优选的:步骤S2中所述新技能熟练度增长曲线函数如下:
其中,表示员工Eq的新技能z的熟练度随时间t的增长函数,C表示技能熟练度的最大值,tanh(·)是双曲正切函数,表示员工Eq对新技能z的熟练度增长率, 表示Eq的学习能力,该值越大表示Eq学习能力越强,SDz表示新技能z的难度,该值越大表示新技能z的难度越大,
已有技能熟练度增长曲线函数如下:
优选的:步骤S2中所述的被选员工投入度自适应变化函数如下:
其中,dqj(t)表示t时刻经自适应调整后Eq对Tj的投入度,xqj表示项目调度方案中指定的员工Eq对任务Tj的投入度,该值为常数,T_active_set(t)表示t时刻可执行任务集合。
优选的:步骤S3中初始化启发式离散人工蜂群算法参数包括:设置启发式人工蜂群算法蜜源种群规模为SN、最大未更新次数limit、最大迭代次数G、随机学习选择概率Pr,设项目中有M名员工,N项任务,则变异概率Pm=1/(M·N),设迭代次数计数器t=0,每个蜜源的未更新次数counterp=0,p=1,2,...,SN。
优选的:步骤S5采用多元学习方法对所有蜜源个体进行开采的方法:
步骤S52,每一只引领蜂通过轮盘赌方法选择学习方式的序号。
步骤S53,如果选择学习方式1,则引领蜂通过随机学习对相应蜜源个体进行开采。
步骤S54,如果选择学习方式2,则引领蜂通过精英学习对相应蜜源个体进行开采。
步骤S55,如果选择学习方式3,则引领蜂通过优值学习对相应蜜源个体进行开采。
步骤S56,输出开采后的新蜜源个体。
优选的:步骤S6中,跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
其中,λ表示用于调整的相对重要程度,η表示用于调整的相对重要程度,γ用于调整的相对重要程度,表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,且 表示Ei的正常月薪,表示Ei的加班月薪。
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号
sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数。
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵。
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作。
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则 表示经搜索后的元素ypij的新值,表示最优蜜源个体Ybest中的元素。否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
步骤S67,计算变异后的蜜源个体YPnew的目标值,若YPnew的目标值优于YP,即f(YPnew)<f(YP),则令Pop(p)=YPnew,Counterp=0,Counterp表示第p个蜜源的未更新次数。若YPnew的目标值未优于YP,则Counterp=Counterp+1。
步骤S68,变异个体目标值优于当前最优蜜源个体,即f(YPnew)<f(Ybest),则Ybest=YPnew。
步骤S69,重复步骤S63-S68,直至所有跟随蜂都完成采蜜操作,最后输出变异后的蜜源种群及其为更新次数。
优选的:步骤S7中,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源的实现步骤如下:
步骤S71,根据每个蜜源的当前未更新次数Counterp,p=1,2,...,SN,判断是否存在Counterp>limit,limit表示蜜源最大未更新次数。
步骤S72,若不存在Counterp>limit,则t=t+1,t表示迭代次数,跳转至S8。若存在Counterp>limit,则记录下该蜜源个体。
步骤S73,如果有多个未更新次数超过limit的蜜源,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂。
步骤S74,转变后的侦查蜂随机搜寻新的蜜源,用新蜜源代替旧蜜源,令t=t+1。
优选的:所述解的粒度h为10。
本发明相比现有技术,具有以下有益效果:
(1)本发明建立了考虑新技能学习机制的软件项目调度问题模型,该模型融入员工对新技能的学习、新技能熟练度的增长及其投入度的自适应变化等实际因素,通过寻找最佳员工-任务调度方案,最小化软件项目的工期和成本。
(2)本发明采用一种启发式人工蜂群算法实现软件项目调度,引领蜂阶段引入一种多样性较好且搜索能力较强的全局搜索策略,在跟随蜂阶段利用问题启发信息,采用启发式变异机制进行局部搜索,利于跳出局部最优。该算法的性能优于传统的人工蜂群算法。
(3)本发明在引领蜂阶段采用多元学习策略,给予随机学习算子较大的被选概率,有效地增加了种群的多样性,保障了种群对决策空间的大范围全局搜索;同时小概率的精英学习和优值学习算子能够引导种群向正确的方向移动,进一步提高了算法的搜索能力和求解精度。
(4)为了提高算法的局部搜索能力,本发明在跟随蜂阶段采用一种基于启发信息的变异机制,通过排序选择保证优势个体的选择概率,利用模型优化目标的启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式,加强对算法搜索方向的引导,提高算法局部寻优能力。
附图说明
图1为本发明采用的基于启发式人工蜂群算法的主体流程图。
图2为本实例中的任务优先级图。
图3为采用本发明基于启发式人工蜂群算法求解实例得到的最佳软件项目员工-任务调度方案对应的甘特图。
图4为采用基本人工蜂群算法求解实例得到的最佳软件项目员工-任务调度方案对应的甘特图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一个实际项目中,有10个员工和15项任务(即M=10,N=15),共有6个技能要求(设为1、2、3、4、5、6,其技能难度分别为0.4,0.4,0.5,0.6,0.7,0.5),其中技能6为新技能。任务优先级图如图2所示。每项任务Tj要求的工作量以及技能要求集合reqj如表1所示。每个员工Ei对整个项目投入的最大允许工作量学习能力正常月薪加班月薪所掌握的技能集合skilli以及已有技能熟练度集合如表2所示。
表1每项任务要求的工作量和技能要求集合
表2员工情况
使用本发明提出的一种基于启发式离散人工蜂群算法的软件项目调度方法求解该项目实施例的调度方案,如图2所示,包括以下步骤:
步骤S1,读取项目的输入信息包括任务属性(见表1)和员工属性(见表2),定义优化目标,设定约束条件并初始化:
项目的输入信息包括每个任务的工作量、技能要求、技能难度和任务优先级图,每位员工的已有技能、已有技能熟练度、学习能力、可投入的最大工作量、正常月薪和加班月薪。优化目标为最佳员工-任务调度方案中,项目工期和项目成本加权求和值最小。约束条件包括任务技能约束和员工不允许超负荷工作。
所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
所述项目成本表示完成项目所有任务所花费的财力(即员工的工资),它定义为:
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,本实例中,M=10,表示在t′期间付给员工Ei的薪酬,表示Ei的正常月薪,表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合。xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比。表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当时,表示能够加班。“项目工期”和“项目成本”的目标值均越小越好。
本发明设定的约束条件包括任务技能约束,以及员工不能超负荷工作的约束。
所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
其中,表示员工Ei的技能熟练度集合,表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数。表示Ei没有第k个技能,表示Ei完全掌握第k个技能,C表示技能熟练度的最大值。tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...。将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示。
所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
其中,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能。
所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
步骤S2,针对项目新技能需求,设计新技能学习机制,本发明采用让已有员工学习新技能的方式来满足项目技能需求,由此设计一种新技能学习机制,新技能学习机制包括如何员工选择学习新技能、新技能熟练度的增长曲线函数及其投入度的自适应变化。
所述员工选择学习新技能的方法:
其中,表示Eq的学习能力,表示员工Ei已有技能与新技能z相似熟练度的最大值, 表示是员工Ei在t0时刻对项目所有任务的总熟练程度, 表示所有员工在t0时刻对项目所有任务的总熟练程度的最大值, 表示所有员工在t0时刻对项目所有任务的总熟练程度的最小值,选择合适度最大的员工q学习新技能z,即
所述新技能熟练度增长曲线函数如下:
其中,表示员工Eq的新技能z的熟练度随时间t的增长函数,C表示技能熟练度的最大值,tanh(·)是双曲正切函数,表示员工Eq对新技能z的熟练度增长率, 表示Eq的学习能力,该值越大表示Eq学习能力越强,SDz表示新技能z的难度,该值越大表示新技能z的难度越大,
已有技能熟练度增长曲线函数如下:
所述的被选员工投入度自适应变化函数如下:
其中,dqj(t)表示t时刻经自适应调整后Eq对Tj的投入度,xqj表示项目调度方案中指定的员工Eq对任务Tj的投入度,该值为常数,T_active_set(t)表示t时刻可执行任务集合。
步骤S3,初始化启发式离散人工蜂群算法参数。
初始化启发式离散人工蜂群算法参数包括:设置启发式人工蜂群算法蜜源种群规模为SN=100、最大未更新次数limit=D·SN(本发明中D=M·N)、最大迭代次数G=250、随机学习选择概率Pr=0.6,设项目中有M名员工,N项任务,则变异概率Pm=1/(M·N),本实例中,Pm=1/150;设迭代次数计数器t=0,每个蜜源的未更新次数counterp=0,p=1,2,...,SN。
步骤S4,生成初始蜜源种群,并计算每个蜜源的目标值:
采用整数编码,随机生成SN个蜜源个体,每个个体的编码均为M×N的矩阵:
Y=(yij)M×N,i=1,2,...,M,j=1,2,...,N。
其中,Y表示个体编码矩阵,yij∈{0,1,2,...,h},h表示解的粒度,即将员工Ei的最大投入度平均分为h份。为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度的yij/h奉献给任务Tj。通过每个任务Tj占据每个员工Ei最大贡献度的比例yij/h,本发明设h为10。将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
计算初始种群中每个个体的目标值:
f(X)=ωt·tdur+ωc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性,本实例设置ωt=10-1,ωc=10-5。
约束处理的方法如下:
如果参与某项任务的所有员工的技能总集合未满足该任务的所有技能需求,则将它的项目工期和成本分别设置为一个很高的惩罚值。假设reqsk为该个体中未满足约束的技能总数,则按如下公式分别惩罚:
由于本发明的新技能学习机制在选择员工时,只选择一个员工进行新技能的学习,因此新技能只需一人学的约束始终被满足。
如果某个个体违反了员工不能超负荷工作的约束,则采用将投入度归一化的方法。如果调度方案使员工Ei在t时刻超负荷工作,即则将原先为他分配的在每个活动任务(即t时刻正在开发的任务)中的投入度除以如果则不对工作量进行归一化处理。本发明采用的归一化处理方法能够保证员工不能超负荷工作的约束始终被满足。
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采。计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数。
采用多元学习方法对所有蜜源个体进行开采的方法:
步骤S52,每一只引领蜂通过轮盘赌方法选择学习方式的序号。
步骤S53,如果选择学习方式1,则引领蜂通过随机学习对相应蜜源个体进行开采。
步骤S54,如果选择学习方式2,则引领蜂通过精英学习对相应蜜源个体进行开采。
步骤S55,如果选择学习方式3,则引领蜂通过优值学习对相应蜜源个体进行开采。
步骤S56,输出开采后的新蜜源个体。
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式。对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数。
跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
其中,λ表示用于调整的相对重要程度,η表示用于调整的相对重要程度,γ用于调整的相对重要程度,表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,且 表示Ei的正常月薪,表示Ei的加班月薪。
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数。
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵。
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作。
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则 表示经搜索后的元素ypij的新值,表示最优蜜源个体Ybest中的元素。否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
其中,N(0,1)是标准高斯分布,rand∈[0,1],round(.)表示四舍五入取整,表示决策变量yij的取值上限,根据本文编码方式,决策变量yij的取值上限min(.)是表示个体中的元素值不超过以增加可行解数量。
步骤S67,计算变异后的蜜源个体YPnew的目标值,若YPnew的目标值优于YP,即f(YPnew)<f(YP),则令Pop(p)=YPnew,Counterp=0,Counterp表示第p个蜜源的未更新次数。若YPnew的目标值未优于YP,则Counterp=Counterp+1。
步骤S68,变异个体目标值优于当前最优蜜源个体,即f(YPnew)<f(Ybest),则Ybest=YPnew。
步骤S69,重复步骤S63-S68,直至所有跟随蜂都完成采蜜操作,最后输出变异后的蜜源种群及其为更新次数。
步骤S7,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源:
判断是否存在未更新次数超出最大未更新次数limit的蜜源。如果有多个未更新次数超过limit的蜜源,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源。
侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源的实现步骤如下:
步骤S71,根据每个蜜源的当前未更新次数Counterp,p=1,2,...,SN,判断是否存在Counterp>limit,limit表示蜜源最大未更新次数。
步骤S72,若不存在Counterp>limit,则t=t+1,t表示迭代次数,跳转至S8。若存在Counterp>limit,则记录下该蜜源个体。
步骤S73,如果有多个未更新次数超过limit的蜜源,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂。
步骤S74,转变后的侦查蜂随机搜寻新的蜜源,用新蜜源代替旧蜜源,令t=t+1。
步骤S8,终止准则判断:
若达到最大迭代次数,t>G,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入的工作量分配结果,否则,转至步骤S5。
本发明的效果可以通过以下仿真实验进一步说明:
1.实验条件:
采用pycharm软件进行仿真实验,计算机处理器参数Intel(R)Core(TM)i5-10300UCPU@2.50GHz,16G运行内存。
2.实验内容:
本发明针对上述具有10个软件工程师、15个任务、6个技能要求的软件项目实例求解项目调度方案。该项目的任务优先级图如图2所示,图2中1到15分别表示任务的编号,有向连线表示任务开发需满足的先后次序。
3.实验结果:
采用本发明启发式离散人工蜂群算法与基本人工蜂群算法分别对软件项目调度实例进行求解。图2为实例的任务优先级图。将两种方法在实例中分别独立地运行30次。表3分别列出了两种方法在30次运行中求得的调度方案最佳及平均目标值,以及最佳调度方案中的项目工期和成本。由表3可见,与基本人工蜂群算法相比,本发明能够搜索到目标值更优的个体,取得的最佳目标值和平均最优值都远优于基本人工蜂群算法。在搜索到的最佳方案中的项目工期和项目成本均优于基本人工蜂群算法,大幅度降低了项目的工期和成本,显著增强了项目开发的效率。
表3两种算法的求解结果
图3为采用本发明启发式离散人工蜂群算法求解实例得到的最佳软件项目员工-任务调度方案对应的甘特图,图4为采用基本人工蜂群算法求解实例得到的最佳软件项目员工-任务调度方案对应的甘特图。从甘特图中可以获取每项任务的开始时间、结束时间、持续时间,以及任务之间的先后关系。由图3可见,本发明基于启发式离散人工蜂群算法求得的软件项目调度方案的项目工期为19.2308个月,由图4可见,基本人工蜂群算法求得的软件项目调度方案的项目工期为20.4802个月。
综上,本发明提出的基于启发式离散人工蜂群算法的软件项目调度方法,在以最小化项目工期和成本为优化目标的软件项目调度问题上,建立了考虑新技能学习机制的软件项目调度的数学模型。在基本人工蜂群算法的基础上,在引领蜂阶段引入多元学习策略,以维护种群多样性,提升算法的全局搜索能力;同时在跟随蜂阶段设计基于启发信息的变异机制,在保留最优个体中契合度高的员工信息的同时,根据当前蜜源个体的目标值优劣,有针对性地采用不同的变异操作,增强对局部搜索方向的引导,提高算法的搜索精度,因此本发明具有搜索能力强,生成的调度方案效率高的优点。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于,包括以下步骤:
步骤S1,读取项目的输入信息,定义优化目标,设定约束条件:
项目的输入信息包括每个任务的工作量、技能要求、技能难度和任务优先级图,每位员工的已有技能、已有技能熟练度、学习能力、可投入的最大工作量、正常月薪和加班月薪;优化目标为最佳员工-任务调度方案中,项目工期和项目成本加权求和值最小;约束条件包括任务技能约束和员工不允许超负荷工作;
步骤S2,针对项目新技能需求,设计新技能学习机制,新技能学习机制包括员工选择学习新技能、新技能熟练度的增长曲线函数及其投入度的自适应变化;
步骤S3,初始化启发式离散人工蜂群算法参数;
步骤S4,生成初始蜜源种群,并计算每个蜜源的目标值:
采用整数编码,随机生成SN个蜜源个体,每个个体的编码均为M×N的矩阵:
Y=(yij)M×N,i=1,2,...,M,j=1,2,...,N;
其中,Y表示个体编码矩阵,yij∈{0,1,2,...,h},h表示解的粒度,即将员工Ei的最大投入度平均分为h份;为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度的yij/h奉献给任务Tj;通过每个任务Tj占据每个员工Ei最大贡献度的比例yij/h,将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
计算初始种群中每个个体的目标值:
f(X)=ωt·tdur+ωc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性;
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采;计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数;
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式;对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数;
步骤S7,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源:
判断是否存在未更新次数超出最大未更新次数limit的蜜源;如果有多个,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源;
步骤S8,终止准则判断:
若达到最大迭代次数,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入的工作量分配结果,否则,转至步骤S5。
2.根据权利要求1所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S1中所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
步骤S1中所述项目成本表示完成项目所有任务所花费的财力,它定义为:
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,表示在t′期间付给员工Ei的薪酬,表示Ei的正常月薪,表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合;xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比;表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当时,表示能够加班;
步骤S1所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
其中,表示员工Ei的技能熟练度集合,表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数;表示Ei没有第k个技能,表示Ei完全掌握第k个技能,C表示技能熟练度的最大值;tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...;将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示;
步骤S1所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
其中,reqj表示任务Tj所需求的技能的集合;skilli表示员工Ei所掌握的已有技能的集合;z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能;
步骤S1所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
3.根据权利要求2所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S2中所述员工选择学习新技能的方法:
6.根据权利要求5所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S3中初始化启发式离散人工蜂群算法参数包括:设置启发式人工蜂群算法蜜源种群规模为SN、最大未更新次数limit、最大迭代次数G、随机学习选择概率Pr,设项目中有M名员工,N项任务,则变异概率Pm=1/(M·N),设迭代次数计数器t=0,每个蜜源的未更新次数counterp=0,p=1,2,...,SN。
8.根据权利要求7所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S6中,跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
其中,λ表示用于调整的相对重要程度,η表示用于调整的相对重要程度,γ用于调整的相对重要程度,表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,且 表示Ei的正常月薪,表示Ei的加班月薪;
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数;
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵;
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作;
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则 表示经搜索后的元素ypij的新值,表示最优蜜源个体Ybest中的元素;否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
步骤S67,计算变异后的蜜源个体YPnew的目标值,若YPnew的目标值优于YP,即f(YPnew)<f(YP),则令Pop(p)=YPnew,Counterp=0,Counterp表示第p个蜜源的未更新次数;若YPnew的目标值未优于YP,则Counterp=Counterp+1;
步骤S68,变异个体目标值优于当前最优蜜源个体,即f(YPnew)<f(Ybest),则Ybest=YPnew;
步骤S69,重复步骤S63-S68,直至所有跟随蜂都完成采蜜操作,最后输出变异后的蜜源种群及其为更新次数。
9.根据权利要求8所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S7中,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源的实现步骤如下:
步骤S71,根据每个蜜源的当前未更新次数Counterp,p=1,2,...,SN,判断是否存在Counterp>limit,limit表示蜜源最大未更新次数;
步骤S72,若不存在Counterp>limit,则t=t+1,t表示迭代次数,跳转至S8;若存在Counterp>limit,则记录下该蜜源个体;
步骤S73,如果有多个未更新次数超过limit的蜜源,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂;
步骤S74,转变后的侦查蜂随机搜寻新的蜜源,用新蜜源代替旧蜜源,令t=t+1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453983.0A CN114298376A (zh) | 2021-12-01 | 2021-12-01 | 一种基于启发式离散人工蜂群算法的软件项目调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111453983.0A CN114298376A (zh) | 2021-12-01 | 2021-12-01 | 一种基于启发式离散人工蜂群算法的软件项目调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114298376A true CN114298376A (zh) | 2022-04-08 |
Family
ID=80966318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111453983.0A Pending CN114298376A (zh) | 2021-12-01 | 2021-12-01 | 一种基于启发式离散人工蜂群算法的软件项目调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114298376A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349126A (zh) * | 2023-12-05 | 2024-01-05 | 国网辽宁省电力有限公司大连供电公司 | 一种基于大数据的实时信息网络日志分析方法及系统 |
-
2021
- 2021-12-01 CN CN202111453983.0A patent/CN114298376A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349126A (zh) * | 2023-12-05 | 2024-01-05 | 国网辽宁省电力有限公司大连供电公司 | 一种基于大数据的实时信息网络日志分析方法及系统 |
CN117349126B (zh) * | 2023-12-05 | 2024-02-09 | 国网辽宁省电力有限公司大连供电公司 | 一种基于大数据的实时信息网络日志分析方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zou et al. | A new global particle swarm optimization for the economic emission dispatch with or without transmission losses | |
Harik et al. | The gambler's ruin problem, genetic algorithms, and the sizing of populations | |
Whiteson | Evolutionary function approximation for reinforcement learning | |
WO2021088436A1 (zh) | 一种用于多语言协同开发的项目调度方法及装置 | |
JPS62249203A (ja) | プロセス制御方法及び装置 | |
CN110222848A (zh) | 计算机执行的集成模型的确定方法及装置 | |
CN106228265B (zh) | 基于改进粒子群优化的总拖期运输计划调度方法 | |
CN104077634B (zh) | 基于多目标优化的主动‑反应式动态项目调度方法 | |
CN109670655B (zh) | 一种电力系统多目标粒子群优化调度方法 | |
CN112685138A (zh) | 云环境下基于多种群混合智能优化的多工作流调度方法 | |
CN111680452A (zh) | 基于全要素数据挖掘的电网工程精准投资决策仿真方法 | |
Hein et al. | Designing new heuristics for the capacitated lot sizing problem by genetic programming | |
CN114298376A (zh) | 一种基于启发式离散人工蜂群算法的软件项目调度方法 | |
Glover et al. | The OptQuest approach to Crystal Ball simulation optimization | |
Thepphakorn et al. | Modified and hybridised bi-objective firefly algorithms for university course scheduling | |
CN109858882A (zh) | 一种基于改进的退火算法的新高考排课方法及系统 | |
CN108829846A (zh) | 一种基于用户特征的业务推荐平台数据聚类优化系统及方法 | |
Hu et al. | A two-stage multi-objective task scheduling framework based on invasive tumor growth optimization algorithm for cloud computing | |
CN104778250A (zh) | 基于遗传规划决策树的信息物理融合系统数据分类方法 | |
Duenas et al. | A genetic algorithm approach to the nurse scheduling problem with fuzzy preferences | |
Elmas et al. | Artificial Intelligence Techniques Used in Project Management | |
Savsani et al. | Optimal aggregate production planning by using genetic algorithm | |
Fuqing et al. | A novel genetic algorithm for partner selection problem in virtual enterprise | |
Shen et al. | Coevolutionary scheduling of dynamic software project considering the new skill learning | |
Capuano et al. | Multi-criteria fuzzy ordinal peer assessment for MOOCs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |