发布信息

基于深度强化学习的大规模敏捷软件项目调度方法 专利技术说明

作者:admin      2023-06-29 18:35:34     271



计算;推算;计数设备的制造及其应用技术1.本发明属于敏捷软件项目开发调度优化和深度强化学习技术领域,尤其涉及基于深度强化学习的大规模敏捷软件项目调度方法。背景技术:2.世界正在慢慢步入后疫情时代,全球经济增速放缓,软件行业也面临着巨大的挑战。全球软件行业正迎来从传统软件模式走向saas时代、走向云时代的挑战,主要体现在以下几个方面:一是交付方式从传统单机软件转为web交付,构建强大稳定的软硬件交付体系和运维体系;二是付费模式从一次性付费转为持续付费,快速切入客户生产经营过程中的核心痛点,培养用户持续付费的意愿;三是应用场景从单一领域转为全领域,覆盖整个产业链的需求,实现协同创新及生态合作。不同于传统的“瀑布式”开发方法,敏捷开发以用户的需求进化为核心,把开发过程划分为若干个冲刺(迭代),每个冲刺结束时交付一个软件版本供客户体验,然后根据客户的满意度不断改进,直至交付最终软件版本。敏捷开发因为其迭代开发和持续交付等特点,非常贴合软件行业转型挑战对于交付方式和付费模式的要求。在应用场景方面,大规模敏捷开发项目贯穿多个职能部门,为软件企业从单一领域向全领域的转变提供了突破点。因此,对于大规模敏捷软件开发的研究非常必要。3.敏捷软件项目调度是敏捷软件开发的重要环节,对于提高敏捷软件项目的综合效益和减少项目成本有着至关重要的作用。优化算法是优化调度方案的求解工具,传统精确算法基于严格的数学手段,建立问题的数学模型,并利用数学方法获得全局最优的解。但由于引入严格的数学方法,使得精确算法在解决较大规模问题时难以确保在有限时间内得到其最优解。目前,大多数学者都采用元启发式算法来进行求解。元启发式是一个迭代生成过程,通过对不同概念的智能组合实现对搜索空间的探索和开发。在这个过程中,学习策略被用来获取和掌握信息,以有效地发现近似最优解。元启发式算法通常不需借助于某种问题的特有条件,从而能够运用于更广泛的方面。然而,元启发式算法不能保证为全局最优解,算法性能取决于具体问题或设计者经验。强化学习将调度问题建模成马尔可夫决策过程,通过学习型智能体与调度环境不断交互产生经验,从经验中学习最优策略(即调度方案)来获得最大回报。强化学习不需要依赖于特定数据,根据交互产生的经验评估策略价值,并通过执行最大化策略价值的动作来改进策略。深度强化学习算法进一步结合了深度学习的高维特征提取能力,节约了大量的计算资源和存储空间,对于各类问题的求解有很强的适应能力。4.目前,现有敏捷软件项目调度方法无法应对动态变化的用户需求,导致所开发软件交付失败、市场黏合度低、收益不佳,因此,提出了一种基于深度强化学习的大规模敏捷软件项目调度方法。技术实现要素:5.针对现有技术的不足,本发明提供了基于深度强化学习的大规模敏捷软件项目调度方法,解决了上述问题。6.为实现以上目的,本发明通过以下技术方案予以实现:基于深度强化学习的大规模敏捷软件项目调度方法,包括以下步骤:7.s1:初始化大规模敏捷软件项目调度环境中敏捷软件项目和人力资源的状态信息;8.s2:建立基于深度强化学习的大规模敏捷软件项目调度决策模型,产生调度方案进行调度;9.s3:采集调度过程中产生的轨迹信息,存放到经验回放池中并更新所有轨迹优先级;10.s4:当经验回放池中的轨迹数量达到要求时,按优先级批量采样轨迹对调度决策模型参数进行训练;11.s5:利用训练好的调度决策模型生成更优的调度方案进行调度;12.s6:若所开发用户故事总价值还未稳定,则在更优调度方案的调度过程中继续采集优先级更高的轨迹替换原先经验池中优先级低的轨迹,增强调度决策模型的参数训练效果;若所开发用户故事总价值稳定,则输出最优调度方案。13.在上述技术方案的基础上,本发明还提供以下可选技术方案:14.进一步的技术方案:所述大规模敏捷软件项目p要求在d个冲刺内完成(l=1,2,...,d),每个冲刺进行敏捷软件项目和人力资源的调度;15.根据用户的需求,敏捷软件项目被描述为n个用户故事usi(i=1,2,...,n),构成待开发用户故事集合,且用户故事包括的属性值有故事点、价值点和工作量;16.其中,所述用户故事usi的故事点spi是对用户故事大小和复杂度的无单位估算值,用户故事usi的价值点vpi是对用户故事市场收益的无单位估算值,用户故事usi的工作量effi表示完成用户故事需要花费的时长,单位是小时;17.其中,一个所述故事点约等于8小时的工作量;18.其中,用户故事usi能够分解成tni个具体的任务tij(j=1,2,...,tni),完成这些任务总共需要用到s项技能;19.用户故事usi中任务tij包括的属性有完成任务所需技能tskij和所需时长thij;20.敏捷开发公司共有r个团队teamr(r=1,2,...,r),每个团队中有mr名员工erk(k=1,2,...,mr),员工erk掌握的几项技能组成技能集合eskrk,由于每个冲刺动态事件引起员工工作时长变化,员工在每个冲刺的工作时长也设置为变化值。21.进一步的技术方案:所述大规模敏捷软件项目调度包括三个耦合的子问题:22.故事选择,从待开发故事列表中选择故事进入冲刺中;23.故事分配,将进入冲刺的用户故事分配给各个团队;以及24.任务分配,将每个团队需要完成的故事分解成任务,并按照所需技能和时间分配给团队中的员工。25.进一步的技术方案:所述子问题的调度由三个决策变量来表示:26.故事选择27.故事分配28.任务分配29.进一步的技术方案:所述s2中生成的调度方案满足以下条件:30.第l个冲刺中选择用户故事usi的故事点数spi之和不超过冲刺速度svl;31.其中32.冲刺速度即所有团队的团队速度之和;33.第l个冲刺的团队速度为各团队前两个冲刺完成故事点总数的平均值,表示为34.由于第一个冲刺未完成任何用户故事,所以将该团队所有员工工作时长之和,按1故事点≈8小时估算成初始团队速度,计算方式为35.第二个冲刺的冲刺速度为第一个冲刺完成的完整用户故事点数之和,计算方式为式中,out1表示第一个冲刺完成的完整用户故事集合;36.第l个冲刺中从已选择故事中分配给团队teamr的故事点数之和不超过该团队的团队速度37.第l个冲刺完成用户故事usi中任务tij所需要的技能tskij必须包含在所分配团队员工erk掌握的技能集合eskrk之中;38.第l个冲刺用户故事usi的任务tij只能由一名团队员工erk来完成;39.第l个冲刺中分配给团队员工erk的故事任务时长thij之和不超过其工作时长40.进一步的技术方案:所述基于深度强化学习的大规模敏捷软件项目调度决策模型的建立过程为:41.深度强化学习建模为一个由四元组《s,a,r,γ》表示的马尔可夫决策过程;42.其中,43.s表示有限的状态集合44.式中,表示第l个冲刺结束后所分配完整用户故事的完成率,表示第l个冲刺结束后所分配用户故事工作量的完成率,表示第l个冲刺结束后所有团队完整用户完成率的平均值,表示第l个冲刺结束后所有团队完整用户故事完成率的标准差,表示第l个冲刺结束后所有团队工作量完成率的平均值,表示第l个冲刺结束后所有团队工作量完成率的标准差,表示第l个冲刺结束后所有团队时间利用率的平均值,表示第l个冲刺结束后所有团队时间利用率的标准差,表示第l个冲刺结束后所有团队员工时间利用率的平均值,表示第l个冲刺结束后所有团队员工时间利用率的标准差;45.a表示有限的动作集合46.式中,针对大规模敏捷软件项目调度的三个决策变量设计了7个通用的调度规则,对三个决策变量的7个通用调度规则进行组合,得到了12个复合调度规则构成动作集合;47.r表示执行动作后的奖励函数是智能体在当前冲刺状态下执行动作规则后的即时奖励,是智能体进行学习改善策略的重要指引信号,奖励函数表示为第l个冲刺结束后完成的完整用户故事总价值;48.γ是衰减因子,取值在[0,1]之间,表示后续决策对当前状态执行动作的重要程度;[0049]智能体在第l个冲刺结束后的状态sl下,选择动作al;[0050]调度环境中的用户故事和任务被分配,员工的剩余工作时长减少,完成的完整用户故事增加;[0051]第l+1个冲刺结束后,环境给予智能体奖励rl+1,环境状态会更新为sl+1,表示为[0052]进一步的技术方案:所述s3中所述轨迹信息为一个五元组《sl,al,rl,sl+1,done》;其中,done为判断调度是否终止的标记,待开发用户故事集合为空时,调度结束,done=true;否则,done=false。[0053]进一步的技术方案:所述s4中调度决策模型采用基于复合调度规则的优先经验回放双重深度q网络算法进行训练,包括当前q网络、目标q网络和经验回放池。[0054]进一步的技术方案:所述s4的具体步骤包括:[0055]s401、将步骤s3中收集到的轨迹信息放入经验回放池中,计算轨迹时序差分误差,并更新经验回放池中所有轨迹的优先级;[0056]s402、当池中的轨迹数量达到限值时,按最小采样批次采样池中的轨迹供给目标q网络进行q值预测;[0057]s403、目标q网络会将预测的q值传递给当前q网络进行梯度下降训练,神经网络参数训练好的当前q网络会定期将参数复制给目标q网络,提升目标q网络的预测能力;[0058]s404、当前q网络会根据每个冲刺中敏捷软件项目和人力资源的状态特征,选取q值最大的动作规则执行。[0059]有益效果[0060]本发明提供了基于深度强化学习的大规模敏捷软件项目调度方法,与现有技术相比具备以下有益效果:[0061]1、能够以用户的需求进化为核心,把开发过程划分为若干个冲刺(迭代),每个冲刺结束时交付一个软件版本供客户体验,然后根据客户的满意度不断改进,直至交付最终软件版本;同时,本发明能够根据每个冲刺获得的项目开发价值选取最优调度分配方案,使得能够提高团队员工工作效率并保证资源调度的合理性和可靠性,从而能够提升大规模敏捷开发在敏捷软件项目调度上的运行效果;[0062]2、本发明采用基于复合调度规则的深度强化学习优先经验回放双重深度q网络算法与马尔可夫决策过程生成调度方案,能够有效适应用户需求的动态变化,进一步提升敏捷软件项目调度的可靠性和合理性;[0063]3、最后,本发明通过完整用户故事总价值选取最优调度方案的方式,能够保证最优调度方案的总体收益和团队员工的工作效率,从而进一步提升大规模敏捷开发在敏捷软件项目调度上的运行效果。附图说明[0064]图1为本发明基于深度强化学习的大规模敏捷软件项目调度方法流程图。[0065]图2为本发明深度强化学习算法求解框架。[0066]图3为本发明深度强化学习平均累计奖励(所开发用户故事总价值)的收敛情况示意图。具体实施方式[0067]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。[0068]以下结合具体实施例对本发明的具体实现进行详细描述。[0069]请参阅图1~3,一种基于深度强化学习的大规模敏捷软件项目调度方法,根据每个冲刺敏捷软件项目和人力资源的状态信息,通过深度强化学习算法对大规模敏捷软件项目进行调度,具体包括以下步骤:[0070]s1:初始化大规模敏捷软件项目调度环境中敏捷软件项目和人力资源的状态信息;[0071]s2:建立基于深度强化学习的大规模敏捷软件项目调度决策模型,产生调度方案进行调度;[0072]s3:采集调度过程中产生的轨迹信息,存放到经验回放池中并更新所有轨迹优先级;[0073]s4:当经验回放池中的轨迹数量达到要求时,按优先级批量采样轨迹对调度决策模型参数进行训练;[0074]s5:利用训练好的调度决策模型生成更优的调度方案进行调度。[0075]s6:若所开发用户故事总价值还未稳定,则在更优调度方案的调度过程中继续采集优先级更高的轨迹替换原先经验池中优先级低的轨迹,增强调度决策模型的参数训练效果;若所开发用户故事总价值稳定,则输出最优调度方案。[0076]具体地,根据实际大规模敏捷软件开发过程,用户故事是从客户的视角对功能的简要描述。根据功能类型的不同,用户故事分为3类:必需故事(基础功能)、线性增加故事(具备持续收益的功能)以及兴奋点故事(具备爆发性收益的功能)。软件开发过程被划分为若干个冲刺(迭代,一般为2周左右),每个冲刺结束时交付一个由若干用户故事组成的软件版本供客户体验,然后根据客户的满意度不断改进。用户故事根据软件开发中必不可少的开发技能(例如需求分析、概要设计、美工、编程和自动化测试等)分解成更加具体详细的任务,并由对应该项技能的团队员工承诺完成任务的时长。[0077]具体地,所述大规模敏捷软件项目p要求在d个冲刺内完成(l=1,2,...,d),每个冲刺进行敏捷软件项目和人力资源的调度。根据用户的需求,敏捷软件项目被描述为n个用户故事usi(i=1,2,...,n),构成待开发用户故事集合。用户故事的有3个属性值:故事点、价值点和工作量。用户故事usi的故事点spi是对用户故事大小和复杂度的无单位估算值;用户故事usi的价值点vpi是对用户故事市场收益的无单位估算值;用户故事usi的工作量effi表示完成用户故事需要花费的时长,单位是小时。其中,一个故事点约等于8小时的工作量。用户故事usi可以分解成tni个具体地任务tij(j=1,2,...,tni),完成这些任务总共需要用到s项技能。用户故事usi中任务tij有两个属性:完成任务所需技能tskij和所需时长thij。敏捷开发公司共有r个团队teamr(r=1,2,...,r),每个团队中有mr名员工erk(k=1,2,...,mr),员工erk掌握的几项技能组成技能集合eskrk。[0078]具体地,考虑到每个冲刺动态变化事件引起员工工作时长变化,员工在每个冲刺的工作时长也设置为变化值,所述动态变化事件包括缺勤/加班/休假等。[0079]具体地,考虑每个冲刺客户需求的变化,根据冲刺速度和已结束的冲刺数量估算出项目的预计完成冲刺数。若预计完成冲刺数不超过d,则从新增用户故事集合中随机选取用户故事优先开发;反之,则删除单位故事点价值最低的用户故事。在新增和删除用户故事的过程中,预计完成冲刺数始终不得超过目标冲刺数d,即由于每个冲刺用户需求的变化,用户故事会发生新增或删除来响应这种变化。[0080]具体地,所述大规模敏捷软件项目调度包括三个耦合的子问题:[0081]故事选择,从待开发故事列表中选择故事进入冲刺中;[0082]故事分配,将进入冲刺的用户故事分配给各个团队;以及[0083]任务分配,将每个团队需要完成的故事分解成任务,并按照所需技能和时间分配给团队中的员工。[0084]具体地,所述子问题的调度由三个决策变量来表示:[0085]故事选择[0086]故事分配[0087]任务分配[0088]具体地,所述s2中生成的调度方案满足以下条件:[0089](1)第l个冲刺中选择用户故事usi的故事点数spi之和不超过冲刺速度svl;其中,冲刺速度即所有团队的团队速度之和。第l个冲刺的团队速度为各团队前两个冲刺完成故事点总数的平均值,表示为由于第一个冲刺未完成任何用户故事,所以将该团队所有员工工作时长之和,按1故事点≈8小时估算成初始团队速度,计算方式为第二个冲刺的冲刺速度为第一个冲刺完成的完整用户故事点数之和,计算方式为式中,out1表示第一个冲刺完成的完整用户故事集合;[0090](2)第l个冲刺中从已选择故事中分配给团队teamr的故事点数之和不超过该团队的团队速度[0091](3)第l个冲刺完成用户故事usi中任务tij所需要的技能tskij必须包含在所分配团队员工erk掌握的技能集合eskrk之中;[0092](4)第l个冲刺用户故事usi的任务tij只能由一名团队员工erk来完成;[0093](5)第l个冲刺中分配给团队员工erk的故事任务时长thij之和不超过其工作时长[0094]具体地,所述基于深度强化学习的大规模敏捷软件项目调度决策模型的建立过程为:通过马尔可夫决策过程表示大规模敏捷软件项目调度的过程,马尔可夫决策过程由一个由四元组《s,a,r,γ》表示的;[0095]具体地,s表示有限的状态集合式中,表示第l个冲刺结束后所分配完整用户故事的完成率;表示第l个冲刺结束后所分配用户故事工作量的完成率;表示第l个冲刺结束后所有团队完整用户完成率的平均值;表示第l个冲刺结束后所有团队完整用户故事完成率的标准差;表示第l个冲刺结束后所有团队工作量完成率的平均值;表示第l个冲刺结束后所有团队工作量完成率的标准差;表示第l个冲刺结束后所有团队时间利用率的平均值;表示第l个冲刺结束后所有团队时间利用率的标准差;表示第l个冲刺结束后所有团队员工时间利用率的平均值;表示第l个冲刺结束后所有团队员工时间利用率的标准差;[0096]具体地,a表示有限的动作集合式中,针对大规模敏捷软件项目调度的三个决策变量设计了三个通用的调度规则,如表1所示;对三个决策变量的7个通用调度规则进行组合,得到了12个复合调度规则构成动作集合。表示复合调度规则1:ssl+stl+tel;表示复合调度规则2:ssl+stl+tes;表示复合调度规则3:ssl+stl+ter;表示复合调度规则4:ssl+sts+tel;表示复合调度规则5:ssl+sts+tes;表示复合调度规则6:ssl+sts+ter;表示复合调度规则7:ssa+stl+tel;表示复合调度规则8:ssa+stl+tes;表示复合调度规则9:ssa+stl+ter;表示复合调度规则10:ssa+sts+tel;复合调度规则11:ssa+sts+tes;表示复合调度规则12:ssa+sts+ter;[0097]表1决策变量的通用规则表[0098][0099][0100]具体地,所述奖励函数是智能体在当前冲刺状态下执行动作规则后的即时奖励,是智能体进行学习改善策略的重要指引信号。奖励函数表示为第l个冲刺结束后完成的完整用户故事总价值;[0101]具体地,γ是衰减因子,取值在[0,1]之间,表示后续决策对当前状态执行动作的重要程度。[0102]具体地,智能体在第l个冲刺结束后的状态sl下,选择执行动作al(根据算法中的当前q网络进行选择)。调度环境中的用户故事和任务被分配,员工的剩余工作时长减少,完成的完整用户故事增加。第l+1个冲刺结束后,环境给予智能体奖励rl+1(第l+1个冲刺完成完整用户故事的价值),环境状态会更新为sl+1;表示为[0103]具体地,所述轨迹信息为一个五元组《sl,al,rl,sl+1,done》;其中,done为判断调度是否终止的标记。待开发用户故事集合为空时,调度结束,done=true;否则,done=false。[0104]具体地,在步骤s4中,调度决策模型采用基于复合调度规则的优先经验回放双重深度q网络算法,包括当前q网络、目标q网络和经验回放池,且其具体工作步骤为:[0105]首先,将步骤s3中收集到的轨迹信息放入经验回放池中,计算轨迹时序差分误差,并更新经验回放池中所有轨迹的优先级;[0106]其次,当池中的轨迹数量达到限值时,按最小采样批次采样池中的轨迹供给目标q网络进行q值预测;[0107]再次,目标q网络会将预测的q值传递给当前q网络进行梯度下降训练,神经网络参数训练好的当前q网络会定期将参数复制给目标q网络,提升目标q网络的预测能力;[0108]最后,当前q网络会根据每个冲刺中敏捷软件项目和人力资源的状态特征,选取q值最大的动作规则执行。[0109]具体地,本发明采用的深度强化学习算法求解框架如图2所示,在第一个冲刺开始前,会初始化大规模敏捷软件项目调度和人力资源的状态信息,并计算当前状态特征传递给智能体(项目经理)。智能体以概率ε随机选取动作(复合调度规则),以概率1-ε使用当前q网络按最大q值进行动作选择。执行动作后,环境状态发生改变,故事任务被选择分配,团队员工的剩余工作时间减少。冲刺结束,计算环境新状态特征和奖励值,判断调度是否结束。在每个冲刺过程中,当前/下一状态特征、复合调度规则、奖励(完成故事价值)以及调度是否结束的判断合成一条轨迹,存放到回放池中。[0110]具体地,训练好的当前q网络会根据每个冲刺中敏捷软件项目和人力资源的状态特征,选取q值最大的动作规则执行。[0111]验证例[0112]设置调度环境初始信息,若总冲刺数为16,每个冲刺时间为2周,每周工作5天,每天8小时,用户故事数量为200,团队数量为5,团队team1,team2,team3,team4,team5的员工数量分别为6、8、7、5、5,用户故事的故事点和价值点在{2,3,5,8,13}中,用户故事分解成的任务时长在[4,8]之间,完成任务所需的技能和员工拥有的技能由{1,2,3,4,5}中的一项表示。新增用户故事只考虑线性增加故事和兴奋点故事,故事点的选取和原有故事范围相同,价值点在{5,8,13}中选择。考虑到每个冲刺中员工工作时长可能由于动态变化事件(缺勤/加班/休假等)内外部因素发生变化,则员工在每个冲刺的工作时长在[80,100]之间变化。考虑每个冲刺客户需求的变化,根据冲刺速度和已结束的冲刺数量估算出项目的预计完成冲刺数。若预计完成冲刺数不超过16,则从新增用户故事集合中随机选取用户故事优先开发;反之,则删除单位故事点价值最低的用户故事。在新增和删除用户故事的过程中,预计完成冲刺数始终不得超过目标冲刺数16。[0113]图3是本发明实施例的深度强化学习算法平均累计奖励(所开发用户故事总价值)的收敛情况示意图。[0114]在本发明提出的一种基于深度强化学习的大规模敏捷软件项目调度方法,能够有效适应用户需求的动态变化,使得开发完成的软件能够完美切合用户的期望,提升与用户之间的紧密联系。同时,生成的最优调度方案不仅能有效提高员工的工作效率,而且进一步提升大规模敏捷开发在敏捷软件项目调度上的运行效果。[0115]现有方法无法应对动态变化的用户需求,导致所开发软件交付失败、市场粘合度低、收益不佳等问题。本方法针对这一点,根据实际敏捷开发流程,建立大规模敏捷软件项目调度环境。本发明采用马尔可夫决策过程,对大规模敏捷软件项目调度环境的状态特征、动作规则和奖励函数进行了设计。此外,本发明基于复合调度规则的优先经验回放双重深度q网络算法对调度决策模型进行参数优化。同时,以完成完整用户故事的总价值为奖励函数,选取最优的调度方案,能够保证在软件交付期限内适应客户的动态需求变化并提升所开发软件的市场价值。[0116]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部