CN111047272B - 一种用于多语言协同开发的项目调度方法及装置 - Google Patents

一种用于多语言协同开发的项目调度方法及装置 Download PDF

Info

Publication number
CN111047272B
CN111047272B CN201911081485.0A CN201911081485A CN111047272B CN 111047272 B CN111047272 B CN 111047272B CN 201911081485 A CN201911081485 A CN 201911081485A CN 111047272 B CN111047272 B CN 111047272B
Authority
CN
China
Prior art keywords
task
development language
project
population
development
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.)
Active
Application number
CN201911081485.0A
Other languages
English (en)
Other versions
CN111047272A (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.)
Jiangsu Suning Cloud Computing Co ltd
SuningCom Co ltd
Original Assignee
Suning Cloud Computing Co Ltd
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 Suning Cloud Computing Co Ltd filed Critical Suning Cloud Computing Co Ltd
Priority to CN201911081485.0A priority Critical patent/CN111047272B/zh
Publication of CN111047272A publication Critical patent/CN111047272A/zh
Priority to CA3162759A priority patent/CA3162759C/en
Priority to PCT/CN2020/105932 priority patent/WO2021088436A1/zh
Application granted granted Critical
Publication of CN111047272B publication Critical patent/CN111047272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Economics (AREA)
  • Evolutionary Biology (AREA)
  • Artificial Intelligence (AREA)
  • Genetics & Genomics (AREA)
  • Physiology (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例公开了一种用于多语言协同开发的项目调度方法及装置,涉及互联网技术领域,能够降低项目开发的成本,提升开发效率。本发明包括:读取项目数据和人员数据,项目数据包括项目中任务的集合,和项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;利用项目数据进行遗传算法中的编码和种群的初始化,并且,利用人员数据进行遗传算法中的个体的初始化;将完成初始化后运行遗传算法,并获取计算结果数据;利用计算结果数据,生成调度结果表,并将调度结果表向员工终端发送。本发明适用于大规模多语言的软件项目开发。

Description

一种用于多语言协同开发的项目调度方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种用于多语言协同开发的项目调度方法及装置。
背景技术
随着互联网技术和大数据技术的发展,很多系统级的程序、平台都需要大量的开发人员进行设计开发,以及后续的调试。在很多互联网公司,开发团队的人数也呈几何级得倍增,几百上千人的开发团队比比皆是。如何管理并合理调用各个研发人员为项目服务,则成为了一个需要研究的问题,单纯的采用传统人工管理的方式,实时性差、人工成本高,显然是不可行的。
目前的半自动管理工具,通常只认为软件项目中的研发人员只掌握一种开发语言,并基于此使用遗传算法(GA,Genetic Algorithm)对软件项目的成本或进度进行优化研究,即只对单个目标进行优化研究。这种方式很难进一步提高项目调度的合理程度,难以进一步促进项目的推进进度。
但实际上,很多研发人员往往掌握着多种开发语言,并且对于每个开发语言掌握的熟练程度各不相同。而且项目的成本和进度都是需要重点考虑的因素。目前的方案无法解决进一步的优化问题。使得项目开发的成本难以降低,效率难以提升。
发明内容
本发明的实施例提供一种用于多语言协同开发的项目调度方法及装置,能够降低项目开发的成本,提升开发效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供的方法,包括:
读取项目数据和人员数据,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;
利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化;
将完成初始化后运行所述遗传算法,并获取计算结果数据;
利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送。
第一方面,本发明的实施例提供的装置,包括:
预处理模块,用于读取项目数据和人员数据,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;
处理模块,用于利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化;
计算模块,用于将完成初始化后运行所述遗传算法,并获取计算结果数据;
发送模块,用于利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送。
本发明实施例提供的用于多语言协同开发的项目调度方法及装置,可以对软件项目中的每个任务都需要满足软件开发人员及其技能的约束以及任务之间时序的约束,软件开发人员技能表现往往是一专多能的,具体可表现掌握多种开发语言。在软件项目中如何通过对多技能员工进行合理调度,使用带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting Genetic Algorithm,NSGA-II)使软件项目以更低的成本和更短的时间完成,从而使得项目开发的成本降低,开发效率提升。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的具体实例中的一种NSGA-II的流程示意图;
图2a为本发明实施例提供的方法流程示意图;
图2b为本发明实施例提供的具体实例中的精英保留策略优选保留个体的示意图;
图3为现有技术中的NSGA的流程示意图;
图4为本发明实施例提供的具体实例中的另一种NSGA-II流程图;
图5为本发明实施例提供的具体实例中的多开发语言技能人力资源约束的项目调度问题三层架构的示意图;
图6为本发明实施例提供的具体实例中的项目任务节点网络图的示意图;
图7为本发明实施例提供的具体实例中的工期迭代曲线的示意图;
图8为本发明实施例提供的具体实例中的成本迭代曲线的示意图;
图9为本发明实施例提供的具体实例中的帕累托前沿的示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语) 具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明实施例提供一种用于多语言协同开发的项目调度方法,如图2a所示,包括:
S101,读取项目数据和人员数据。
其中,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数。举例来说:项目数据中,设软件项目P,总共包括了编号{0,1,…,m+1}共分为m+2个任务,其中任务0和任务m+1为虚工作(虚工作就是不消耗任何资源并且执行的时间为0),分别代表软件项目的开始和结束,任务的集合为M。软件项目P总共需要的开发语言技能s集合为J={1,2,…,s}。项目中共有n个可供调用的掌握多开发语言技能的研发人员,研发人员的集合为N={1,2,…,n}。i,j,d分别表示研发人员、开发语言技能和任务,其中1≤i≤n,1≤j≤s,1≤d≤m,即i∈N,j∈J,d∈M。
S102,利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化。
S103,将完成初始化后运行所述遗传算法,并获取计算结果数据。
S104,利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送。
在实际应用中,调度结果表可以采用excel表格放入相应的调度结果数据,并进一步使用matlab进行编码设计,得出最后的优化结果图(比如图7-9),以及多开发语言员工调度结果表(比如表1-5)。
在本实施例中,采用以遗传算法为基础的NSGA-II,其故编码与种群初始化的设计形式与遗传算法相同。编码是将问题中的解以染色体形式表示,从而使其能够进行有效的遗传操作。根据编码的完备性、健全性以及非冗余性原则,再结合软件项目中掌握多种开发语言员工的配置特点,本实施例采用双层编码的算法设计原则,第一层编码为顺序编码,第二层编码为任务需求掌握多种开发语言员工指派编码。具体的,S102中所述利用所述项目数据进行遗传算法中的编码和种群的初始化,包括:
生成第一层编码,所述第一层编码为1~n的整数的不重复排序,长度为n,所述第一层编码表示任务的执行优先顺序,其中,任务数n,资源数为m。
生成第二层编码,所述第二层编码为长度L=n*m的整数编码。
例如:编码和种群初始化的过程中,任务数n,资源数为m,则第一层编码长度为n,为1~n的整数的一个不重复排序,表示任务的执行优先顺序,首先随机产生,然后根据紧前约束转换,根据紧前约束转换可以理解为:根据模型中的紧前约束条件确定任务最终的顺序。第二层编码为长度为L=n*m的整数编码,基因位为[lb(i),ub(i)]的整数,表示选用的类型。如:n=5,m=2,总员工数为5,则一个合法的染色体可表示为[5,4,2,1,3;3,2,3,2,11,5,3,2,4],第一层编码是节点的访问顺序,为5,4,2,1,3,表示先安排任务5,再安排任务4,再安排任务2,以此类推,第二层编码是任务需求掌握多种开发语言员工指派编码为:3,2,3,2,1 和1,5,3,2,4,第1位的3表示指派第3个拥有开发语言技能1的人员给任务1提供开发语言技能1,第2位的2表示指派第2个拥有开发语言技能2的人员给任务1提供开发语言技能2,第3位的3表示指派第3个拥有开发语言技能1的人员给任务2 提供开发语言技能1,第4位的2表示指派第2个拥有开发语言技能2的人员给任务 2提供开发语言技能2,以此类推。
在实际应用中,每一个任务需要多种开发语言技能,每一种开发语言技能由多个研发人员掌握,每一个研发人员掌握不同的开发语言技能且所掌握的开发语言技能效率异质,可以用“工作(任务)-技能-人力”三层架构进行描述,如图5所示。其中GPRs表示一般性优先关系约束,A1~AJ表示J项工作或者任务,1~K表示工作需要K种开发语言技能,即参与项目的研发人员所拥有的开发语言技能,并且每位研发人员掌握的开发语言技能各不相同,1~S表示共有S个开发语言技能型员工。
模型的基本假设如下:(1)整个项目周期内多开发语言技能研发人员的数量保持不变。(2)软件项目的成本为参加项目的研发人员的工资总和,而员工的工资受其所掌握的开发语言技能值影响,技能值越大工资就越高。(3)在软件项目进度的计算中,不考虑任务抢占,不考虑时滞。假设一个工序紧前工序的完成时间即为该工序的开始时间,之间没有时间间隔,不考虑工作转换时间和准备时间。(4)每个任务中途不能中断,即分配给一个任务的研发人员只能等该任务结束才能被分配到下一个任务。(5)同一时刻每个员工只能参加一项任务,不能同时参加多个任务。
Tijd表示研发人员i使用开发语言技能j参加任务d的时间。
Figure GDA0003809114760000071
表示在任务d中使用开发语言技能j时的最短完成时间,该开发语言技能j为企业中所有开发语言技能j的最高水平,表示任务d由企业中水平最高的研发人员去做所需要的时间,1≤j≤s,1≤d≤m。Eij表示研发人员i具备的开发语言技能j的水平高低,1≤i≤n,1≤j≤s,Eij∈[0,1],Eij=1表示研发人员i具备的开发语言技能 j的水平为企业最高水平;Eij=0,表示研发人员i不具备开发语言技能j。
Figure GDA0003809114760000072
表示软件项目开始时研发人员i具有开发语言技能j的水平,
Figure GDA0003809114760000073
已知,可以由项目经理、项目技术主管及相关负责人根据员工的知识、能力等方面进行判断。
Figure GDA0003809114760000074
表示研发人员i在任务d开始时候具备的开发语言技能j的水平。FTd表示任务的完工时间。STd表示任务的开始时间。FTPd表示前序工作的完成时间。Td表示任务 d的工期。Pd表示任务d的紧前任务的集合。Jd表示任务d所需开发语言技能总数的集合。
Figure GDA0003809114760000075
表示任务d是否需要开发语言技能j,若需要则
Figure GDA0003809114760000076
否则
Figure GDA0003809114760000077
 1≤j≤s,1≤d≤m。Ci表示在一定时间内(比如月、周、日)员工i的薪酬,为研发人员i所掌握各开发语言技能的平均工资,1≤i≤n。
