一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

开源社区issue解决人员分配基线确定方法及系统与流程

2022-02-22 04:40:38 来源:中国专利 TAG:


1.本发明涉及协同与社会计算技术领域中的开源软件生态系统研究,具体地,涉及一种基于强化学习的开源社区issue解决人员分配基线确定办法,尤其涉及一种开源社区issue解决人员分配基线确定方法及系统。


背景技术:

2.开源软件生态系统是软件开发者在同一生态环境下共同演化的一个社会-技术复杂系统,是软件工程领域的主要结构和功能单位之一。开源软件开发的主要组织形式依托于版本控制服务和代码托管平台,如github、gitee、gitlab等;在开源社区中,开发者一般通过issue(可译作任务或工单)对开发工作进行讨论和跟踪,共同参与issue解决是开源社区的重要合作方式。
3.公开号为cn111258624a的发明专利,公开了一种开源软件开发中issue解决时间的预测方法及系统,包括:步骤1:爬取开源软件平台上的不同项目中的issue数据组;步骤2:清洗整理原始数据并制作事件日志;步骤3:挖掘issue解决过程的两阶段中的频繁模式;步骤4:利用issue动态和静态特征构建issue解决模式动态预测模型,基于模式信息构建动态issue解决时间预测模型。
4.在开源软件生态系统运作的过程中,issue的快速解决对开源社区至关重要。开源社区的运营人员和研究者设计了若干方法推进issue合作流程的规范化和高效化,以此提高issue的响应和解决速度。其中,为开源社区中新提出的issue分配合适数量和身份的负责人/解决人员(assignee),被证实能有效提高issue的解决效率。在过去的实践中,负责人的分配一般只能依靠社区开发人员的经验,但此种方法对于规模庞大、参与人数众多的开源社区适用性不强,很难综合考虑社区人力资源的负载与具体issue的标签、优先级等信息确定合适的人选。


技术实现要素:

5.针对现有技术中的缺陷,本发明提供一种开源社区issue解决人员分配基线确定方法及系统。
6.根据本发明提供的一种开源社区issue解决人员分配基线确定方法及系统,所述方案如下:
7.第一方面,提供了一种开源社区issue解决人员分配基线确定方法,所述方法包括:
8.特征筛选和提取步骤:根据目标开源社区的属性,筛选issue特征,确定社区人力资源情况,建立仿真模型;
9.开源社区仿真步骤:根据所述目标开源社区的历史数据和仿真模型,训练强化学习模型;
10.强化学习模型部署步骤:将目标开源社区的待分配issue和必要社区状态信息输
入训练好的强化学习模型,得到issue解决人员分配基线。
11.优选的,所述特征筛选和提取步骤包括:
12.步骤s1.1:对issue的常见特征进行筛选;
13.步骤s1.2:量化描述社区的人力资源情况;
14.步骤s1.3:根据社区特征用蒙特卡洛方法生成预设数量的新issue作为训练数据;
15.步骤s1.4:建立开源软件生态系统的仿真模型,以强化学习模型训练。
16.优选的,所述步骤s1.1中issue的常见特征包括:优先级、标签、里程碑、分支、开始和截止日期,以及相关pr。
17.优选的,所述开源社区仿真步骤包括:
18.步骤s2.1:根据特征筛选和提取步骤中确定的issue相关特征,选择合适的强化学习模型;
19.步骤s2.2:根据目标开源社区的历史数据和所选强化学习模型调整仿真系统的参数;
20.步骤s2.3:通过仿真系统对强化学习模型进行训练。
21.优选的,所述强化学习模型部署步骤包括:根据特征筛选和提取步骤中确定的issue相关特征和人力资源量化信息,确定已完成训练的强化学习模型所需输入信息,包括待分配issue和必要社区状态信息;
22.将所述待分配issue和必要社区状态信息输入强化学习模型,得到issue解决人员分配的基线。
23.第二方面,提供了一种开源社区issue解决人员分配基线确定系统,所述系统包括:
24.特征筛选和提取模块:根据目标开源社区的属性,筛选issue特征,确定社区人力资源情况,建立仿真模型;
25.开源社区仿真模块:根据所述目标开源社区的历史数据和仿真模型,训练强化学习模型;
26.强化学习模型部署模块:将目标开源社区的待分配issue和必要社区状态信息输入训练好的强化学习模型,得到issue解决人员分配基线。
27.优选的,所述特征筛选和提取模块包括:
28.模块m1.1:对issue的常见特征进行筛选;
29.模块m1.2:量化描述社区的人力资源情况;
30.模块m1.3:根据社区特征用蒙特卡洛方法生成预设数量的新issue作为训练数据;
31.模块m1.4:建立开源软件生态系统的仿真模型,以强化学习模型训练。
32.优选的,所述模块m1.1中issue的常见特征包括:优先级、标签、里程碑、分支、开始和截止日期,以及相关pr。
33.优选的,所述开源社区仿真模块包括:
34.模块m2.1:根据特征筛选和提取模块中确定的issue相关特征,选择合适的强化学习模型;
35.模块m2.2:根据目标开源社区的历史数据和所选强化学习模型调整仿真系统的参数;
36.模块m2.3:通过仿真系统对强化学习模型进行训练。
37.优选的,所述强化学习模型部署模块包括:根据特征筛选和提取模块中确定的issue相关特征和人力资源量化信息,确定已完成训练的强化学习模型所需输入信息,包括待分配issue和必要社区状态信息;
38.将所述待分配issue和必要社区状态信息输入强化学习模型,得到issue解决人员分配的基线。
39.与现有技术相比,本发明具有如下的有益效果:
40.1、本发明可以根据开源软件生态系统中社区及开发者的状态和issue的具体信息确定issue负责人分配的基线,帮助开发者推进开源社区中issue的解决;
41.2、相比于传统的经验方法,本发明中issue解决人员分配基线的计算结果由社区的历史数据和实时状态信息共同确定,通过这种方法能够有效提高issue负责人分配的准确度;
42.3、本发明运用强化学习模型和社区状态仿真,可以充分发掘目标开源社区的历史演进和深层次特征,使得issue解决人员分配基线的确定更有迹可循,在实际应用中可根据目标社区的真实数据确定具有高参考价值的issue解决人员分配基线。
附图说明
43.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
44.图1为本发明的整体框架示意图;
45.图2为本发明的强化学习模型示意图。
具体实施方式
46.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
47.本发明实施例提供了一种开源社区issue解决人员分配基线确定系统,参照图1所示,根据目标开源社区的相关信息和用户需求进行特征的筛选和提取,并根据目标开源社区的历史数据建立仿真系统,以此训练强化学习模型。根据本发明提供的基于强化学习的开源社区issue解决人员分配基线确定办法搭建的issue负责人基线推荐系统包含三个模块:开源生态系统特征筛选和提取模块、开源社区仿真模块以及强化学习模型部署模块。
48.特征筛选和提取模块:根据待研究开源软件生态系统的issue数据信息和人力资源信息,抽象提取出与数据源相独立的可供研究一般特征,如优先级、标签等。根据用户需求和模型要求,筛选出合适的issue特征、社区状态特征等作为仿真模型构建和训练数据。
49.开源社区仿真模块:通过对目标开源社区建模,基于社区历史数据搭建仿真系统。仿真系统能将强化学习模型提供的负责人分配动作信息作为输入,并根据动作信息改变仿真系统中开源社区的状态,将社区宏观和issue具体状态输出回强化学习模型。仿真系统可以通过蒙特卡洛方法生成新的issue信息,以此实现实时的负责人分配基线确定功能。
50.强化学习模型部署模块:根据待研究社区的相关特征,选择合适的强化学习模型;或部署多个强化学习模型比较效果。强化学习模型通过与仿真系统进行交互,基于社区历史数据学习待研究社区的深层次特征。训练完成的强化学习模块可以实现确定issue解决人员分配基线的功能。
51.本发明还提供了一种开源社区issue解决人员分配基线确定方法,该方法的具体步骤包括:
52.特征筛选和提取步骤:根据目标开源社区的属性,筛选issue特征,确定社区人力资源情况,建立仿真模型。
53.具体地,对issue的特征进行筛选,issue的常见特征包括但不限于:优先级、标签、里程碑、分支、开始和截止日期、相关pr等。
54.量化描述社区的人力资源情况;
55.根据社区特征用蒙特卡洛方法生成一定数量的新issue作为训练数据;
56.建立开源软件生态系统的仿真模型,仿真模型可接受负责人分配作为动作并根据动作改变仿真系统中开源社区的状态,以用于强化学习模型训练。
57.不同的开源社区具有相似但形式上存在区别的数据信息,同一种特征的表现形式也存在差异,本步骤首先需要将开源社区的原始数据抽象化,并提取出通用的一般性特征,以此作为后续数据的筛选对象。
58.开源社区仿真步骤:包括仿真模型的设计及仿真系统搭建,根据目标开源社区的历史数据和仿真模型,训练强化学习模型,如q-learning、dqn、ddpg等。
59.仿真模块的主要功能是为强化学习模块的训练提供数据基础,仿真模型的主要建模对象为开发者即issue负责人候选者和待分配的issue。仿真系统将强化学习过程产生的负责人分配动作(action)作为输入,以此改变仿真系统中开源社区的状态,状态变化主要指开发者状态和待分配issue状态的变化,同时也包括社区宏观状态的变化,最后将上述状态的变化作为输出,以训练强化学习模型。
60.在时间节点n,仿真环境记录状态sn的主要内容包括:issue的状态信息,issue的负责人分配(distribution)情况dn,目前社区issue平均解决时间tn。
61.状态sn可以接受动作an作为输入,根据所选强化学习算法动作空间的不同,动作an可以存在不同的形式。以根据不同issue优先级确定负责人分配基线为例,设社区中存在k种不同的issue优先级,则对于连续动作空间的强化学习算法,an即为一个长度为k的一维向量。
62.模型由状态sn和动作an可以计算出状态s
n 1
及回报rn两个输出。状态s
n 1
的更新方法为:首先通过issue的特征概率分布i
n 1
,生成一定数量的新issue,并为其分配对应特征;再根据动作an的输入,调整issue负责人的分配情况为d
n 1
;回报rn的计算方法:根据上述生成的每个issue负责人具体人数和相关特征,为每个issue生成解决时间,最终计算issue平均解决时间t
n 1
,即rn=t
n-t
n 1

