1.本发明涉及项目管理技术领域,尤其涉及一种项目调度方法、装置、电子设备和存储介质。
背景技术:2.随着社会发展进程的加快,企业越来越注重生产效率。在具体的项目中,如何将有限的资源运用到项目中,保证项目质量的情况下,缩短项目周期成为企业关注的焦点;同时在项目管理领域,资源调度优化问题也是关注热点。
3.在资源调度优化研究中,资源一般被假设为只具备某种特定技能。然而在现实的企业项目生产实施中,资源通常是柔性的,具备多种技能且可在项目实施过程中的任一时刻变换所提供技能的能力。
4.现有的项目资源调度优化研究,很少考虑柔性资源执行不同工作任务的技能水平,对资源进行分配时只关注了资源数量约束,这会导致调度安排的方案没有针对性,往往不够准确合理。
技术实现要素:5.本发明提供一种项目调度方法、装置、电子设备和存储介质,用以解决现有技术中调度安排的方案没有针对性,往往不够准确合理的缺陷。
6.本发明提供一种项目调度方法,包括:
7.基于待调度项目的任务信息和资源信息,构建调度模型;
8.在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;
9.其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
10.根据本发明提供的一种项目调度方法,所述在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,包括:
11.在上一调度方案中的一部分固定不变的情况下,基于所述调度模型和第一阶段算法对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型和第二阶段算法对所述上一调度方案中的一部分进行优化,得到当前调度方案;
12.所述第一阶段算法和所述第二阶段算法为不同的优化算法。
13.根据本发明提供的一种项目调度方法,所述在上一调度方案中的一部分固定不变的情况下,基于所述调度模型和第一阶段算法对所述上一调度方案中的另一部分进行优
化,包括:
14.在上一调度方案中的资源分配部分固定不变的情况下,基于所述调度模型和第一阶段算法,迭代调整所述任务顺序部分,直至达到第一迭代次数,得到资源分配部分固定不变情况下的任务顺序部分优化解;所述第一阶段算法为差分进化算法。
15.根据本发明提供的一种项目调度方法,所述在优化后的另一部分固定不变的情况下,基于所述调度模型和第二阶段算法对所述上一调度方案中的一部分进行优化,得到当前调度方案,包括:
16.在所述任务顺序部分优化解固定不变的情况下,基于所述调度模型和第二阶段算法,迭代调整所述资源分配部分,直至达到第二迭代次数,得到当前调度方案;所述第二阶段算法为深度优先搜索算法。
17.根据本发明提供的一种项目调度方法,所述将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案,包括:
18.若所述当前调度方案满足预设终止条件,则确定所述当前调度方案为所述最终调度方案;
19.若所述当前调度方案不满足所述预设终止条件,则将所述当前调度方案作为上一调度方案进行优化,直至优化后的当前调度方案满足所述预设终止条件。
20.根据本发明提供的一种项目调度方法,所述基于待调度项目的任务信息和资源信息,构建调度模型,包括:
21.基于所述待调度项目的任务信息和资源信息,确定所述调度模型的约束条件;
22.基于所述约束条件和所述调度模型的调度目标,构建调度模型,所述调度目标包括所述待调度项目的工期最短。
23.根据本发明提供的一种项目调度方法,所述任务信息包括:各任务执行顺序的强制关系和完成各任务所需的标准时间;所述资源信息包括各资源对应各任务的技能水平。
24.本发明还提供一种项目调度装置,包括:
25.调度模型构建单元,用于基于待调度项目的任务信息和资源信息,构建调度模型;
26.调度方案生成单元,用于在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;
27.其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
28.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述项目调度方法的步骤。
29.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述项目调度方法的步骤。
30.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述项目调度方法的步骤。
31.本发明提供的项目调度方法、装置、电子设备和存储介质,通过构建的调度模型,采用嵌套循环优化方法对项目资源分配部分和任务顺序进行优化,使得资源到任务的分配
更具针对性,实现了精细化的项目调度,有助于提高项目完成效率。
32.尤其是在将上述项目调度方法应用在资源信息为柔性资源的情况下,在固定任务顺序部分而对资源分配部分进行优化的过程中,能够更多考虑资源的技能水平的调度策略,对资源进行准确分配。
附图说明
33.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1是本发明提供的项目调度方法的流程示意图之一;
35.图2是本发明提供的项目调度方法中步骤110的流程示意图;
36.图3是本发明提供的项目调度方法的流程示意图之二;
37.图4是本发明提供的项目调度装置的结构示意图;
38.图5是本发明提供的电子设备的结构示意图。
具体实施方式
39.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.在已经公开的项目调度优化算法中,有针对某个特定的任务,找到最优的解决方法从而达到缩短工期的目的,比如蚁群算法;也有针对整个项目,通过多级网络计划分解任务,达到监控项目的目的;还有通过大数据分析资源、工序的依赖关系,最后得到优化的计划安排等。
41.现有的项目资源调度优化研究中很少考虑柔性资源执行不同工作任务的技能水平,因此对员工进行指派时只关注了资源数量约束,这会导致安排的方案没有针对性,往往不够准确合理。在实际情况中,员工显然的会有擅长的工作和不擅长的工作,将有限数量的员工尽可能的分配到他们更擅长的项目上,一方面可以加快项目的进度减少项目实施中可能会发生的意外,另一方面可以增加员工的自信心。如何给出考虑员工对不同工作任务技能存在差异的派遣策略,对复杂的项目工期进行合理排期的同时优化项目完工时间,提高企业的生产效率,是亟需解决的问题。
42.图1是本发明提供的项目调度方法的流程示意图,如图1所示,该方法包括:
43.步骤110,基于待调度项目的任务信息和资源信息,构建调度模型。
44.具体地,待调度项目是指需要进行资源调度的项目,待调度项目的任务信息是指待执行的任务信息,可以将待调度项目进行拆分,分解成可同时进行的不同子项目,每个子项目内包含的若干任务信息即待调度项目的任务信息。
45.其中,任务信息包括完成任务所需的时间和各个任务之间的依赖关系,即各任务的先后执行顺序的强制关系,在进行项目调度时,必须满足各个任务的执行顺序要求。
46.待调度项目的资源信息是指完成待调度项目可分配到的资源信息,可以包括设备资源和人力资源,每个资源可用于完成和不可完成的任务可能不同,例如,r1不可完成012任务,r2不可完成014任务。根据每个资源熟练度的不同,完成每个任务的技能水平可能也不相同,例如,对于011任务,r1完成需要5小时,而r2完成需要4小时,显然,单就011这一个任务,安排r2完成时间更短,效率更高。
47.例如,在一个柔性作业车间调度项目中,资源信息可以是智能设备资源信息,可以包括设备加工效率、设备启用成本等,任务信息可以是产品加工需要完成的每一道工序信息,可以包括工序名称、工序编号和加工耗时等;又如,在一个软件开发项目中,资源信息可以是人员信息,可以包括每个员工拥有的开发语言技能,任务信息可以包括完成每一个功能点开发所包含的任务信息、任务所需时间等。
48.根据待调度项目的任务信息和资源信息,构建调度模型。调度模型可以拆解为项目任务顺序和项目资源分配两阶段问题。模型的约束条件可以包括任务执行顺序约束和资源技能约束;模型的目标可以是单目标,例如项目工期最短,也可以是双目标,例如是项目工期最短且项目成本最小化。
49.步骤120,在上一调度方案中的一部分固定不变的情况下,基于调度模型对上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于调度模型对上一调度方案中的一部分进行优化,得到当前调度方案,并将当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;
50.其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
51.具体地,调度模型由两个子问题构成,一个是资源分配问题,另一个是任务顺序问题,因此可以相应地将调度方案分为两部分,分别是资源分配部分和任务顺序部分。资源分配部分表示每个任务分配的资源,任务顺序部分表示任务的执行顺序。
52.此处,针对任意一个调度方案,其中的一部分可以是资源分配部分,也可以是任务顺序部分,本发明实施例对此不作具体限定。如果一部分是资源分配部分,则另一部分是任务顺序部分;如果一部分是任务顺序部分,则另一部分是资源分配部分。
53.在进行首次优化之前,可以基于调度模型初始化一个调度方案,即得到初始调度方案。具体可以根据构建好的调度模型,随机或者根据项目经验生成一组满足调度模型的初始调度方案,初始调度方案同样包括资源分配部分和任务顺序部分,对应在进行首次优化时,上一调度方案即初始调度方案。据此在初始调度方案的基础上进行优化。
54.具体优化时,可以首先在初始调度方案中的资源分配部分固定不变的情况下,根据调度模型对初始调度方案中的任务顺序部分进行优化。例如,可以调整任务顺序部分,经过多次调整迭代后,得到优化后的任务顺序部分。
55.然后,以初始调度方案中的资源分配部分和优化后的任务顺序部分组成的调度方案为基础,固定方案中优化后的任务顺序部分,根据调度模型对初始调度方案中的资源分配部分进行优化,例如,可以调整资源分配部分,针对其中的各个任务,根据资源的技能水平,优先安排执行率高的资源。经过多次调整迭代后,得到优化后的资源分配部分。优化后的任务顺序部分和优化后的资源分配部分组成了当前调度方案。
56.在另一个实施例中,还可以首先在初始调度方案中的任务顺序部分固定不变的情况下,根据调度模型对初始调度方案中的资源分配部分进行优化。例如,可以调整资源分配
部分,针对其中的各个任务,根据资源的技能水平,优先安排执行率高的资源。经过多次调整迭代后,得到优化后的资源分配部分。
57.然后,以初始调度方案中的任务顺序部分和优化后的资源分配部分组成的调度方案为基础,固定方案中优化后的资源分配部分,根据调度模型对初始调度方案中的任务顺序部分进行优化,例如,可以调整任务顺序部分,经过多次调整迭代后,得到优化后的任务顺序部分。优化后的资源分配部分和优化后的任务顺序部分组成了当前调度方案。
58.得到当前调度方案后,将当前调度方案作为上一调度方案持续进行优化,循环迭代上述优化过程,直至满足迭代终止条件,得到最终调度方案。其中,迭代终止条件可以是预先设置的,比如,迭代次数超过了预先设定的次数阈值,程序运行超过某时间或者当前调度方案达到预期期望等。最终调度方案指最后一次迭代优化得到的调度方案,可以根据此方案进行项目调度。
59.本发明实施例提供的项目调度方法,基于构建的调度模型,采用嵌套循环优化方法对资源分配部分和任务顺序部分分别进行优化,使得资源到任务的分配更具针对性,实现了精细化的项目调度,有助于提高项目完成效率。
60.尤其是在将上述项目调度方法应用在资源信息为柔性资源的情况下,在固定任务顺序部分而对资源分配部分进行优化的过程中,能够更多考虑资源的技能水平的调度策略,对资源进行准确分配。
61.基于上述实施例,步骤120中在上一调度方案中的一部分固定不变的情况下,基于调度模型对上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于调度模型对上一调度方案中的一部分进行优化,得到当前调度方案,具体包括:
62.在上一调度方案中的一部分固定不变的情况下,基于调度模型和第一阶段算法对上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于调度模型和第二阶段算法对上一调度方案中的一部分进行优化,得到当前调度方案;
63.第一阶段算法和第二阶段算法为不同的优化算法。
64.具体地,在上述实施例的基础上,可以在上一调度方案中的一部分固定不变的情况下,根据调度模型和第一阶段算法对上一调度方案中的另一部分进行优化。第一阶段算法可以称为内层算法,具体可以是差分进化算法,也可以是蚁群算法、深度优先搜索算法等,通过第一阶段算法的应用,使得另一部分不断向调度模型所指示的优化目标调整,从而得到更加贴近优化目标的调度方案中的另一部分。
65.以第一阶段算法为差分进化算法为例,可以用两段染色体基因来表示调度方案,第一段染色体表达资源分配信息,从左到右的每个基因依次表示从第一个任务到最后一个任务的各任务所分配到的资源;第二段染色体表达任务的执行顺序,从左到右的每个基因依次表示从第一个任务到最后一个任务的各任务所属的子项目编号,通过打乱这些子项目编号的排列顺序就能得到不同的任务执行顺序。得到优化后的任务顺序部分,并将该任务顺序输出到外层。
66.然后,在优化后的另一部分固定不变的情况下,基于调度模型和第二阶段算法对上一调度方案中的一部分进行优化,得到当前调度方案。第二阶段算法可以称为外层算法,具体可以是深度优先搜索算法,也可以是神经网络算法等。此处需要说明的是,为了避免某一个算法的计算限制,增加项目调度方案的稳定性,第一阶段算法和第二阶段算法为不同
的优化算法。针对任务顺序和资源分配这两个不同的参数进行调整优化时,选用相对更具有针对性的算法,能实现更精精细化的项目调度,有助于提高项目完成效率。
67.以第二阶段算法为深度优先搜索算法为例,算法可以更深层的去探索上一调度方案中的一部分的每一种可能性,通过第二阶段算法的应用,使得一部分不断向调度模型所指示的优化目标调整,从而得到更加贴近优化目标的调度方案中的一部分,以此来寻找该一部分最优的方案。同时,针对其中的各个任务,算法会优先安排执行率最高的资源,并自动迭代寻找该一部分最优的方案。
68.需要说明的是,本发明实施例中的一部分可以是资源分配部分,也可以是任务顺序部分,在此不再赘述。
69.本发明实施例提供的项目调度方法,通过第一阶段算法和第二阶段算法的组合,采用内外层算法分开的双层嵌套循环算法,对项目资源分配部分和任务顺序进行优化,从而使得资源到任务的分配更具针对性,项目调度更加灵活准确,实现了精细化的项目调度,有助于提高项目完成效率。
70.基于上述任一实施例,在上一调度方案中的一部分固定不变的情况下,基于调度模型和第一阶段算法对上一调度方案中的另一部分进行优化,具体包括:
71.在上一调度方案中的资源分配部分固定不变的情况下,基于调度模型和第一阶段算法,迭代调整任务顺序部分,直至达到第一迭代次数,得到资源分配部分固定不变情况下的任务顺序部分优化解;第一阶段算法为差分进化算法。
72.具体地,可以在上一调度方案中的资源分配部分固定不变的情况下,基于调度模型和差分进化算法,迭代调整任务顺序部分,直至达到第一迭代次数,得到资源分配部分固定不变情况下的任务顺序部分优化解,其中第一迭代次数为预先设置的。
73.差分进化算法(differential evolution,de)主要的控制参数包括种群规模(np),缩放因子(f)和交叉概率(cr)。种群规模在确定了项目、任务、资源后就已经确定了下来。缩放因子对全局寻优起到非常重要的作用,缩放因子越小,算法对局部的搜索能力更好,缩放因子越大算法越能跳出局部极小点,但是收敛速度会变慢。交叉概率是指在交叉的过程中,子代与父代交换信息量的大小程度,交叉概率的值越大,信息量交换的程度越大。反之,如果交叉概率的值偏小,将会使种群的多样性快速减小,不利于全局寻优。迭代次数是指差分进化算法的执行次数,达到迭代次数则退出算法。
74.针对项目和任务的大小来设置控制参数。如果在项目刚开始对算法不了解时可以采用通用的控制参数,比如缩放因子选择0.5,交叉概率选择0.5,迭代次数选择50。而后根据最终得到的结果的满意度和执行时间来调整各控制参数的值。
75.在一个实施例中,根据构建的调度模型,随机生成一组满足条件的任何方案。示例项目一种可行的任务排序为:011,012,021,013,022,014,023,024。若以此为基础根据资源派遣策略,则资源可选分配方案根据策略可以为:r1,r2,r1,r1,r2,r2,r2,r2。初始调度方案可以如表1所示。
76.表1
77.r2 012021022023024r1011 013014
ꢀꢀ
78.以表1中示出的初始调度方案可以得出初始的基因序列,如表2所示。其中,资源分
配表示每个任务的分配的资源,任务顺序指任务的执行顺序。子项目m1的第1个任务011的资源为r1,m1的第2个任务012的资源为r2,m1的第3个任务013的资源为r1,m1的第4个任务014的资源为r1;子项目m2的第1个任务021的资源为r2,m2的第2个任务022的资源为r2,m2的第3个任务023的资源为r2,m2的第4个任务024的资源为r2。
79.表2
[0080][0081]
然后,固定资源分配部分,仅针对任务顺序进行差分进化算法,即针对基因来说,任务顺序部分的基因做了顺序调整,资源分配的顺序也相应改变。如表3所示,任务顺序中的第三个任务经过交叉调到了第一个位置,因任务的顺序需保持一定的顺序,所以原先的第一、第二个任务依次往后推移,分别到了第二、第三的位置。相应的,原先资源分配的第三个资源也到了第一的位置,原先第一、第二个资源依次往后推移,分别到了第二、第三的位置。需要注意的是,任务顺序的变动需满足任务的执行顺序要求。比如,原先的第五个任务就不能跳过第三个任务放到前面的位置。改变任务顺序部分后的基因如表3所示。
[0082]
表3
[0083][0084]
改变任务顺序部分后的基因对应的调度方案如表4所示,可以发现优于初始调度方案。
[0085]
表4
[0086]
r2021012022023024r1011 013014 [0087]
任务顺序在不断的调整迭代,直至达到预设的第一迭代次数,差分进化算法可以得到当前固定资源分配情况下的任务较优解(可能得到的不是最优解),即我们通过内层差分进化算法得到了一个优化后的任务顺序,将这个优化后的任务顺序输出到外层。
[0088]
本发明实施例提供的方法,可以通过差分进化算法得到当前固定资源分配情况下的任务顺序优化解。
[0089]
基于上述任一实施例,在优化后的另一部分固定不变的情况下,基于调度模型和第二阶段算法对上一调度方案中的一部分进行优化,得到当前调度方案,具体包括:
[0090]
在任务顺序部分优化解固定不变的情况下,基于调度模型和第二阶段算法,迭代调整资源分配部分,直至达到第二迭代次数,得到当前调度方案;第二阶段算法为深度优先搜索算法。
[0091]
具体地,在任务顺序部分优化解固定不变的情况下,基于调度模型和深度优先搜索算法(depth first search,dfs),迭代调整资源分配部分,直至达到第二迭代次数,得到当前调度方案。其中,第二迭代次数为预先设置的。
[0092]
在一个实施例中,假定表4所示的调度方案为内层差分进化算法输出的较优解,那
么此时固定任务的执行顺序,仅调整任务的执行资源。深度优化搜索的算法优势在于更深层的去探索每一种可能性,以此来寻找最优的资源分配方案。
[0093]
举例来说,当前021以及011两个任务,分别执行资源是r2、r1,根据技能水平统计的执行效率分别为0.8、1。此处的执行效率可以为时间效率,数字越低表示技能等级越高。针对011这个任务,算法会优先安排技能等级最高的资源,即r2,那此时021这个任务只能安排r1,同时r1也是021这个任务的最佳资源,系统自动计算执行这两个任务会比原先的方案要优,同时也不影响后续的方案,那么原先的方案就会被现有方案替代,替代后的任务执行方案如表5所示。之后,深度优化搜索算法会继续向后优化,直至达到第二迭代次数,得到当前调度方案。
[0094]
表5
[0095][0096][0097]
本发明实施例提供的方法,可以通过深度优化搜索算法得到当前固定任务的执行顺序情况下的资源分配优化解。
[0098]
基于上述任一实施例,步骤120中将当前调度方案作为上一调度方案进行优化,直至得到最终调度方案,具体包括:
[0099]
若当前调度方案满足预设终止条件,则当前调度方案为最终调度方案;
[0100]
若当前调度方案不满足预设终止条件,则将当前调度方案作为上一调度方案进行优化,直至优化后的当前调度方案满足预设终止条件。
[0101]
具体地,此处的预设终止条件可以是预先设置的,比如,预设终止条件可以是第一迭代次数和第一迭代次数之和超过了某次数,整个优化过程运行超过某时长或者当前调度方案达到预期期望等。
[0102]
如果当前调度方案满足预设终止条件,则将当前调度方案作为最终调度方案;如果当前调度方案不满足预设终止条件,则将当前调度方案作为上一调度方案持续进行优化,直至优化后的当前调度方案满足预设终止条件,则将当前调度方案作为最终调度方案。
[0103]
以第一阶段算法为差分进化算法,第二阶段算法为深度优先搜索算法为例,深度优先搜索算法重新进行资源分配,经过若干次迭代后得到当前调度方案。若当前情况达到终止条件,则终止算法,以当前调度方案作为整个算法的结果。如果当前调度方案未达到终止条件,则以该当前调度方案为基础,重新执行内层的差分进化算法和外层深度优先搜索算法,进行循环迭代,直至达到终止条件。
[0104]
本发明实施例提供的方法,通过采用内外层算法分开的双层嵌套循环算法,从而使项目调度更加灵活准确,增加项目调度方案的稳定性。
[0105]
基于上述任一实施例,图2是本发明提供的项目调度方法中步骤110的流程示意图,如图2所示,步骤110具体包括:
[0106]
步骤111,基于待调度项目的任务信息和资源信息,确定调度模型的约束条件;
[0107]
步骤112,基于约束条件和调度模型的调度目标,构建调度模型,调度目标包括待调度项目的工期最短。
[0108]
具体地,可以将项目调度问题拆解为项目任务排序和项目资源派遣的两阶段问题,调度模型的约束条件可以包括任务执行顺序约束和资源技能约束,调度目标可以包括待调度项目的工期最短,并以此构建调度模型。
[0109]
在一个实施例中,假设目前有两个待执行的项目m1和m2,m1中包含四个任务:011,012,013,014,且必须按照此顺序依次完成;m2中也包含的四个任务:021,022,023,024,且必须按此顺序依次完成。完成每个任务需要用到的标准时间如表6所示,即执行011任务需要5小时,执行023任务需要4小时。
[0110]
完成上述表6中的两个项目假设存在r1和r2两个可分配的资源。每个资源能完成的任务不同,如表7所示,r1不可完成012任务,r2不可完成014任务。r1,r2根据熟练度的不同,完成每个任务的技能水平也不相同。在示例中可以将技能水平分为三个等级,通过时间效率表示:1,0.8,0.5,数字越低表示技能等级越高。例如,对于011任务,标准完成时间为5小时,r1完成需要标准完成时间*自身完成时间效率,即5*1,共5小时;r2完成则需要5*0.8共4小时。显然,单就011这一个任务,安排r2完成时间更短,效率更高。
[0111]
表6
[0112][0113][0114]
表7
[0115][0116]
根据表6中示出的任务执行顺序约束和每个任务所需时长约束,以及表7中示出的资源技能水平约束,可以构建以项目工期最短的调度模型。
[0117]
本发明实施例提供的方法,可以根据项目的任务信息和资源信息,以及项目目标构建调度模型,由此构建的调度模型对复杂的项目工期进行合理排期,对资源进行准确派遣,能在极大程度上优化项目完工时间,提高企业的生产效率。
[0118]
基于上述任一实施例,任务信息包括:各任务执行顺序的强制关系和完成各任务需要用到的标准时间;资源信息包括各资源的技能水平。
[0119]
具体地,通常情况下,往往有多个项目在同时进行,每个项目内有若干任务需要完成,任务之间通常存在依赖关系,即先后执行顺序的强制关系。项目个数是已知信息,项目中的任务以及任务之间的依赖关系是可以根据以往项目经验获得。参与这些项目的资源由
项目管理者进行分配,但需保证每个任务都有资源可以完成。每个资源可以完成的任务,即各资源的技能水平由资源本身决定,也是已知信息。
[0120]
因此,项目中的任务信息和资源信息均可以通过具体的项目确定。本发明实施例提供的方法,给出考虑资源对于不同工作任务技能存在差异的派遣策略,对复杂的项目工期进行合理排期,对资源进行准确派遣,能在极大程度上优化项目完工时间,提高企业的生产效率。
[0121]
基于上述任一实施例,图3是本发明提供的项目调度方法的流程示意图之二,以内层采用差分进化算法(de),外层采用深度优先搜索算法(dfs)为例,如图3所示,该方法包括:
[0122]
步一:根据实际项目调度问题,确定任务数量、任务依赖关系、资源数量,构建调度模型。
[0123]
步二:随机生成初始调度方案,设置差分进化算法控制参数,例如初始种群规模、缩放因子、交叉概率、迭代次数,并将初始调度方案输入内层de算法,生成初始基因。
[0124]
步三:根据初始的调度方案,固定资源分配部分,仅针对任务基因进行de算法求解,改变任务执行顺序,达到第一迭代次数后,输出新的满意组合解。
[0125]
步四:对de算法输出的组合解解读任务顺序信息,固定当前的任务顺序,通过深度优化搜索算法,更新任务的执行资源,即改变资源分配部分,达到第二迭代次数后,输出当前调度方案。
[0126]
步五:将当前调度方案,代入到步三继续循环迭代。若达到终止条件,则以当前调度方案作为算法结果,得到最终调度方案。
[0127]
本发明实施例提出的考虑资源技能水平的柔性资源项目调度优化双层嵌套循环搜索算法,使搜索的结果更加灵活准确,同时进一步考虑了资源的技能差异,能增加项目调度计划的稳定性。
[0128]
下面对本发明提供的项目调度装置进行描述,下文描述的项目调度装置与上文描述的项目调度方法可相互对应参照。图4是本发明提供的项目调度装置的结构示意图,如图4所示,该装置包括:
[0129]
调度模型构建单元410,用于基于待调度项目的任务信息和资源信息,构建调度模型;
[0130]
调度方案生成单元420,用于在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;
[0131]
其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
[0132]
本发明实施例提供的项目调度装置,基于构建的调度模型,采用嵌套循环优化方法对项目资源分配部分和任务顺序进行优化,使得资源到任务的分配更具针对性,实现了精细化的项目调度,有助于提高项目完成效率。
[0133]
尤其是在将上述项目调度方法应用在资源信息为柔性资源的情况下,在固定任务顺序部分而对资源分配部分进行优化的过程中,能够更多考虑资源技能水平的调度策略,对资源进行准确分配。
[0134]
基于上述实施例,调度方案生成单元420进一步用于:
[0135]
在上一调度方案中的一部分固定不变的情况下,基于所述调度模型和第一阶段算法对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型和第二阶段算法对所述上一调度方案中的一部分进行优化,得到当前调度方案;
[0136]
所述第一阶段算法和所述第二阶段算法为不同的优化算法。
[0137]
基于上述实施例,调度方案生成单元420进一步用于:
[0138]
在上一调度方案中的资源分配部分固定不变的情况下,基于所述调度模型和第一阶段算法,迭代调整所述任务顺序部分,直至达到第一迭代次数,得到资源分配部分固定不变情况下的任务顺序部分优化解;所述第一阶段算法为差分进化算法。
[0139]
基于上述实施例,调度方案生成单元420进一步用于:
[0140]
在所述任务顺序部分优化解固定不变的情况下,基于所述调度模型和第二阶段算法,迭代调整所述资源分配部分,直至达到第二迭代次数,得到当前调度方案;所述第二阶段算法为深度优先搜索算法。
[0141]
基于上述实施例,调度方案生成单元420进一步用于:
[0142]
若所述当前调度方案满足预设终止条件,则确定所述当前调度方案为所述最终调度方案;
[0143]
若所述当前调度方案不满足所述预设终止条件,则将所述当前调度方案作为上一调度方案进行优化,直至优化后的当前调度方案满足所述预设终止条件。
[0144]
基于上述实施例,调度模型构建单元410进一步用于:
[0145]
基于所述待调度项目的任务信息和资源信息,确定所述调度模型的约束条件;
[0146]
基于所述约束条件和所述调度模型的调度目标,构建调度模型,所述调度目标包括所述待调度项目的工期最短。
[0147]
基于上述实施例,调度模型构建单元410进一步用于:
[0148]
所述任务信息包括:各任务执行顺序的强制关系和完成各任务所需的标准时间;所述资源信息包括各资源对应各任务的技能水平。
[0149]
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行项目调度方法,该方法包括:基于待调度项目的任务信息和资源信息,构建调度模型;在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
[0150]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以
使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0151]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的项目调度方法,该方法包括:基于待调度项目的任务信息和资源信息,构建调度模型;在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
[0152]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的项目调度方法,该方法包括:基于待调度项目的任务信息和资源信息,构建调度模型;在上一调度方案中的一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的另一部分进行优化,并在优化后的另一部分固定不变的情况下,基于所述调度模型对所述上一调度方案中的一部分进行优化,得到当前调度方案,并将所述当前调度方案作为上一调度方案进行优化,直至得到最终调度方案;其中,调度方案包括两部分,分别为资源分配部分和任务顺序部分。
[0153]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0154]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0155]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。