Figure GDA0003809114760000081
表示研发人员i在第 d个任务的工作时间。xijd为0-1决策变量,1≤i≤n,1≤j≤s,1≤d≤m。若xijd=1,表示研发人员i使用开发语言技能j参加任务d,否则为零。yijdt为0-1辅助变量,1≤i≤n,1≤j≤s,1≤d≤m。若yijdt=1,表示研发人员i在时段t使用开发语言技能j参加任务d,否则为零。本模型以软件项目成本、进度以及研发人员时间均衡为目标函数,同时对三者进行优化。
目标函数如下公式(1)~(3)所示,在软件项目中,主要的成本花费来源于参与项目的研发人员的费用,故可以认为软件项目的成本是参加软件项目的研发人员的工资总和。其中研发人员的工资水平是受其掌握的多开发语言技能值的影响,研发人员所掌握的多开发语言技能值可以来自于项目经理、研发技术主管或者负责人等组成的专家小组的评价。如果研发人员所掌握的多开发语言技能值越高,那么对应的工资就越高。定义研发人员参加项目所掌握的多开发语言技能的初始值为Eij,将研发人员所掌握某开发语言技能的初始值与该员工平均技能工资之积即为该多开发语言技能研发人员所掌握该开发语言技能的实际工资。软件项目成本目标函数公式如(1)所示,表示最小化软件项目成本。
Figure GDA0003809114760000082
软件项目中每一个任务的完成时间为该任务中研发人员所使用技能的最大时间。整个软件项目的进度是软件项目中最后完成任务的截止时间,即所有任务中完成时间最长的那个任务的时间为整个项目的最终完成时间。员工的技能值越大,意味着员工的技能越熟练,那么员工完成任务的时间就越短。软件项目进度目标函数公式如(2)所示,表示最小化软件项目进度。
Figure GDA0003809114760000083
在软件项目中,需要对研发人员进行均衡使用,在一个任务中不能出现一个研发人员工作时间很长,另一个研发人员工作时间很短的情况,需要平衡员工们的工作时间,合理的使用研发人员,这更加符合实际。本文定义研发人员工作时间的极差,如公式(3)所示,表示最小化研发人员工作时间的极差,均衡项目中研发人员的工作时间。
Figure GDA0003809114760000091
模型中约束条件设置如(4)~(16)所示。由于
Figure GDA0003809114760000092
表示完成任务d时开发语言技能j的最短完工时间,即任务d由企业中拥有开发语言技能j水平最高的研发人员去做所需要花费的时间,那么任意一个研发人员i使用开发语言技能j 参与任务d所花费的时间就与该研发人员具有该开发语言技能的水平有关。该研发人员的开发语言技能值相比企业中最高水平的比值越大,那么该研发人员使用该技能参与任务的时间就越短,所以,研发人员i使用开发语言技能j参与任务d的时间表示如下:
Figure GDA0003809114760000093
在软件项目中一个任务的完成时间是由这个任务中研发人员i使用某开发语言技能j的最长完成时间决定的,即任务d所需开发语言技能集合J中所有开发语言技能j的最长完成时间决定一个任务的最终完成时间,故任务d的完成时间如下:
Figure GDA0003809114760000094
在软件项目中,各任务之间的顺序约束关系如下所示。其中(6)表示任务d 的完成时间是其开始时间与其实际工期的和。(7)表示任务d的开始时间是其紧前任务的完成时间,任务间不考虑时间的间隔,默认为前一个任务完成后,后一个任务立马开始。(8)表示任务d的前序任务的完成时间为前序任务中花费时间最大者。(9)表示若一个任务没有前序任务,则该前序任务的完成时间为零。
Figure GDA0003809114760000101
在软件项目中,任务所需要的每个开发语言技能必须只能由一位具有该开发语言技能的研发人员来完成,不能出现某个任务所需开发语言技能集合J中的一个开发语言技能j由两个或者两个以上具有该开发语言技能j的员工来完成,而且每个研发人员只能使用一种开发语言技能参与一项任务,不能出现一个员工在一个任务中同时使用两种开发语言技能。在同一时刻一个研发人员只能参加其中一项任务,也就是在同一时刻研发人员只能使用一个开发语言技能参加项目中的一个任务,等该任务完成之后,研发人员再重新分配参加后续任务。 (10)表示每项任务的每一个开发语言技能要求有且只有一个人完成,(11)表示每一个研发人员只能使用一种开发语言技能参加同一个任务。(12)表示在同一时刻一个研发人员只能参加同一个任务,(13)表示研发人员i在软件项目中的总工作时间。
Figure GDA0003809114760000102
Figure GDA0003809114760000103
Figure GDA0003809114760000104
Figure GDA0003809114760000105
若研发人员i在时段t使用开发语言技能j参加任务d,则表示研发人员i在任务d中使用了该开发语言技能,即yijdt=1,则xijd也为1,反之若yijdt=0,则xijd也为 0,其中yijdt与xijd取值为0或者1,约束设置如(14)、(15)以及(16)。
Figure GDA0003809114760000111
xijd={0,1},1≤i≤n,1≤j≤s,1≤d≤m    (15) ;
yijdt={0,1},1≤i≤n,1≤j≤s,1≤d≤m    (16) ;
在本实施例中,S102中,所述利用所述人员数据进行遗传算法中的个体的初始化,具体包括:
从所述人员数据中提取初始化相关的参数,所述初始化相关的参数包括:任务的数量m、开发语言技能的数量s、任务d所需要的开发语言技能集合Setd、所述任务d需要开发语言技能j的最短时间
Figure GDA0003809114760000112
掌握开发语言技能j的员工集合 Setj、染色体personal=[]和种群规模popsize。
根据所述种群规模popsize执行迭代,其中任务编号从1循环到m,开发语言编号从1循环到s。
当检测到
Figure GDA0003809114760000113
大于0时,判定所述任务d需要开发语言技能j,并从掌握开发语言技能j的员工的集合Setj中选择一个编号为i的员工,将i的值赋给当前个体的基因位,所述前个体的基因位表示为ub[i],即personal=ub[i]。
Figure GDA0003809114760000114
小于等于0,则跳转进入下一次循环。
举例来说,初始化个体的产生过程主要包括Step1~Step5:
Step1:首先初始化相关的参数,具体包括任务的数量m,开发语言技能的数量s,任务d所需要的开发语言技能集合Setd,任务d需要开发语言技能j的最短时间
Figure GDA0003809114760000115
掌握开发语言技能j的员工集合Setj,染色体personal=[],种群规模 popsize。
Step2:按照种群的规模popsize确定迭代的步骤。
Step3:按照任务编号从1循环到m,开发语言编号从1循环到s。
Step4:检验任务d是否需要开发语言技能j,如果
Figure GDA0003809114760000121
大于0,则认为任务d 需要开发语言技能j,从掌握开发语言技能j的员工的集合Setj中选择一个编号为 i的员工,将i的值赋给当前个体的基因位 personal=ub[i],如果
Figure GDA0003809114760000122
小于等于0,那么可以跳转进入下一步循环。
Step5:以此方式直到所有项目的开发语言技能都安排好人员。
具体的,所述根据所述种群规模popsize执行迭代,包括:
对初始化种群Pt进行变异处理后,形成新的种群Qt
将种群Pt与种群Qt合并形成种群Rt,并执行非支配排序,按照个体的支配个数分级形成级别:F1,F2,…,Fi,并针对每一级Fi计算每个个体的拥挤度。
将F1,F2,…,Fi,从低到高依次加入到下一代种群Pt+1,直至非支配级将Pt+1填满。
对种群Pt+1进行变异处理后,形成下一代个体Qt+1
重复上述过程,直到达到预设的种群迭代次数。
在本实施例中,对种群进行变异处理,具体包括:
选择是从父辈中选择优良的个体进入下一代的遗传操作。选择算子是通过个体的适应度大小来比较个体的优劣,适应度越小的个体被选中的概率就越小,反之,适应度越大的个体被选中的概率就越大。常见的选择算子种类有:锦标赛选择、轮盘赌选择、均匀排序、保留最佳选择等。锦标赛选择法的主要步骤为:第一步,假设种群规模为n,随机产生n个个体作为第一代;第二步,从这n 个个体中随机选择k(k小于n)个个体,k的取值小,效率就高,但不宜太小,一般取为n/2(取整);第三步,从这k个个体中选择最大的一个个体作为下一代n 个个体中的一个个体;第四步,重复第二步和第三步,直到得到新的n个个体。本文采用的选择算子是二进制锦标赛法,基本原理是按照序值和拥挤距离进行取舍,序值不同时选择序值小的个体,序值相同时选择拥挤距离大的个体,这样可以使得进化朝着非支配解和均匀散布的方向进行。
交叉属于遗传算法的核心算子之一。交叉通过模仿生物的遗传方式产生后代,它通过对染色体进行交配与重组,从而得到新的子代。新的子代个体即为问题新的可行解,所以通过交叉操作可以使算法在优化问题的可行解空间中进行迭代搜索进而可以提高算法的全局搜索能力。交叉的方式有单点交叉、两点交叉、多点交叉、均匀交叉、融合交叉、补位交叉等。文本采用的是两点交叉。在第一层编码中交叉算子的操作步骤为:1)随机选择两个染色体作为父本,2)产生2个随机自然数r1和r2,3)将两个父本染色体r1至r2之间的基因片段进行交换, 从而得到两个子代染色体,并对得到的两个染色体进行修订处理,使其不发生冲突。例如,选择的两个父本染色体[1,3,2,5,4][1,2,4,5,3],r1=2,r2=4,那么交叉过程为:交叉之前[1,3,2,5,4][1,2,4,5,3],交叉后[1,2,4,5,4] [1,3,2,5,3],修补之后为[1,2,4,5,3][1,3,2,5,4],其中修补的方法为交叉后,取交叉片段的补集重新随机排列到非交叉片段。在第二层编码中交叉算子的操作步骤为:1)随机选择两个染色体作为父本,2)产生2个随机自然数r1和r2, 3)将两个父本染色体r1至r2之间的基因片段进行交换,得到两个子代染色体。例如,选择的两个父本染色体[1,3,3,2,1,2][2,3,1,1,2,3],r1=2,r2=4,那么交叉后为[1,3,1,1,1,2][2,3,3,2,2,3]。
变异是通过将个体中的某一些基因值替换成其他值从而形成新的个体的遗传操作,能够有效的提高遗传算法的局部搜索能力。个体变异方法有多种,包括基本位变异、均匀变异、非均匀变异等。其中基本变异是指对个体中某些基因的值在一定概率下发生改变的变异方式,又包括单点变异、双点变异、多点变异等。本文根据编码的特点,第一层编码设计使用两点互易变异,变异步骤为:1)产生2个随机自然数r1,r2,2)交换第r1位和r2位的基因。例如,r1=2,那么染色体的变异为[1,3,2,5,4]→[1,5,2,3,4]。第二层编码设计使用单点变异,步骤为:1)产生一个随机自然数r1,r1表示第r1位的基因发生变异,2)采用随机变异的方式将第r1位的基因进行变异。例如,r1=3,那么染色体的变异为 [1,3,3,2,1,2]→[1,3,1,2,1,2]。
其中,还提供一种适应度评估的方式,包括:
在求解多目标优化问题时,由于多个优化目标往往是相互矛盾的,这就使得恰当的选择机制,特别是如何采用适当的评价方式对个体适应度进行评价,成为进化算法最终是否收敛到Pareto最优解的关键因素。一般来说多目标进化算法主要使用三种适应度评价策略,即组合函数法、基于群体但未引入Pareto 支配概念的方法以及基于群体且引入Pareto支配概念的方法。本实施例使用的带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting Genetic Algorithm,NSGA-II)适应度评价的方法采用的是基于群体引入Pareto支配概念的方法,主要通过排序值与拥挤度来决定下一步迭代的父代个体。
其中,还提供一种约束处理的方式,包括:
带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominatedSorting Genetic Algorithm,NSGA-II)在求解约束问题的困难之处在于一个可行解在经过了各种遗传操作以后经常会变成不可行解,这就违反了其内在的约束,所以用NSGA-II在求解这一类问题的时候需要使用一些策略。一般来说,可以用一种直接的思想考虑约束条件,也就是在进化的过程中,叠代一次后就可以执行检测一下新的个体是否违反了约束条件的程序。若没有违反,则保留有效个体,反之,除去这个无效的个体。该方法对于弱约束问题是可以发挥作用的,但是对于强约束问题则不可行。在强约束条件下,寻找一个有效个体的难度会大大的增加,因为约束条件多,个体经过一次进化几乎都转变为不可行个体。根据本文建立的三个模型的特点,一部分约束条件通过编码及编码规则实现,另一部分约束条件主要是通过惩罚函数法来实现。
通过计算机程序实现时,本实施例中的NSGA-II的算法主流程可以采用如伪代码2-3所示的方式,包括:
Figure GDA0003809114760000151
从伪代码2-3中可以看出,本实施例采用的是带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting Genetic Algorithm, NSGA-II),如图1所示的,主流程包括以下几个步骤:
初始化种群Pt进行选择、交叉、变异后形成新的种群Qt
种群Pt与种群Qt合并后形成种群Rt并执行快速非支配排序,按照个体的支配个数分级形成F1,F2,…,Fi,对于每一级Fi计算每个个体的拥挤度。
将前列面Fi从低到高依次加入到下一代种群Pt+1,例如先将F1放入Pt+1,若F1的大小小于N,即F1无法填满Pt+1,这就需要对Fi中剩下的个体继续进行快速非支配排序得到下一级非支配级F2,并向Pt+1中填充F2,若当填充到F3时,种群的大小超过了N,这就要对F3中的个体进行拥挤度比较,即Sort(F3,<n),取前面 N-|Pt+1|个个体,使得Pt+1种群的个体数达到N。若第一级别非支配级能够填满Pt+1,则不需要对剩下的个体继续进行非支配排序。
对种群Pt+1使用选择、交叉、变异操作形成下一代个体Qt+1
重复操作,直到达到种群的迭代次数。
本实施例采用带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting Genetic Algorithm,NSGA-II)对软件项目中掌握多种开发语言的研发人员进行调度研究,以使软件项目的成本和进度同时得到优化。具体的,精英保留策略的逻辑流程如图2b所示的,可以采用拥挤度比较算子进行分析,其中包括:
(1)对同层的每个个体的拥挤度Idistance设置为0;
(2)对同层的个体按照第m个目标函数值进行快速非支配排序;
(3)将边界的两个个体的拥挤度赋值为无穷,即Odistance=Idistance=∞;
(4)对其他个体按照如下公式进行拥挤度的计算:
Figure GDA0003809114760000161
其中,Idistance表示在I点的拥挤度值,fm(i+1)表示第m个目标函数在I+1点的值,fm(i-1)表示第m个目标函数在I-1点的值,
Figure GDA0003809114760000162
Figure GDA0003809114760000163
分别表示集合中第m目标函数的最大值与最小值。
而拥挤度的计算过程包括:经过快速非支配排序操作与拥挤度计算后,种群中的个体都具有以下两个属性:通过快速非支配排序得到的非支配序Irank和通过拥挤度计算得到的拥挤度Idistance。跟据这两个属性并通过拥挤度比较算子比较个体之间的优劣:两个个体I与J进行比较时,只要满足下面两个条件中的一个,就可以认为个体I优于个体J。
a:若Irank<Jrank,即在非支配层上,个体I优于个体J,所以个体I支配J。
b:若Irank=Jrank且Idistance>Jdistance,即当它们在相同的非支配层时,个体I的拥挤度距离比个体J的拥挤度距离大。
条件a若成立就可以保证被选择的个体属于种群中较优的非支配层。条件b 若成立当两个个体在相同的非支配层中时,就可以根据它们的拥挤度距离选择位于相距更远区域的个体,以保证种群多样性。从而在整体上保证较优的个体进入下一个进化循环。
在本实施例中,S104中所述利用所述计算结果数据,生成调度结果表,具体包括:
若开发语言技能j参加任务d时,任务d之前没有任务,则开发语言技能j的开始时间为项目的开始时间。若任务d之前有任务,则开发语言技能j的开始时间任务d的所有前置任务的最迟完成时间。
根据开发语言技能j的技能值,计算任务d中开发语言技能j的工时。根据任务d中开发语言技能j的工时和开发语言技能j的结束时间,获取员工的开发语言技能使用时间表,并计算出所述员工的累积使用时间。根据所有员工的累积使用时间,计算出所述项目的工期。
本实施例中的调度结果表,主要通过双层编码算法流程获取,包括:
初始化任务的优先顺序,任务中所需要的开发语言技能的种类以及这个开发语言技能的最短用时,员工掌握的开发语言技能种类以及开发语言初始技能值,员工的平均开发语言技能工资等变量(具体可以通过执行S101-S102实现) ;
根据任务的编号进行迭代,若这个任务没有紧前任务(即与这一个任务相关联的,比如前置完成的任务),那么任务的开始时间就为0,否则若这个任务有紧前任务,那么任务的开始时间为其所有紧前任务的最迟完成时间。
在任务按编号进行迭代的同时,确定每个任务需要的开发语言技能,从员工开发语言技能矩阵中选择一个对应的开发语言技能的员工,确定该开发语言技能的员工编号并确保每一个员工只能使用一种开发语言技能参加同一个任务惩罚值,任务的完成时间为该任务所需开发语言技能的最迟完成时间。
若开发语言技能j参加任务d时,任务d之前没有任务,则开发语言技能j的开始时间就为项目的开始时间。若任务d之前有任务,那么开发语言技能j的开始时间为其所有前置任务的最迟完成时间。根据开发语言技能j的技能值计算出任务d中开发语言技能j的工时,并计算开发语言技能j的结束时间,构建员工开发语言技能使用时间表并计算出员工累积使用时间,最后分别计算出项目的工期与成本以及员工工作时间的均衡值。
本实施例还提供一种用于多语言协同开发的项目调度装置,包括:
预处理模块,用于读取项目数据和人员数据,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;
处理模块,用于利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化;
计算模块,用于将完成初始化后运行所述遗传算法,并获取计算结果数据;
发送模块,用于利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送。
本实施例中,所述处理模块,具体用于生成第一层编码,所述第一层编码为1~n的整数的不重复排序,长度为n,所述第一层编码表示任务的执行优先顺序,其中,任务数n,资源数为m;生成第二层编码,所述第二层编码为长度L=n*m 的整数编码。
本实施例中,所述处理模块,具体用于从所述人员数据中提取初始化相关的参数,所述初始化相关的参数包括:任务的数量m、开发语言技能的数量s、任务d所需要的开发语言技能集合Setd、所述任务d需要开发语言技能j的最短时间
Figure GDA0003809114760000191
掌握开发语言技能j的员工集合Setj、染色体personal=[]和种群规模 popsize;
根据所述种群规模popsize执行迭代,其中任务编号从1循环到m,开发语言编号从1循环到s;
当检测到
Figure GDA0003809114760000192
大于0时,判定所述任务d需要开发语言技能j,并从掌握开发语言技能j的员工的集合Setj中选择一个编号为i的员工,将i的值赋给当前个体的基因位,所述前个体的基因位表示为ub[i],即personal=ub[i];
Figure GDA0003809114760000193
小于等于0,则跳转进入下一次循环。
本实施例中,所述处理模块,具体用于对初始化种群Pt进行变异处理后,形成新的种群Qt
将种群Pt与种群Qt合并形成种群Rt,并执行非支配排序,按照个体的支配个数分级形成级别:F1,F2,…,Fi,并针对每一级Fi计算每个个体的拥挤度;
将F1,F2,…,Fi,从低到高依次加入到下一代种群Pt+1,直至非支配级将Pt+1填满;
对种群Pt+1进行变异处理后,形成下一代个体Qt+1
重复上述过程,直到达到预设的种群迭代次数。
本实施例中,所述发送模块,具体用于若开发语言技能j参加任务d时,任务d之前没有任务,则开发语言技能j的开始时间为项目的开始时间;若任务d之前有任务,则开发语言技能j的开始时间任务d的所有前置任务的最迟完成时间;
根据开发语言技能j的技能值,计算任务d中开发语言技能j的工时;根据任务d中开发语言技能j的工时和开发语言技能j的结束时间,获取员工的开发语言技能使用时间表,并计算出所述员工的累积使用时间;根据所有员工的累积使用时间,计算出所述项目的工期。
现有的技术中一般选择使用遗传算法(GA,Genetic Algorithm)对目标函数进行优化,但是GA一般只能解决单个目标的优化,无法解决多目标的优化,再多目标优化中,通常使用的非支配排序遗传算法(Non-dominated Sorting Genetic Algorithm,NSGA)也具有一些不可避免的缺陷,主要有计算复杂度高、缺少精英保留策略以及共享函数法需要指定参数σshare。主要原因在于:
现有多目标优化算法中,通常使用的是非支配排序遗传算法(Non-dominatedSorting Genetic Algorithm,NSGA),其核心技术在于通过非支配排序原理对种群中的个体进行分层(ranks)以及通过共享小生境原理计算每个个体的虚拟拥挤度距离(crowdingdistance)。NSGA通过以上这两个核心技术在选择操作算子这个环节对种群进行多目标的评价与选择,从而实现多目标优化。种群个体分层是依据非劣分层算法对种群P进行非劣分层操作。非劣分层的结果是将种群P 分成ρ个非劣组Pj
Figure GDA0003809114760000211
其中ρ表示总层数。P1中所有个体为种群P的最优非劣组,P2中所有个体为种群P的次优非劣组,Pρ中所有个体为种群的最劣组。因为P1中的个体比种群P 中的其它个体更接近真正的Pareto最优域,所以分配最高的适应值给P1中的个体,然后逐步地分配较差的适应值给其它组的个体。适应值分配开始于P1组,然后依次进行到Pρ组。分配给P1的任意一个个体i的适应值Fi=N,N表示种群的大小。分配给P1组的个体更大的适应值是为了保证朝Pareto最优域的选择压力。NSGA通过在P1~Pρ中使用共享函数法来保证每组个体的多样性。在P1中任意两体i与j的标准欧拉距离dij计算方法如下:
Figure GDA0003809114760000212
其中n表示决策变量的数目。再利用(4.3)计算出共享函数值,用来表示两个个体之间关系的密切程度,其中,其中σshare是事先选取的小生境半径,dij表示两个个体之间的欧几里得距离,α表示对Sh(dij)的调整。
Figure GDA0003809114760000213
令α=2,共享函数按照dij在0和1之间取值,任何与个体i的距离大于σshare的个体Sh(dij)值为0。再使用公式(2.21)计算出个体i的小生境数nci,其中u(ri) 表示所有等级是ri的个体数。
Figure GDA0003809114760000214
nci表示第i个个体的临近个体数。若在一个个体的半径是σshare的范围内不存在其它的个体,那这个个体的最小境数就为1。若一个组的所有个体相对于σshare而言相互之间非常接近,那么这一组的每一个个体的小境数都非常的接近该组的个体总数。最后通过小生境数降低个体i的适应值并且得到共享适应值,也就是F′i=Fi/nci
以上完成了P1组中所有个体的适应值分配,然后对P2组中所有个体的适应值进行分配。首先留意P1组的最小共享适应值,对P2组的所有个体分配的适应值要略小于P1组的最小共享适应值。这保证了P1组中任何个体的共享适应值都不会比P2组中任何个体指定的适应值差;然后对P2组的个体使用共享函数法计算出相应的共享适应值;最后依次持续该过程直到所有的个体都被分配了共享适应值。
NSGA使用非支配排序原理与共享小生境技术来确定个体的适应度后,进行的遗传操作和基本的遗传算法保持一致。NSGA算法流程图如图3所示。NSGA的优点在于根据非劣层分配适应值并以组的方式朝着Pareto最优域的方向发展,而且在参数空间中实行共享产生互异的解。其缺点在于非支配排序计算复杂度高、缺少精英保留策略以及共享函数法需要指定参数σshare
本实施例中,基于带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting Genetic Algorithm,NSGA-II)是在NSGA的基础上进行了改进,针对NSGA中非支配排序计算复杂度高的问题,NSGA-II引出了快速非支配排序,从而降低算法的复杂度;针对NSGA没有使用精英保留策略的情况, NSGA-II将精英保留策略引入到算法中,这扩大了采样的空间;针对NSGA需要制定参数σshare的情况,NSGA-II采用了拥挤度及拥挤度比较算子,这可以使准帕累托域中的个体均匀扩大到整个帕累托域,保证了种群的多样性。
本实施例中所采用的NSGA-II的基本思想是:如图4所示的NSGA-II的流程图,首先随机产生种群规模为N的初始种群Pt,并产生其子代种群Qt,再将这两个种群合并形成大小为2N的种群Rt。其次,对种群Rt进行快速非支配排序,并计算出每个非支配层中个体的拥挤度,根据非支配关系以及个体的拥挤度大小选取合适的个体组成新的父代种群Pt+1,并产生新的子代种群Qt+1;最后,将Pt+1与Qt+1合并形成新的种群Rt+1,重复以上的操作,直到满足程序结束的条件。
本实施例实际应用时,软件项目中的每个任务都需要满足软件开发人员及其技能的约束以及任务之间时序的约束,软件开发人员技能表现往往是一专多能的,具体可表现掌握多种开发语言。在软件项目中如何通过对多技能员工进行合理调度,使用带精英保留策略的非支配排序多目标遗传算法(Elitist Non-dominated Sorting GeneticAlgorithm,NSGA-II)使软件项目以更低的成本和更短的时间完成,这具有重要的实际意义。
以具体案例来说:某软件开发公司S的一个大型软件开发项目P共有10个任务,分别为D1、D2、…、D10,其中共需8种开发语言技能,分别为S1、S2…、 S8,每一个任务需要其中的多种开发语言技能,每个开发语言技能是并行进行的,员工的开发语言技能初始值由项目中的技术主管及负责人、项目经理等组成的专家小组通过评价给出,而可以参加本软件项目的研发人员总共有40名。任务之间的先后关系以及每个任务所需要的技能如表1所示。根据表1给出项目中任务的网络图如图6所示,其中任务S与任务E为虚工序。项目中每个任务所需要的开发语言技能及所需要开发语言技能的最短开发时间如表2所示。这40名员工的开发语言技能平均工资如表3所示。每位研发人员掌握的开发语言技能及技能初始水平值见表4。
表1项目中任务先后关系:
Figure GDA0003809114760000231
Figure GDA0003809114760000241
表2任务中各技能的最短时间需求(单位:月):
Figure GDA0003809114760000242
表3员工所掌握技能的平均工资(元/月):
Figure GDA0003809114760000243
表4掌握各技能的员工及技能值:
Figure GDA0003809114760000244
表5软件项目成本与进度:
软件项目成本 软件项目进度
967356.8 37.7
963365.5 37.7
943554.7 38.0
926132.3 38.2
935271.9 38.2
925907.4 38.4
931907.4 38.4
918986.2 38.4
924986.2 38.4
955530.2 38.9 
通过Matlab运行代码得到工期的迭代曲线如图7所示,成本迭代曲线如图8 所示,帕累托前沿如图9所示。从图9的帕累托前沿中选出10个解并列出这10个解的成本和进度值,如表5所示。可以看出研发人员可以使用同一开发语言参加同一个任务,也可以使用同一开发语言参加不同的任务,增加了研发人员配置的灵活性并使研发人员得到充分使用,成本和进度也得到了优化。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (6)

