利用遗传算法在自动排班中安排非业务活动的方法及系统与流程

文档序号:12825842阅读:292来源:国知局
利用遗传算法在自动排班中安排非业务活动的方法及系统与流程

本发明涉及一种遗传算法应用领域,特别是涉及一种利用遗传算法在自动排班中安排非业务活动的方法及系统。



背景技术:

排班是合理安排上班人力的重要手段,在所有企业中均广泛应用。排班主要是根据公司实际业务发展需要,合理的安排各个时间段内上班人力,保证满足公司业务需求,且又不引起人力资源的浪费。一般企业中大都由管理人员或者专门的排班师进行手动排班,该工作方式存在天然缺陷:

1、排班结果难以量化比较,排班人员的经验、技能、应变能力等各方面的综合素质都会影响排班结果。

2、排班的效率低、耗时长,对排班人员的工作压力提出较高要求。

3、每个排班人员有自己的排班风格和偏好,会引起排班结果存在较大差异,对上班员工的自我调节能力存在一定的考验。

为了避免手工排班上述诸多缺点,采用计算机自动排班,可以在各个维度上进行量化比较,避免排班人员的经验、技能、偏好而导致的排班结果差异。

业内计算机自动排班算法中,遗传算法是一种较成熟且有成功案例的算法,但该算法存在一些天生的缺点:遗传算法适合在低维度上进行随机搜索,如果扩展到高纬度上时,很容易导致算法在迭代过程中发散,且收敛空间难以确定。

很多企业实际排班过程中,不但要安排各个班次的上下班时间,还需安排各个班次吃饭、休息等其他活动的开始、结束时间。如果所有活动的安排步骤均在遗传迭代过程中通过随机搜索实现,必将导致遗传算法在高纬度进行搜索,使最终结果无法收敛。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中企业在实际排班过程中,对所有活动的安排均在遗传迭代过程中通过随机搜索实现,导致遗传算法在高纬度进行搜索,使最终结果无法收敛的缺陷,提供一种利用遗传算法在自动排班中安排非业务活动的方法及系统。

本发明是通过下述技术方案来解决上述技术问题的:

本发明的目的在于提供了一种利用遗传算法在自动排班中安排非业务活动的方法,其特点在于,包括以下步骤:

s1、利用遗传算法通过交叉、变异生成每代遗传中的每个个体,获得非业务活动时间段内的冗余人力;

s2、计算在一开始时间到一结束时间之内安排非业务活动的组的集合;

s3、计算所述集合内所有组安排非业务活动所消耗的人力总量;

s4、计算在所述开始时间到所述结束时间之内,安排所有组的非业务活动后的冗余人力;

s5、计算在所述开始时间到所述结束时间之内安排非业务活动之后的人力;

s6、计算在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

较佳地,步骤s1中利用以下公式计算非业务活动时间段内的冗余人力:

di=ai-fi,ibegin≤i≤iend;

其中di表示冗余人力,ai表示安排非业务活动之前每个时间段的实际人力,fi表示每个时间段的预测人力,ibegin表示开始时间,iend表示结束时间。

较佳地,步骤s3中利用以下公式计算人力总量:

其中,labor表示人力总量,lj表示每个待安排非业务活动的组的人员数目,g表示所述集合。

较佳地,步骤s4中利用以下公式计算安排所有组的非业务活动后的冗余人力:

其中r表示安排所有组的非业务活动后的冗余人力。

较佳地,步骤s5中利用以下公式计算人力:

其中ai表示在所述开始时间到所述结束时间之内安排非业务活动之后的人力。

较佳地,步骤s6中利用以下公式计算人力:

di=ai-ai;

其中di表示在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

本发明的目的在于还提供了一种利用遗传算法在自动排班中安排非业务活动的系统,其特点在于,包括:

第一计算模块,用于利用遗传算法通过交叉、变异生成每代遗传中的每个个体,获得非业务活动时间段内的冗余人力;

第二计算模块,用于计算在一开始时间到一结束时间之内安排非业务活动的组的集合;

第三计算模块,用于计算所述集合内所有组安排非业务活动所消耗的人力总量;

第四计算模块,用于计算在所述开始时间到所述结束时间之内,安排所有组的非业务活动后的冗余人力;

第五计算模块,用于计算在所述开始时间到所述结束时间之内安排非业务活动之后的人力;

第六计算模块,用于计算在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

较佳地,所述第一计算模块利用以下公式计算非业务活动时间段内的冗余人力:

di=ai-fi,ibegin≤i≤iend;

