CN114298376A - 一种基于启发式离散人工蜂群算法的软件项目调度方法 - Google Patents

一种基于启发式离散人工蜂群算法的软件项目调度方法 Download PDF

Info

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
Application number
CN202111453983.0A
Other languages
English (en)
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.)
Nanjing University of Information Science and Technology
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 CN202111453983.0A priority Critical patent/CN114298376A/zh
Publication of CN114298376A publication Critical patent/CN114298376A/zh
Pending legal-status Critical Current

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的最大投入度
Figure BDA0003387218050000021
平均分为h份。
Figure BDA0003387218050000022
为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度
Figure BDA0003387218050000023
的yij/h奉献给任务Tj。通过每个任务Tj占据每个员工Ei最大贡献度
Figure BDA0003387218050000024
的比例yij/h,将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
Figure BDA0003387218050000025
其中,
Figure BDA0003387218050000026
计算初始种群中每个个体的目标值:
f(X)=ωt·tdurc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性。
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采。计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数。
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式。对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数。
步骤S7,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源:
判断是否存在未更新次数超出最大未更新次数limit的蜜源。如果有多个,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源。
步骤S8,终止准则判断:
若达到最大迭代次数,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入的工作量分配结果,否则,转至步骤S5。
优选的:步骤S1中所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
Figure BDA0003387218050000031
其中,tdur表示项目工期,
Figure BDA0003387218050000032
表示任务Tj的开始时间,
Figure BDA0003387218050000033
表示任务Tj的完成时间,且
Figure BDA0003387218050000034
N表示任务个数。
步骤S1中所述项目成本表示完成项目所有任务所花费的财力,它定义为:
Figure BDA0003387218050000035
Figure BDA0003387218050000041
条件1:
Figure BDA0003387218050000042
条件2:
Figure BDA0003387218050000043
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,
Figure BDA0003387218050000044
表示在t′期间付给员工Ei的薪酬,
Figure BDA0003387218050000045
表示Ei的正常月薪,
Figure BDA0003387218050000046
表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合。xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比。
Figure BDA0003387218050000047
表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当
Figure BDA0003387218050000048
时,表示能够加班。
步骤S1所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
Figure BDA0003387218050000049
其中,
Figure BDA00033872180500000410
表示员工Ei的技能熟练度集合,
Figure BDA00033872180500000411
表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数。
Figure BDA00033872180500000412
表示Ei没有第k个技能,
Figure BDA00033872180500000413
表示Ei完全掌握第k个技能,C表示技能熟练度的最大值。tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...。将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示。
Figure BDA00033872180500000414
在不同时刻具有不同取值,由
Figure BDA00033872180500000415
求出员工Ei在tl时刻对任务Tj的熟练程度:
Figure BDA00033872180500000416
Figure BDA00033872180500000417
其中,
Figure BDA0003387218050000051
表示员工Ei在tl时刻对任务Tj的熟练程度,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。
步骤S1所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
Figure BDA0003387218050000052
Figure BDA0003387218050000053
其中,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能。
步骤S1所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
Figure BDA0003387218050000054
其中,
Figure BDA0003387218050000055
表示每个任务Tj占据每个员工Ei最大贡献度。
优选的:步骤S2中所述员工选择学习新技能的方法:
员工Ei的每个已有技能k∈skilli都具有一定的初始熟练度
Figure BDA0003387218050000056
由此定义员工Ei的技能k与新技能z(z∈{1,2,...,S})之间的相似熟练度
Figure BDA0003387218050000057
Figure BDA0003387218050000058
其中,t0表示项目开始时间,rkz为技能k与新技能z之间的关联程度,rkz∈[0,1],员工Ei学习新技能z的合适度
Figure BDA0003387218050000059
Figure BDA00033872180500000510
其中,
Figure BDA00033872180500000511
表示Eq的学习能力,
Figure BDA00033872180500000512
表示员工Ei已有技能与新技能z相似熟练度的最大值,
Figure BDA0003387218050000061
Figure BDA0003387218050000062
表示是员工Ei在t0时刻对项目所有任务的总熟练程度,
Figure BDA0003387218050000063
Figure BDA0003387218050000064
表示所有员工在t0时刻对项目所有任务的总熟练程度的最大值,
Figure BDA0003387218050000065
Figure BDA0003387218050000066
表示所有员工在t0时刻对项目所有任务的总熟练程度的最小值,
Figure BDA0003387218050000067
选择合适度
Figure BDA0003387218050000068
最大的员工q学习新技能z,即
Figure BDA0003387218050000069
优选的:步骤S2中所述新技能熟练度增长曲线函数如下:
Figure BDA00033872180500000610
其中,
Figure BDA00033872180500000611
表示员工Eq的新技能z的熟练度随时间t的增长函数,C表示技能熟练度的最大值,tanh(·)是双曲正切函数,
Figure BDA00033872180500000612
表示员工Eq对新技能z的熟练度增长率,
Figure BDA00033872180500000613
Figure BDA00033872180500000614
表示Eq的学习能力,该值越大表示Eq学习能力越强,SDz表示新技能z的难度,该值越大表示新技能z的难度越大,
已有技能熟练度增长曲线函数如下:
Figure BDA00033872180500000615
其中,
Figure BDA00033872180500000616
表示员工Ei的已有技能k的熟练度随时间t的增长函数,
Figure BDA00033872180500000617
表示员工Ei对技能k的初始熟练度,即
Figure BDA00033872180500000618
Figure BDA00033872180500000619
表示员工Ei对技能k的熟练度增长率,
Figure BDA00033872180500000620
优选的:步骤S2中所述的被选员工投入度自适应变化函数如下:
Figure BDA0003387218050000071
其中,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采用多元学习方法对所有蜜源个体进行开采的方法:
步骤S51,根据输入的随机学习概率Pr,计算精英学习的概率Pe和优值学习的概率Ps,其中,
Figure BDA0003387218050000072
步骤S52,每一只引领蜂通过轮盘赌方法选择学习方式的序号。
步骤S53,如果选择学习方式1,则引领蜂通过随机学习对相应蜜源个体进行开采。
步骤S54,如果选择学习方式2,则引领蜂通过精英学习对相应蜜源个体进行开采。
步骤S55,如果选择学习方式3,则引领蜂通过优值学习对相应蜜源个体进行开采。
步骤S56,输出开采后的新蜜源个体。
优选的:步骤S6中,跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
Figure BDA0003387218050000073
其中,λ表示用于调整
Figure BDA0003387218050000074
的相对重要程度,η表示用于调整
Figure BDA0003387218050000075
的相对重要程度,γ用于调整
Figure BDA0003387218050000076
的相对重要程度,
Figure BDA0003387218050000077
表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,
Figure BDA0003387218050000078
Figure BDA0003387218050000081
Figure BDA0003387218050000082
表示Ei的正常月薪,
Figure BDA0003387218050000083
表示Ei的加班月薪。
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号
sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数。
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵。
步骤S64,对每个任务Tj,均依据wfij进行轮盘赌选择,选出一个员工
Figure BDA0003387218050000084
将该员工的序号保留,即indexj=uj,indexj表示任务Tj所选员工索引,uj表示被选员工序号。
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作。
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则
Figure BDA0003387218050000085
Figure BDA0003387218050000086
表示经搜索后的元素ypij的新值,
Figure BDA0003387218050000087
表示最优蜜源个体Ybest中的元素。否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
Figure BDA0003387218050000088
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
Figure BDA0003387218050000089
其中,N(0,1)是标准高斯分布,rand∈[0,1],round(.)表示四舍五入取整,
Figure BDA00033872180500000810
表示决策变量yij的取值上限,决策变量yij的取值上限
Figure BDA00033872180500000811
min(.)是表示个体中的元素值不超过
Figure BDA00033872180500000812
步骤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要求的工作量
Figure BDA0003387218050000101
以及技能要求集合reqj如表1所示。每个员工Ei对整个项目投入的最大允许工作量
Figure BDA0003387218050000102
学习能力
Figure BDA0003387218050000103
正常月薪
Figure BDA0003387218050000104
加班月薪
Figure BDA0003387218050000105
所掌握的技能集合skilli以及已有技能熟练度集合
Figure BDA0003387218050000106
如表2所示。
表1每项任务要求的工作量和技能要求集合
Figure BDA0003387218050000107
Figure BDA0003387218050000111
表2员工情况
Figure BDA0003387218050000112
使用本发明提出的一种基于启发式离散人工蜂群算法的软件项目调度方法求解该项目实施例的调度方案,如图2所示,包括以下步骤:
步骤S1,读取项目的输入信息包括任务属性(见表1)和员工属性(见表2),定义优化目标,设定约束条件并初始化:
项目的输入信息包括每个任务的工作量、技能要求、技能难度和任务优先级图,每位员工的已有技能、已有技能熟练度、学习能力、可投入的最大工作量、正常月薪和加班月薪。优化目标为最佳员工-任务调度方案中,项目工期和项目成本加权求和值最小。约束条件包括任务技能约束和员工不允许超负荷工作。
所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
Figure BDA0003387218050000121
其中,tdur表示项目工期,
Figure BDA0003387218050000122
表示任务Tj的开始时间,
Figure BDA0003387218050000123
表示任务Tj的完成时间,且
Figure BDA0003387218050000124
N表示任务个数,本实例中,N=15。
所述项目成本表示完成项目所有任务所花费的财力(即员工的工资),它定义为:
Figure BDA0003387218050000125
Figure BDA0003387218050000126
条件1:
Figure BDA0003387218050000127
条件2:
Figure BDA0003387218050000128
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,本实例中,M=10,
Figure BDA0003387218050000129
表示在t′期间付给员工Ei的薪酬,
Figure BDA00033872180500001210
表示Ei的正常月薪,
Figure BDA00033872180500001211
表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合。xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比。
Figure BDA00033872180500001212
表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当
Figure BDA0003387218050000131
时,表示能够加班。“项目工期”和“项目成本”的目标值均越小越好。
本发明设定的约束条件包括任务技能约束,以及员工不能超负荷工作的约束。
所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
Figure BDA0003387218050000132
其中,
Figure BDA0003387218050000133
表示员工Ei的技能熟练度集合,
Figure BDA0003387218050000134
表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数。
Figure BDA0003387218050000135
表示Ei没有第k个技能,
Figure BDA0003387218050000136
表示Ei完全掌握第k个技能,C表示技能熟练度的最大值。tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...。将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示。
Figure BDA0003387218050000137
在不同时刻具有不同取值,由
Figure BDA0003387218050000138
求出员工Ei在tl时刻对任务Tj的熟练程度:
Figure BDA0003387218050000139
Figure BDA00033872180500001310
其中,
Figure BDA00033872180500001311
表示员工Ei在tl时刻对任务Tj的熟练程度,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。
所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
Figure BDA00033872180500001312
Figure BDA00033872180500001313
其中,reqj表示任务Tj所需求的技能的集合。skilli表示员工Ei所掌握的已有技能的集合。z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能。
所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
Figure BDA0003387218050000141
其中,
Figure BDA0003387218050000142
表示每个任务Tj占据每个员工Ei最大贡献度。
步骤S2,针对项目新技能需求,设计新技能学习机制,本发明采用让已有员工学习新技能的方式来满足项目技能需求,由此设计一种新技能学习机制,新技能学习机制包括如何员工选择学习新技能、新技能熟练度的增长曲线函数及其投入度的自适应变化。
所述员工选择学习新技能的方法:
员工Ei的每个已有技能k∈skilli都具有一定的初始熟练度
Figure BDA0003387218050000143
由此定义员工Ei的技能k与新技能z(z∈{1,2,...,S})之间的相似熟练度
Figure BDA0003387218050000144
Figure BDA0003387218050000145
其中,t0表示项目开始时间,rkz为技能k与新技能z之间的关联程度,rkz∈[0,1],定义员工Ei学习新技能z的合适度
Figure BDA0003387218050000146
Figure BDA0003387218050000147
其中,
Figure BDA0003387218050000148
表示Eq的学习能力,
Figure BDA0003387218050000149
表示员工Ei已有技能与新技能z相似熟练度的最大值,
Figure BDA00033872180500001410
Figure BDA00033872180500001411
表示是员工Ei在t0时刻对项目所有任务的总熟练程度,
Figure BDA00033872180500001412
Figure BDA00033872180500001413
表示所有员工在t0时刻对项目所有任务的总熟练程度的最大值,
Figure BDA00033872180500001414
Figure BDA00033872180500001415
表示所有员工在t0时刻对项目所有任务的总熟练程度的最小值,
Figure BDA00033872180500001416
选择合适度
Figure BDA00033872180500001417
最大的员工q学习新技能z,即
Figure BDA00033872180500001418
所述新技能熟练度增长曲线函数如下:
Figure BDA0003387218050000151
其中,
Figure BDA0003387218050000152
表示员工Eq的新技能z的熟练度随时间t的增长函数,C表示技能熟练度的最大值,tanh(·)是双曲正切函数,
Figure BDA0003387218050000153
表示员工Eq对新技能z的熟练度增长率,
Figure BDA0003387218050000154
Figure BDA0003387218050000155
表示Eq的学习能力,该值越大表示Eq学习能力越强,SDz表示新技能z的难度,该值越大表示新技能z的难度越大,
已有技能熟练度增长曲线函数如下:
Figure BDA0003387218050000156
其中,
Figure BDA0003387218050000157
表示员工Ei的已有技能k的熟练度随时间t的增长函数,
Figure BDA0003387218050000158
表示员工Ei对技能k的初始熟练度,即
Figure BDA0003387218050000159
Figure BDA00033872180500001510
表示员工Ei对技能k的熟练度增长率,
Figure BDA00033872180500001511
所述的被选员工投入度自适应变化函数如下:
Figure BDA00033872180500001512
其中,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的最大投入度
Figure BDA0003387218050000161
平均分为h份。
Figure BDA0003387218050000162
为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度
Figure BDA0003387218050000163
的yij/h奉献给任务Tj。通过每个任务Tj占据每个员工Ei最大贡献度
Figure BDA0003387218050000164
的比例yij/h,本发明设h为10。将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
Figure BDA0003387218050000165
其中,
Figure BDA0003387218050000166
计算初始种群中每个个体的目标值:
f(X)=ωt·tdurc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性,本实例设置ωt=10-1,ωc=10-5
约束处理的方法如下:
如果参与某项任务的所有员工的技能总集合未满足该任务的所有技能需求,则将它的项目工期和成本分别设置为一个很高的惩罚值。假设reqsk为该个体中未满足约束的技能总数,则按如下公式分别惩罚:
Figure BDA0003387218050000167
Figure BDA0003387218050000171
由于本发明的新技能学习机制在选择员工时,只选择一个员工进行新技能的学习,因此新技能只需一人学的约束始终被满足。
如果某个个体违反了员工不能超负荷工作的约束,则采用将投入度归一化的方法。如果调度方案使员工Ei在t时刻超负荷工作,即
Figure BDA0003387218050000172
则将原先为他分配的在每个活动任务(即t时刻正在开发的任务)中的投入度除以
Figure BDA0003387218050000173
如果
Figure BDA0003387218050000174
则不对工作量进行归一化处理。本发明采用的归一化处理方法能够保证员工不能超负荷工作的约束始终被满足。
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采。计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数。
采用多元学习方法对所有蜜源个体进行开采的方法:
步骤S51,根据输入的随机学习概率Pr,计算精英学习的概率Pe和优值学习的概率Ps,其中,
Figure BDA0003387218050000175
步骤S52,每一只引领蜂通过轮盘赌方法选择学习方式的序号。
步骤S53,如果选择学习方式1,则引领蜂通过随机学习对相应蜜源个体进行开采。
步骤S54,如果选择学习方式2,则引领蜂通过精英学习对相应蜜源个体进行开采。
步骤S55,如果选择学习方式3,则引领蜂通过优值学习对相应蜜源个体进行开采。
步骤S56,输出开采后的新蜜源个体。
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式。对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数。
跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
Figure BDA0003387218050000181
其中,λ表示用于调整
Figure BDA0003387218050000182
的相对重要程度,η表示用于调整
Figure BDA0003387218050000183
的相对重要程度,γ用于调整
Figure BDA0003387218050000184
的相对重要程度,
Figure BDA0003387218050000185
表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,
Figure BDA0003387218050000186
Figure BDA0003387218050000187
Figure BDA0003387218050000188
表示Ei的正常月薪,
Figure BDA0003387218050000189
表示Ei的加班月薪。
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数。
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵。
步骤S64,对每个任务Tj,均依据wfij进行轮盘赌选择,选出一个员工
Figure BDA00033872180500001813
将该员工的序号保留,即indexj=uj,indexj表示任务Tj所选员工索引,uj表示被选员工序号。
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作。
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则
Figure BDA00033872180500001810
Figure BDA00033872180500001811
表示经搜索后的元素ypij的新值,
Figure BDA00033872180500001812
表示最优蜜源个体Ybest中的元素。否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
Figure BDA0003387218050000191
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
Figure BDA0003387218050000192
其中,N(0,1)是标准高斯分布,rand∈[0,1],round(.)表示四舍五入取整,
Figure BDA0003387218050000193
表示决策变量yij的取值上限,根据本文编码方式,决策变量yij的取值上限
Figure BDA0003387218050000194
min(.)是表示个体中的元素值不超过
Figure BDA0003387218050000195
以增加可行解数量。
步骤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两种算法的求解结果
Figure BDA0003387218050000201
Figure BDA0003387218050000211
图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的最大投入度
Figure FDA0003387218040000011
平均分为h份;
Figure FDA0003387218040000012
为第i个员工Ei能够对本项目投入的最大工作量占全日制工作量的百分比,yij表示,元素yij的含义是员工Ei将自己最大投入度
Figure FDA0003387218040000013
的yij/h奉献给任务Tj;通过每个任务Tj占据每个员工Ei最大贡献度
Figure FDA0003387218040000014
的比例yij/h,将个体矩阵转化为员工-任务的分配矩阵X=(xij)M×N,转化公式如下:
Figure FDA0003387218040000015
其中,
Figure FDA0003387218040000016
计算初始种群中每个个体的目标值:
f(X)=ωt·tdurc·cost
其中,f(X)表示个体的目标值,tdur为项目工期,cost表示项目成本,ωt、ωc表示预定义的参数,用于调整项目总工期tdur和项目成本cost的相对重要性;
步骤S5,引领蜂采用多元学习方法对所有蜜源个体进行开采:多元学习方法方法包括随机学习、精英学习和优值学习3种学习方法,为3种学习方法分别赋予选择概率,然后每一只引领蜂基于轮盘赌方法选择一种学习方式对相应蜜源进行开采;计算开采后的蜜源个体目标值,对开采前后的蜜源个体进行贪婪选择,留下目标值好的个体,并更新所有蜜源的未更新次数;
步骤S6,跟随蜂采用基于启发信息的变异机制对蜜源进行开采:每一只跟随蜂通过排序选择方法选择一个蜜源进行开采,并利用问题启发信息保留最优个体中契合度高的员工信息,同时根据当前蜜源个体的目标值优劣,选择不同的变异方式;对变异前后的蜜源进行贪婪选择,留下目标值好的个体,并更新开采后蜜源的未更新次数;
步骤S7,侦查蜂抛弃无用蜜源,随机产生新的蜜源替代旧蜜源:
判断是否存在未更新次数超出最大未更新次数limit的蜜源;如果有多个,则选择未更新次数最大的蜜源,如果仍有多个选择,则随机选择其中一个蜜源,将该蜜源对应的引领蜂转变为侦查蜂,重新随机生成新的蜜源替代旧蜜源;
步骤S8,终止准则判断:
若达到最大迭代次数,则终止迭代,输出目标值最优的个体,该个体即为项目中每位员工在每项任务中投入的工作量分配结果,否则,转至步骤S5。
2.根据权利要求1所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S1中所述项目工期表示完成项目所有任务所花费的时间开销,它定义为:
Figure FDA0003387218040000021
其中,tdur表示项目工期,
Figure FDA0003387218040000022
表示任务Tj的开始时间,
Figure FDA0003387218040000023
表示任务Tj的完成时间,且
Figure FDA0003387218040000024
N表示任务个数;
步骤S1中所述项目成本表示完成项目所有任务所花费的财力,它定义为:
Figure FDA0003387218040000025
Figure FDA0003387218040000026
条件1:
Figure FDA0003387218040000027
条件2:
Figure FDA0003387218040000028
其中,cost表示项目成本,t′表示项目处于开发阶段的某一个月,M表示员工个数,
Figure FDA0003387218040000031
表示在t′期间付给员工Ei的薪酬,
Figure FDA0003387218040000032
表示Ei的正常月薪,
Figure FDA0003387218040000033
表示Ei的加班月薪,T_active_set(t′)表示在t′期间正在进行开发的任务集合;xij表示员工Ei在任务Tj中投入的工作量占全日制工作量的百分比;
Figure FDA0003387218040000034
表示员工Ei能够对整个项目投入的最大工作量占全日制工作量的百分比,当
Figure FDA0003387218040000035
时,表示能够加班;
步骤S1所述员工已有技能熟练度定义如下:
员工Ei的技能熟练度集合:
Figure FDA0003387218040000036
其中,
Figure FDA0003387218040000037
表示员工Ei的技能熟练度集合,
Figure FDA0003387218040000038
表示在tl时刻Ei对第k个技能的熟练度,k=1,2,.....,S,S为项目需要的技能总数;
Figure FDA0003387218040000039
表示Ei没有第k个技能,
Figure FDA00033872180400000310
表示Ei完全掌握第k个技能,C表示技能熟练度的最大值;tl为任务优先级图中各个紧前任务的完成时刻,l=0,1,2,...;将tl时刻所有可操作的任务构成当前可执行任务集合,该集合的开始时刻用tl表示;
Figure FDA00033872180400000311
在不同时刻具有不同取值,由
Figure FDA00033872180400000312
求出员工Ei在tl时刻对任务Tj的熟练程度:
Figure FDA00033872180400000313
Figure FDA00033872180400000314
其中,
Figure FDA00033872180400000315
表示员工Ei在tl时刻对任务Tj的熟练程度,reqj表示任务Tj所需求的技能的集合;skilli表示员工Ei所掌握的已有技能的集合;
步骤S1所述任务技能约束指参与某项任务的所有员工的技能总集合必须满足该任务的所有技能需求,且新技能只需一人学习,即:
Figure FDA00033872180400000316
Figure FDA0003387218040000041
其中,reqj表示任务Tj所需求的技能的集合;skilli表示员工Ei所掌握的已有技能的集合;z表示新技能z,z(z∈{1,2,...,S})表示新技能z存在于项目所需技能集合中,z∈{1,2,...,S},S表示项目所需技能数,q表示由第q个员工学习新技能;
步骤S1所述员工不能超负荷工作的约束指在任意t时刻,每个员工对当前可执行任务集合的总投入度不得超过该员工的最大投入度,即
Figure FDA0003387218040000042
其中,
Figure FDA0003387218040000043
表示每个任务Tj占据每个员工Ei最大贡献度。
3.根据权利要求2所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S2中所述员工选择学习新技能的方法:
员工Ei的每个已有技能k∈skilli都具有一定的初始熟练度
Figure FDA0003387218040000044
由此定义员工Ei的技能k与新技能z(z∈{1,2,...,S})之间的相似熟练度
Figure FDA0003387218040000045
Figure FDA0003387218040000046
其中,t0表示项目开始时间,rkz为技能k与新技能z之间的关联程度,rkz∈[0,1],员工Ei学习新技能z的合适度
Figure FDA0003387218040000047
Figure FDA0003387218040000048
其中,
Figure FDA0003387218040000049
表示Eq的学习能力,
Figure FDA00033872180400000410
表示员工Ei已有技能与新技能z相似熟练度的最大值,
Figure FDA00033872180400000411
Figure FDA00033872180400000412
表示是员工Ei在t0时刻对项目所有任务的总熟练程度,
Figure FDA00033872180400000413
Figure FDA00033872180400000414
表示所有员工在t0时刻对项目所有任务的总熟练程度的最大值,
Figure FDA0003387218040000051
Figure FDA0003387218040000052
表示所有员工在t0时刻对项目所有任务的总熟练程度的最小值,
Figure FDA0003387218040000053
选择合适度
Figure FDA0003387218040000054
最大的员工q学习新技能z,即
Figure FDA0003387218040000055
4.根据权利要求3所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S2中所述新技能熟练度增长曲线函数如下:
Figure FDA0003387218040000056
其中,
Figure FDA0003387218040000057
表示员工Eq的新技能z的熟练度随时间t的增长函数,C表示技能熟练度的最大值,tanh(·)是双曲正切函数,
Figure FDA0003387218040000058
表示员工Eq对新技能z的熟练度增长率,
Figure FDA0003387218040000059
Figure FDA00033872180400000510
表示Eq的学习能力,该值越大表示Eq学习能力越强,SDz表示新技能z的难度,该值越大表示新技能z的难度越大,
已有技能熟练度增长曲线函数如下:
Figure FDA00033872180400000511
其中,
Figure FDA00033872180400000512
表示员工Ei的已有技能k的熟练度随时间t的增长函数,
Figure FDA00033872180400000513
表示员工Ei对技能k的初始熟练度,即
Figure FDA00033872180400000514
Figure FDA00033872180400000515
表示员工Ei对技能k的熟练度增长率,
Figure FDA00033872180400000516
5.根据权利要求4所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S2中所述的被选员工投入度自适应变化函数如下:
Figure FDA00033872180400000517
j∈T_active_set(t)
其中,dqj(t)表示t时刻经自适应调整后Eq对Tj的投入度,xqj表示项目调度方案中指定的员工Eq对任务Tj的投入度,T_active_set(t)表示t时刻可执行任务集合。
6.根据权利要求5所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S3中初始化启发式离散人工蜂群算法参数包括:设置启发式人工蜂群算法蜜源种群规模为SN、最大未更新次数limit、最大迭代次数G、随机学习选择概率Pr,设项目中有M名员工,N项任务,则变异概率Pm=1/(M·N),设迭代次数计数器t=0,每个蜜源的未更新次数counterp=0,p=1,2,...,SN。
7.根据权利要求6所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S5采用多元学习方法对所有蜜源个体进行开采的方法:
步骤S51,根据输入的随机学习概率Pr,计算精英学习的概率Pe和优值学习的概率Ps,其中,
Figure FDA0003387218040000061
步骤S52,每一只引领蜂通过轮盘赌方法选择学习方式的序号;
步骤S53,如果选择学习方式1,则引领蜂通过随机学习对相应蜜源个体进行开采;
步骤S54,如果选择学习方式2,则引领蜂通过精英学习对相应蜜源个体进行开采;
步骤S55,如果选择学习方式3,则引领蜂通过优值学习对相应蜜源个体进行开采;
步骤S56,输出开采后的新蜜源个体。
8.根据权利要求7所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:步骤S6中,跟随蜂采用基于启发信息的变异机制对蜜源进行开采的方法如下:
步骤S61,计算每个员工对每个任务的契合度wfij,计算公式如下:
Figure FDA0003387218040000062
其中,λ表示用于调整
Figure FDA0003387218040000063
的相对重要程度,η表示用于调整
Figure FDA0003387218040000064
的相对重要程度,γ用于调整
Figure FDA0003387218040000065
的相对重要程度,
Figure FDA0003387218040000066
表示在初始时刻员工Ei对任务Tj的熟练程度,i=1,2,...,Mj=1,2,...,N,
Figure FDA0003387218040000067
Figure FDA0003387218040000071
Figure FDA0003387218040000072
表示Ei的正常月薪,
Figure FDA0003387218040000073
表示Ei的加班月薪;
步骤S62,对所有蜜源个体根据目标值由小到大进行排序,并记录每个蜜源的排序序号sortp∈[1,SN],p=1,2,...,SN,SN表示蜜源数;
步骤S63,跟随蜂通过排序选择方法,选择需要进行变异的蜜源,假设选择了第p个蜜源,记为YP=Pop(p),Pop表示蜜源种群,YP表示第p个蜜源的个体矩阵;
步骤S64,对每个任务Tj,均依据wfij进行轮盘赌选择,选出一个员工
Figure FDA0003387218040000074
将该员工的序号保留,即indexj=uj,indexj表示任务Tj所选员工索引,uj表示被选员工序号;
步骤S65,对蜜源YP的每一个元素生成一个随机数randomij,若randomij≤Pm,Pm表示变异概率,则该元素进行变异操作;
步骤S66,对满足变异条件的元素ypij进行变异,若i==indexj,则
Figure FDA0003387218040000075
Figure FDA0003387218040000076
表示经搜索后的元素ypij的新值,
Figure FDA0003387218040000077
表示最优蜜源个体Ybest中的元素;否则,若sortp<SN/2,即蜜源YP的目标值排序处于蜜源种群的前50%,则通过下式进行变异:
Figure FDA0003387218040000078
条件4:ypij+N(0,1)·ypij≥0
否则,通过下式向最优蜜源个体靠拢:
Figure FDA0003387218040000079
其中,N(0,1)是标准高斯分布,rand∈[0,1],round(.)表示四舍五入取整,
Figure FDA00033872180400000710
表示决策变量yij的取值上限;min(.)是表示个体中的元素值不超过
Figure FDA00033872180400000711
步骤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。
10.根据权利要求9所述基于启发式离散人工蜂群算法的软件项目调度方法,其特征在于:所述解的粒度h为10,决策变量yij的取值上限
Figure FDA0003387218040000081
CN202111453983.0A 2021-12-01 2021-12-01 一种基于启发式离散人工蜂群算法的软件项目调度方法 Pending CN114298376A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349126A (zh) * 2023-12-05 2024-01-05 国网辽宁省电力有限公司大连供电公司 一种基于大数据的实时信息网络日志分析方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
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