1.一种用于多语言协同开发的项目调度方法,其特征在于,包括:
读取项目数据和人员数据,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;
利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化;
将完成初始化后运行所述遗传算法,并获取计算结果数据;
利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送;
所述利用所述项目数据进行遗传算法中的编码和种群的初始化,包括:
生成第一层编码,所述第一层编码为1~n的整数的不重复排序,长度为n,所述第一层编码表示任务的执行优先顺序,其中,任务数n,资源数为m;
生成第二层编码,所述第二层编码为长度L=n*m的整数编码;
所述利用所述人员数据进行遗传算法中的个体的初始化,包括:
从所述人员数据中提取初始化相关的参数,所述初始化相关的参数包括:任务的数量m、开发语言技能的数量s、任务d所需要的开发语言技能集合Setd、所述任务d需要开发语言技能j的最短时间
Figure FDA0003760055750000011
掌握开发语言技能j的员工集合Setj、染色体personal=[]和种群规模popsize;
根据所述种群规模popsize执行迭代,其中任务编号从1循环到m,开发语言编号从1循环到s;
当检测到
Figure FDA0003760055750000021
大于0时,判定所述任务d需要开发语言技能j,并从掌握开发语言技能j的员工的集合Setj中选择一个编号为i的员工,将i的值赋给当前个体的基因位,所述前个体的基因位表示为ub[i],即personal=ub[i];
Figure FDA0003760055750000022
小于等于0,则跳转进入下一次循环。
2.根据权利要求1所述的方法,其特征在于,所述根据所述种群规模popsize执行迭代,包括:
对初始化种群Pt进行变异处理后,形成新的种群Qt
将种群Pt与种群Qt合并形成种群Rt,并执行非支配排序,按照个体的支配个数分级形成级别:F1,F2,…,Fi,并针对每一级Fi计算每个个体的拥挤度;
将F1,F2,…,Fi,从低到高依次加入到下一代种群Pt+1,直至非支配级将Pt+1填满;
对种群Pt+1进行变异处理后,形成下一代个体Qt+1
重复上述过程,直到达到预设的种群迭代次数。
3.根据权利要求1所述的方法,其特征在于,所述利用所述计算结果数据,生成调度结果表,包括:
若开发语言技能j参加任务d时,任务d之前没有任务,则开发语言技能j的开始时间为项目的开始时间;若任务d之前有任务,则开发语言技能j的开始时间任务d的所有前置任务的最迟完成时间;
根据开发语言技能j的技能值,计算任务d中开发语言技能j的工时;根据任务d中开发语言技能j的工时和开发语言技能j的结束时间,获取员工的开发语言技能使用时间表,并计算出所述员工的累积使用时间;根据所有员工的累积使用时间,计算出所述项目的工期。
4.一种用于多语言协同开发的项目调度装置,其特征在于,包括:
预处理模块,用于读取项目数据和人员数据,所述项目数据包括项目中任务的集合,和所述项目所需的开发语言技能的集合,其中,每一个任务对应至少一种开发语言技能,所述人员数据包括每一个人员掌握的开发语言技能和所掌握的开发语言技能的效率参数;
处理模块,用于利用所述项目数据进行遗传算法中的编码和种群的初始化,并且,利用所述人员数据进行遗传算法中的个体的初始化;
计算模块,用于将完成初始化后运行所述遗传算法,并获取计算结果数据;
发送模块,用于利用所述计算结果数据,生成调度结果表,并将所述调度结果表向员工终端发送;
所述处理模块,具体用于生成第一层编码,所述第一层编码为1~n的整数的不重复排序,长度为n,所述第一层编码表示任务的执行优先顺序,其中,任务数n,资源数为m;生成第二层编码,所述第二层编码为长度L=n*m的整数编码;
所述处理模块,具体用于从所述人员数据中提取初始化相关的参数,所述初始化相关的参数包括:任务的数量m、开发语言技能的数量s、任务d所需要的开发语言技能集合Setd、所述任务d需要开发语言技能j的最短时间
Figure FDA0003760055750000031
掌握开发语言技能j的员工集合Setj、染色体personal=[]和种群规模popsize;
根据所述种群规模popsize执行迭代,其中任务编号从1循环到m,开发语言编号从1循环到s;
当检测到
Figure FDA0003760055750000032
大于0时,判定所述任务d需要开发语言技能j,并从掌握开发语言技能j的员工的集合Setj中选择一个编号为i的员工,将i的值赋给当前个体的基因位,所述前个体的基因位表示为ub[i],即personal=ub[i];
Figure FDA0003760055750000041
小于等于0,则跳转进入下一次循环。
5.根据权利要求4所述的装置,其特征在于,所述处理模块,具体用于对初始化种群Pt进行变异处理后,形成新的种群Qt
将种群Pt与种群Qt合并形成种群Rt,并执行非支配排序,按照个体的支配个数分级形成级别:F1,F2,…,Fi,并针对每一级Fi计算每个个体的拥挤度;
将F1,F2,…,Fi,从低到高依次加入到下一代种群Pt+1,直至非支配级将Pt+1填满;
对种群Pt+1进行变异处理后,形成下一代个体Qt+1
重复上述过程,直到达到预设的种群迭代次数。
6.根据权利要求4所述的装置,其特征在于,所述发送模块,具体用于若开发语言技能j参加任务d时,任务d之前没有任务,则开发语言技能j的开始时间为项目的开始时间;若任务d之前有任务,则开发语言技能j的开始时间任务d的所有前置任务的最迟完成时间;
根据开发语言技能j的技能值,计算任务d中开发语言技能j的工时;根据任务d中开发语言技能j的工时和开发语言技能j的结束时间,获取员工的开发语言技能使用时间表,并计算出所述员工的累积使用时间;根据所有员工的累积使用时间,计算出所述项目的工期。
CN201911081485.0A 2019-11-07 2019-11-07 一种用于多语言协同开发的项目调度方法及装置 Active CN111047272B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201911081485.0A CN111047272B (zh) 2019-11-07 2019-11-07 一种用于多语言协同开发的项目调度方法及装置
CA3162759A CA3162759C (en) 2019-11-07 2020-07-30 Project scheduling method and apparatus for multi-language collaborative development
PCT/CN2020/105932 WO2021088436A1 (zh) 2019-11-07 2020-07-30 一种用于多语言协同开发的项目调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911081485.0A CN111047272B (zh) 2019-11-07 2019-11-07 一种用于多语言协同开发的项目调度方法及装置