其中di表示冗余人力,ai表示安排非业务活动之前每个时间段的实际人力,fi表示每个时间段的预测人力,ibegin表示开始时间,iend表示结束时间。。

较佳地,所述第三计算模块利用以下公式计算人力总量:

其中,labor表示人力总量,lj表示每个待安排非业务活动的组的人员数目,g表示所述集合。

较佳地,所述第四计算模块利用以下公式计算安排所有组的非业务活动后的冗余人力:

其中r表示安排所有组的非业务活动后的冗余人力。

较佳地,所述第五计算模块利用以下公式计算人力:

其中ai表示在所述开始时间到所述结束时间之内安排非业务活动之后的人力。

较佳地,所述第六计算模块利用以下公式计算人力:

di=ai-ai;

其中di表示在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

本发明的积极进步效果在于:本发明在排班过程中通过局部优化的思想来安排吃饭、休息等非业务活动,从而可以避免遗传算法的高纬度搜索,确保算法结果的收敛,并且用固定的逻辑安排上班过程中的其他非业务活动的时间,保证安排结果的客观和公平。

附图说明

图1为本发明的实施例1的利用遗传算法在自动排班中安排非业务活动的方法的流程图。

图2为本发明的实施例2的利用遗传算法在自动排班中安排非业务活动的系统的模块示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

如图1所示,本实施例的利用遗传算法在自动排班中安排非业务活动的方法包括以下步骤:

步骤101、利用遗传算法通过交叉、变异生成每代遗传中的每个个体,获得非业务活动时间段内的冗余人力;

步骤102、计算在一开始时间到一结束时间之内安排非业务活动的组的集合;

步骤103、计算所述集合内所有组安排非业务活动所消耗的人力总量;

步骤104、计算在所述开始时间到所述结束时间之内,安排所有组的非业务活动后的冗余人力;

步骤105、计算在所述开始时间到所述结束时间之内安排非业务活动之后的人力;

步骤106、计算在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

其中,优选地,步骤101中利用以下公式计算非业务活动时间段内的冗余人力:

di=ai-fi,ibegin≤i≤iend;

其中di表示冗余人力,ai表示安排非业务活动之前每个时间段的实际人力,fi表示每个时间段的预测人力,ibegin表示开始时间,iend表示结束时间。

步骤103中利用以下公式计算人力总量:

其中,labor表示人力总量,lj表示每个待安排非业务活动的组的人员数目,g表示所述集合。

步骤104中利用以下公式计算安排所有组的非业务活动后的冗余人力:

其中r表示安排所有组的非业务活动后的冗余人力。

步骤105中利用以下公式计算人力:

其中ai表示在所述开始时间到所述结束时间之内安排非业务活动之后的人力。

步骤106中利用以下公式计算人力:

di=ai-ai;

其中di表示在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

本发明的主要思想如下:

自动排班算法采用遗传算法实现,排班的粒度以组为单位,每组的人力预先设定。每次排班周期为周,人力预测精确到15分钟,每周的人力预测数据有672点,排班的目的就是使一周之内672个时间段的实际人力分布和预测人力尽量的匹配。遗传算法中每个个体的适应度函数为:

每个个体的适应度为每个个体所有时间段内实际人力和预测人力差值的平方和,适应度越小表示该个体越优秀。

数学上有如下规则:

前提下,所有ai=s/n时,的值最小。

以此为基础:

对应每个交叉变异完成后的个体,其fi和ai均为已知值,表示在ibegin到iend时间段内,所有组安排非业务活动所消耗的人力总和。对于某个个体来说,其要安排非业务活动的组、每组的人力均已知,可精确计算这些组非业务活动所消耗的人力总和,即上面公式右边是一个恒定量。为使得在非业务活动时间段内的人力分布对个体总适应度影像最小,则需满足:

通过上式即可针对每个个体计算在非业务活动时间段内可以消耗的人力di;

因此,上述公式要求fi-ai为某一恒定值,即安排非业务活动之后的实际人力分布应该和预测人力之间的差值恒定。

在本实施例中,每个组的上下班时间由遗传算法随机搜索生成,每个组的非业务活动时间由上述局部优化方法进行安排。

而加入局部优化思想后的遗传算法,其具体步骤如下:

1.择优交叉:计算每一代中所有解的适应度,根据每个解的适应度择优(按概率)选择合适的父代,通过随机交叉两个父代的方式计算得到下一代所有解。(说明:计算下一代的每个解均需重新按概率随机选择其父代)。

2.变异:在实际的业务所约束的调整范围内,随机调整各个组的上班时间和上班时长。