63.仿真环境更新采用蒙特卡洛方法随机处理,主要步骤的方法如下:通过issue的优先级概率分布i
n 1
,生成一定数量的新issue;进行回测策略验证时,可以用真实的issue数据代替;对未来的仿真,根据历史issue分布随机生成。根据动作an的输入,调整issue负责人的分配情况d
n 1
;对于生成的issue,结合issue分配基线动作an,随机生成每个issue的负
责人数量,考虑到总人数和总issue数,根据issue特征和基线去分配人数,通过负载均衡的方法将每个issue具体分配负责人,负责人的负载和总数均设置为可以更新的超参数,也可以设置为动态负载。
64.强化学习模型部署步骤:将目标开源社区的待分配issue和必要社区状态信息输入训练好的强化学习模型,得到issue解决人员分配基线。
65.强化学习模型的选取可根据系统部署的硬件环境和目标开源社区数据特征共同决定,在本实施例中,以actor-critic深度强化学习方法为例简要介绍强化学习的模型结构,模型结构参照图2所示。
66.本发明实施例提供了一种开源社区issue解决人员分配基线确定方法及系统,基于强化学习方法,能够根据开源社区的开发者状态和issue的具体信息进行学习,从而确定合适的issue解决人员分配基线。issue解决人员分配基线即根据社区状态和issue特征确定的负责人分配数量的基线,社区的管理运营人员可根据基线推荐的负责人数量分配issue的具体参与者,以此提高开源软件生态系统的运行效率。
67.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
68.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献