Publications (2)

Publication Number Publication Date
CN111047272A CN111047272A (zh) 2020-04-21
CN111047272B true CN111047272B (zh) 2023-04-07

Family

ID=70232015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911081485.0A Active CN111047272B (zh) 2019-11-07 2019-11-07 一种用于多语言协同开发的项目调度方法及装置

Country Status (3)

Country Link
CN (1) CN111047272B (zh)
CA (1) CA3162759C (zh)
WO (1) WO2021088436A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111047272B (zh) * 2019-11-07 2023-04-07 苏宁云计算有限公司 一种用于多语言协同开发的项目调度方法及装置
CN111553610B (zh) * 2020-05-07 2023-04-07 苏宁云计算有限公司 一种基于学习-遗忘效应的调度方法及系统
CN113094095B (zh) * 2021-03-26 2024-03-22 海信集团控股股份有限公司 一种敏捷开发进度确定方法及装置
CN113626015B (zh) * 2021-08-24 2024-04-26 贵州电子科技职业学院 一种适用于i语言的高性能运行优化方法
CN113838526B (zh) * 2021-09-16 2023-08-25 赛业(广州)生物科技有限公司 一种病毒突变体的生成方法、系统、计算机设备及介质
CN115660318A (zh) * 2022-09-30 2023-01-31 南京航空航天大学 一种用于物联制造车间的人机协作任务分配方法
CN116882293A (zh) * 2023-07-18 2023-10-13 广东明阳电气股份有限公司 变压器多目标优化方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109636205A (zh) * 2018-12-18 2019-04-16 合肥师范学院 一种研发项目组合中多技能人员调度方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035816B (zh) * 2014-05-22 2017-03-22 南京信息工程大学 一种基于改进nsga‑ii的云计算任务调度方法
US11494662B2 (en) * 2017-08-18 2022-11-08 The Regents Of The University Of Michigan Centralized framework for small batch manufacturing
CN111047272B (zh) * 2019-11-07 2023-04-07 苏宁云计算有限公司 一种用于多语言协同开发的项目调度方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109636205A (zh) * 2018-12-18 2019-04-16 合肥师范学院 一种研发项目组合中多技能人员调度方法