3.全局调整:调整各个班次的上班时间和上班时长,达到每天各个组的班次平衡,保证公平公正。

4.局部优化:安排非业务活动,根据上述的原理,计算出每个解可以安排非业务活动的人力分布。将需要安排此项活动的组按预定的规则排序,依次安排每个组参加该活动的时间。

说明:上述步骤中的2、3、4在遗传算法过程中,每代的所有解均需独立操作,某代中每个解都是一个独立的个体,针对每个个体都要变异、调整平衡、安排非业务活动之后,再参加下一代遗传的择优。

上述说明存在以下情况,由于非业务活动会占用2个时间段,即要求di、di+1均大于待安排非业务活动的组的人力时,才可以在i时间安排该组开始非业务活动。这将使得某些计划用来安排非业务活动的人力资源被浪费掉,从而导致在所有用于非业务活动的人力资源都消耗殆尽时,仍然存在少部分组没有安排非业务活动的情况。此时需将已经安排过非业务活动的组全部回滚,并修正di(一般将所有的di加上所有组的平均人力)后重新安排非业务活动,该回滚修正过程可以重复多次,直到所有组都安排完非业务活动为止。

上述的回滚修正过程为遗传算法局部优化步骤中的子过程,请具体步骤如下:

1、在安排非业务活动之前,备份对应的解、可以安排该非业务活动的人力分布。

2、所有需安排非业务活动的组,按预定规则排序后,依次安排每个组参加该非业务活动的时间,直至可以使用的人力资源耗尽。

3、如果此时所有待安排的组均已安排,则局部优化步骤完成。若仍存在少数组未能安排参与,则恢复可安排非业务活动的人力分布和安排非业务活动之前的解,并在安排非业务活动的人力分布的每个时间段上增加所有组的平均人力(即安排非业务活动的人力分布整体向上平移,增加可用的人力资源总量),重新执行上述步骤,直至所有组都已被安排。

上述的局部优化的算法,带有强制安排非业务活动思想,即在人力资源不足时也会强制安排非业务活动(此时fi-ai为负值),在遗传算法迭代过程中,每一代的所有个体强制进行上述的安排非业务活动步骤,在择优产生子代的过程中fi-ai趋于0的解会被优先选中,经过数百代的遗传后,最优个体的fi-ai将趋于0,即安排非业务活动后的人力分布已经非常接近预测值。

对于上班过程中的休息、noshow等活动也可用同样的思想安排,若遇到80%的组要安排休息等特殊需求时,可以在上述步骤3中计算休息所消耗的人力时,乘以相应的系数即可,在后续的安排过程中,可用人力资源耗尽,即可退出,完成各组休息、noshow时间的安排。

实施例2

如图2所示,本实施例提供了一种利用遗传算法在自动排班中安排非业务活动的系统,包括第一计算模块1、第二计算模块2、第三计算模块3、第四计算模块4、第五计算模块5以及第六计算模块6;

其中,所述第一计算模块1用于利用遗传算法通过交叉、变异生成每代遗传中的每个个体,获得非业务活动时间段内的冗余人力;

所述第二计算模块2用于计算在一开始时间到一结束时间之内安排非业务活动的组的集合;

所述第三计算模块3用于计算所述集合内所有组安排非业务活动所消耗的人力总量;

所述第四计算模块4用于计算在所述开始时间到所述结束时间之内,安排所有组的非业务活动后的冗余人力;

所述第五计算模块5用于计算在所述开始时间到所述结束时间之内安排非业务活动之后的人力;

所述第六计算模块6用于计算在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

其中,优选地,所述第一计算模块1利用以下公式计算非业务活动时间段内的冗余人力:

di=ai-fi,ibegin≤i≤iend;

其中di表示冗余人力,ai表示安排非业务活动之前每个时间段的实际人力,fi表示每个时间段的预测人力,ibegin表示开始时间,iend表示结束时间。

所述第三计算模块3利用以下公式计算人力总量:

其中,labor表示人力总量,lj表示每个待安排非业务活动的组的人员数目,g表示所述集合。

所述第四计算模块4利用以下公式计算安排所有组的非业务活动后的冗余人力:

其中r表示安排所有组的非业务活动后的冗余人力。

所述第五计算模块5利用以下公式计算人力:

其中ai表示在所述开始时间到所述结束时间之内安排非业务活动之后的人力。

所述第六计算模块6利用以下公式计算人力:

di=ai-ai;

其中di表示在所述开始时间到所述结束时间之内每个时间段内可安排非业务活动的人力。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1