Also Published As

Publication number Publication date
CN111047272A (zh) 2020-04-21
CA3162759A1 (en) 2021-05-14
CA3162759C (en) 2024-04-23
WO2021088436A1 (zh) 2021-05-14

Similar Documents

Publication Publication Date Title
CN111047272B (zh) 一种用于多语言协同开发的项目调度方法及装置
Shen et al. Mathematical modeling and multi-objective evolutionary algorithms applied to dynamic flexible job shop scheduling problems
Zhu et al. A decomposition-based multi-objective genetic programming hyper-heuristic approach for the multi-skill resource constrained project scheduling problem
CN110221585B (zh) 一种用于混合流水车间考虑设备维护的节能调度控制方法
CN113705866B (zh) 基于资源受限项目调度问题模型的排程优化方法和系统
CN109636205A (zh) 一种研发项目组合中多技能人员调度方法
CN115600774B (zh) 一种装配式建筑构件产线的多目标生产调度优化方法
CN101901425A (zh) 一种基于多种群协同进化的柔性作业车间调度方法
CN107977740A (zh) 一种现场运维智能调度方法
CN105629927A (zh) 一种基于混合遗传算法的mes生产计划排产方法
CN107544251B (zh) 一种基于分布式鲁棒模型的最小化总拖期的单机调度方法
CN113139710B (zh) 一种基于遗传算法的多资源并行任务高级计划排程方法
CN104077634B (zh) 基于多目标优化的主动‑反应式动态项目调度方法
CN109523178A (zh) 一种面向电力通信现场的运维方法及装置
Sajadi et al. A new fuzzy multi-objective multi-mode resource-constrained project scheduling model
Wei et al. A multi-objective migrating birds optimization algorithm based on game theory for dynamic flexible job shop scheduling problem
CN111553610B (zh) 一种基于学习-遗忘效应的调度方法及系统
CN114298426A (zh) Aps动态生产计划排程系统
Kong et al. RCPSP with combined precedence relations and resource calendars
CN107219824A (zh) 一种基于滚动窗口调度技术的软件机器人集成控制调度程序设计方法
Luna et al. On the scalability of multi-objective metaheuristics for the software scheduling problem
CN116957219A (zh) 一种基于遗传算法的水泥生产线施工作业调度方法
CN114066312A (zh) 基于离散制造的生产调度方法、系统、设备及存储介质
CN114004065A (zh) 基于智能算法和环境约束下的变电站工程多目标优化方法
CN106779415A (zh) 一种项目预算的管理方法及系统

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 210042 No.1, Suning Avenue, Xuanwu District, Nanjing City, Jiangsu Province

Patentee after: Jiangsu Suning cloud computing Co.,Ltd.

Country or region after: China

Address before: 210042 No.1, Suning Avenue, Xuanwu District, Nanjing City, Jiangsu Province

Patentee before: Suning Cloud Computing Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right

Effective date of registration: 20240513

Address after: 210000, 1-5 story, Jinshan building, 8 Shanxi Road, Nanjing, Jiangsu.

Patentee after: SUNING.COM Co.,Ltd.

Country or region after: China

Address before: 210042 No.1, Suning Avenue, Xuanwu District, Nanjing City, Jiangsu Province

Patentee before: Jiangsu Suning cloud computing Co.,Ltd.

Country or region before: China