本发明涉及自动排班技术领域,尤其涉及一种基于样板的公平性自动排班方法。
背景技术:
在当今社会环境下,对于生产效益依赖于员工的有效运作的大中型企业来说,生成一张排班表不仅需要考虑工作负载,同时还需要考虑员工自身的技术水平和需求等因素。多约束排班问题是极为复杂的,属于np完全问题。人工排班需要经过一次次的修改方能生成合理的排班表,非常耗时,管理效率也极为低下,而目前仍有许多企业在使用人工排班。如何在多个约束条件下快速简便地进行排班仍然是本领域技术人员尚未解决的技术问题。
技术实现要素:
鉴于此,本发明的目的在于提供一种基于样板的公平性自动排班方法,以克服或至少部分解决现有技术所存在的上述问题。
本发明第一方面提供一种基于样板的公平性自动排班方法,包括以下步骤:
s1、获取排班基础信息设定值、班次样板和班次人数信息,所述班次样板包括个人的优先班次样板、全体的禁止班次样板和个人的禁止班次样板中的一种或多种;
s2、获取排班周期信息及相应周期内参与排班的员工信息;
s3、获取上一周期的排班数据并计算个人休息天数的欠补数值;
s4、基于步骤s1-s3所获取数据通过迭代计算进行自动排班;
s5、根据自动排班结果生成排班表。
进一步的,步骤s1中,所述排班基础信息包括资格信息、技能信息、员工信息、班次信息、最大连续工作日数中的一种或多种;所述班次人数信息包括指定班次中指定资格所需最小和最大人数、指定班次中指定技能所需最小和最大人数。
进一步的,步骤s2中,所述排班周期信息及相应周期内参与排班的员工信息具体包括:日期信息、员工组信息、指定员工指定日无效信息、指定员工指定日期望班次信息、周期内指定员工指定班次所需最小和最大次数、周期内指定日指定班次所需最小和最大人数。
进一步的,步骤s3中上一周期的排班数据包括补偿休息日的班次信息、普通休息日的班次信息、指定员工指定日的班次信息。
进一步的,所述步骤s4具体包括以下步骤:
s41、对设定了优先班次样板的员工通过迭代计算进行补足排班;
s42、对设定了优先班次样板的员工通过迭代计算进行优先排班;
s43、对每日指定班次所需最小人数通过迭代计算进行自动排班;
s44、对每位员工指定班次所需最小次数通过迭代计算进行自动排班;
s45、对每位员工指定日期望班次通过迭代计算进行自动排班。
进一步的,所述步骤s41具体包括以下步骤:
s411、初始化表示每位员工的补足标志f(p);
s412、获取适合优先班次样板补足的员工集合lp,并根据权重从大到小排序;
s413、判断lp是否为空,若为空则执行步骤s42,若不为空则从lp中移除第一位员工pidx并获取该员工的优先班次样板的补足部分t补(p);
s414、检查该员工在周期第一天是否可以按照优先班次样板的补足部分排班,检查结果表示为r;
s415、判断r是否为真,若r为真,则该员工在周期第一天按照优先班次样板补足部分排班,执行步骤s412,若r为假,执行步骤s413。
进一步的,所述步骤s42具体包括以下步骤:
s421、获取日期集合ld,并根据权重从大到小进行排序;
s422、判断ld是否为空,若为空则执行步骤s43,若不为空则从ld中移除第一个日期didx,并初始化didx对应的班次信息m;
s423、判断m是否为空,若为空则执行步骤s422,若不为空则从m中移除第一个班次midx;
s424、检查日期didx班次midx是否满足所需最小人数,检查结果表示为r1;
s425、判断检查结果r1是否为真,若r1为真,则执行步骤s423,若r1为假,获取设定了优先班次样板的员工集合lp,lp根据权重从大到小排序;
s426、判断lp是否为空,若lp为空,则执行步骤s423,若lp不为空,则从lp中移除第一位员工pidx;
s427、检查员工pidx在日期didx是否可以按照该优先班次样板安排,检查结果表示为r2;
s428、判断检查结果r2是否为真,若r2为真,则员工pidx在日期didx按照该优先班次样板安排,执行步骤s424,若r2为假,执行步骤s426。
进一步的,所述步骤s43具体包括以下步骤:
s431、获取日期集合ld,ld根据权重从大到小进行排序;
s432、判断ld是否为空,若ld为空则执行步骤s44,若ld不为空,则从ld中移除第一个日期didx,并初始化didx对应的班次信息m;
s433、判断m是否为空,若m为空,则执行步骤s432,若m不为空,则从m中移除第一个班次midx;
s434、检查日期didx班次midx是否满足所需最小人数,检查结果表示为r3;
s435、判断r3是否为空,若r3为真,则执行步骤s433,若r3为假,获取设定了优先班次样板的员工集合lp,lp根据权重从大到小排序;
s436、判断lp是否为空,若lp为空,执行步骤s433,若lp不为空,则从lp中移除第一位员工pidx;
s437、检查员工pidx在日期didx是否可以按照该优先班次样板安排,检查结果表示为r4;
s438、判断r4是否为真,若r4为真则员工pidx在日期didx按照该优先班次样板排班,执行步骤s434,若r4为假,执行步骤s436。
进一步的,所述步骤s44具体包括以下步骤:
s441、初始化班次信息m;
s442、判断m是否为空,若m为空,执行步骤s45,若m不为空,则从m中移除第一个班次midx;
s443、获取班次midx所需最小次数不足的员工集合lp,lp根据权重从大到小进行排序;
s444、判断lp是否为空,若lp为空,则执行步骤s442,若lp不为空,则从lp中移除第一位员工pidx;
s445、获取员工pidx未安排班次的日期集合ld,ld随机排序;
s446、判断ld是否为空,若ld为空,则执行步骤s444,若ld不为空,则从ld中移除第一个日期didx;
s447、检查员工pidx在日期idx是否可以安排该班次,检查结果表示为r5;
s448、判断r5是否为真,若r5为真,则员工pidx在日期didx安排该班次,若r5为假,执行步骤s446;
s449、检查员工pidx该班次是否满足所需最小次数,检查结果表示为r6;
s4410、判断r6是否为真,若r6为真,执行步骤s444,若r6为假,执行步骤s446。
本发明第二方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现前述第一方面所述的方法。
与现有技术相比,本发明的有益效果是:
本发明所提供的一种基于样板的公平性自动排班方法,首先获取排班基础信息、班次样板、班次人数信息、排班周期信息等多个约束条件,并获取上一周期的排班数据,计算不同员工个人休息天数的欠补数值,再进行多次迭代计算生成以公平性为前提的自动排班结果,从而实现在多个约束条件下快速生成相应的排班表,所述方法有助于降低排班所需投入的人力成本,提高员工排班管理的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的优选实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于样板的公平性自动排班方法整体流程示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所列举实施例只用于解释本发明,并非用于限定本发明的范围。
参照图1,本发明实施例提供一种基于样板的公平性自动排班方法,所述方法包括以下步骤:
s1、获取排班基础信息设定值、班次样板和班次人数信息,所述班次样板包括个人的优先班次样板t(p)、全体的禁止班次样板b1和个人的禁止班次样板b2(p)中的一种或多种。
示例性地,所述排班基础信息包括资格信息q、技能信息s、员工信息p、班次信息m和最大连续工作日数w。所述班次人数信息包括指定班次中指定资格所需最小人数n3(m)(q)和最大人数n4(m)(q)、指定班次中指定技能所需最小人数n5(m)(s)和最大人数n6(m)(s)。所述排班基础信息设定值、班次样板和班次人数信息可以是负责管理员工排班的用户通过客户端输入,由客户端发送至服务器,也可以是服务器主动从指定位置获取,所述指定位置包括但不限于数据库、其他服务器等。
s2、获取排班周期信息及相应周期内参与排班的员工信息。
示例性地,所述排班周期信息及相应周期内参与排班的员工信息具体包括:日期信息d、员工组信息g(p)、指定员工指定日无效信息i(p)(d)、周期内指定员工指定班次所需最小次数c7(p)(m)和最大次数c8(p)(m)、周期内指定日指定班次所需最小人数n9(d)(m)和最大人数n10(d)(m)。所述排班周期信息以及相应周期内参与排班的员工信息可以是负责管理员工排班的用户通过客户端输入,由客户端发送至服务器,也可以是服务器主动从指定位置获取,所述指定位置包括但不限于数据库、其他服务器等。
s3、获取上一周期的排班数据并计算个人休息天数的欠补数值。
示例性地,所述上一周期的排班数据包括补偿休息日的班次信息m补休、普通休息日的班次信息m普休、指定员工指定日的班次信息m(p)(d)。个人休息天数的欠补数值u(p)通过下式计算:
其中,m普休(pm)(dn)表示第m个员工第n个普通休息日的班次,m普休(p)(dn)表示指定员工第n个普通休息日的班次,m补休(p)(dn)表示指定员工第n个补偿休息日的班次。
s4、基于步骤s1-s3所获取数据通过迭代计算进行自动排班。
s5、根据自动排班结果生成排班表。
作为本实施例的一种可选实施方式,所述步骤s4具体包括以下步骤:
s41、对设定了优先班次样板的员工通过迭代计算进行补足排班;
s42、对设定了优先班次样板的员工通过迭代计算进行优先排班;
s43、对每日指定班次所需最小人数通过迭代计算进行自动排班;
s44、对每位员工指定班次所需最小次数通过迭代计算进行自动排班;
s45、对每位员工指定日期望班次通过迭代计算进行自动排班。
作为本实施例进一步的一种可选实施方式,所述步骤s41具体包括以下步骤:
s411、初始化表示每位员工的补足标志f(p)。
s412、获取适合优先班次样板补足的员工集合lp,并对lp中的元素根据权重从大到小排序。
示例性地,计算lp中元素权重的权重函数为f(t(p),g(p),m(p)(d),f(p))。
s413、判断lp是否为空,若为空则执行步骤s42,若不为空则从lp中移除第一位员工pidx并获取该员工的优先班次样板的补足部分t补(p)。
s414、检查该员工在周期第一天是否可以按照优先班次样板的补足部分排班,检查结果表示为r。
示例性地,用于获得检查结果r的检查结果函数表示为:
f(pidx,d1,midx,t补(p),b1,b2(p),n4(m)(q),n6(m)(s),i(p)(d),h(p)(d),c8(p)(m),n10(d)(m))。
s415、判断r是否为真,若r为真,则该员工在周期第一天按照优先班次样板补足部分排班,执行步骤s412,若r为假,执行步骤s413。
作为本实施例进一步的一种可选实施方式,所述步骤s42具体包括以下步骤:
s421、获取日期集合ld,并对ld中元素根据权重从大到小进行排序。
示例性地,计算ld中元素权重的权重函数为f(m(p)(d),n9(d)(m),n10(d)(m))。
s422、判断ld是否为空,若为空则执行步骤s43,若不为空则从ld中移除第一个日期didx,并初始化didx对应的班次信息m。
s423、判断m是否为空,若为空则执行步骤s422,若不为空则从m中移除第一个班次midx。
s424、检查日期didx班次midx是否满足所需最小人数,检查结果表示为r1。用于获得检查结果r1的检查结果函数表示为:
r1=∑midx(pn)(didx)≥n9(didx)(midx)。
s425、判断检查结果r1是否为真,若r1为真,则执行步骤s423,若r1为假,获取设定了优先班次样板的员工集合lp,lp中元素根据权重从大到小排序。
示例性地,步骤s425中计算lp中元素权重的权重函数表达式为:
f(didx,midx,t(p),g(p),m(p)(d),c7(p)(m),c8(p)(m),u(p))。
s426、判断lp是否为空,若lp为空,则执行步骤s423,若lp不为空,则从lp中移除第一位员工pidx。
s427、检查员工pidx在日期didx是否可以按照该优先班次样板安排,检查结果表示为r2。用于获得检查结果r2的检查结果函数表示为:
f(pidx,didx,midx,t(p),b1,b2(p),n4(m)(q),n6(m)(s),i(p)(d),h(p)(d),c8(p)(m),n10(d)(m))。
s428、判断检查结果r2是否为真,若r2为真,则员工pidx在日期didx按照该优先班次样板安排,执行步骤s424,若r2为假,执行步骤s426。
作为本实施例进一步的一种可选实施方式,所述步骤s43具体包括以下步骤:
s431、获取日期集合ld,ld中元素根据权重从大到小进行排序。
示例性地,计算ld中元素权重的权重函数表达式为:f(m(p)(d),n9(d)(m),n10(d)(m))。
s432、判断ld是否为空,若ld为空则执行步骤s44,若ld不为空,则从ld中移除第一个日期didx,并初始化didx对应的班次信息m。
s433、判断m是否为空,若m为空,则执行步骤s432,若m不为空,则从m中移除第一个班次midx。
s434、检查日期didx班次midx是否满足所需最小人数,检查结果表示为r3。用于获得检查结果r3的检查结果函数表示为:
r3=∑midx(pn)(didx)≥n9(didx)(midx)。
s435、判断r3是否为空,若r3为真,则执行步骤s433,若r3为假,获取设定了优先班次样板的员工集合lp,lp中元素根据权重从大到小排序。
示例性地,计算lp中元素权重的函数表达式为:
f(didx,midx,g(p),m(p)(d),n3(m)(q),n5(m)(s),c7(p)(m),c8(p)(m),u(p))。
s436、判断lp是否为空,若lp为空,执行步骤s433,若lp不为空,则从lp中移除第一位员工pidx。
s437、检查员工pidx在日期didx是否可以按照该优先班次样板安排,检查结果表示为r4。用于获得检查结果r4的检查结果函数表示为:
f(pidx,didx,midx,b1,b2(p),n4(m)(q),n6(m)(s),i(p)(d),h(p)(d),c8(p)(m),n10(d)(m))。
s438、判断r4是否为真,若r4为真则员工pidx在日期didx按照该优先班次样板排班,执行步骤s434,若r4为假,执行步骤s436。
作为本实施例进一步的一种可选实施方式,所述步骤s44具体包括以下步骤:
s441、初始化班次信息m。
s442、判断m是否为空,若m为空,执行步骤s45,若m不为空,则从m中移除第一个班次midx。
s443、获取班次midx所需最小次数不足的员工集合lp,lp中元素根据权重从大到小进行排序。
示例性地,计算lp中元素权重的函数表达式为:f(midx,p,u(p),m(p)(d),c7(p)(m),c8(p)(m))。
s444、判断lp是否为空,若lp为空,则执行步骤s442,若lp不为空,则从lp中移除第一位员工pidx。
s445、获取员工pidx未安排班次的日期集合ld,ld随机排序。
s446、判断ld是否为空,若ld为空,则执行步骤s444,若ld不为空,则从ld中移除第一个日期didx。
s447、检查员工pidx在日期idx是否可以安排该班次,检查结果表示为r5。用于获得检查结果r5的检查结果函数表示为:
f(pidx,didx,midx,b1,b2(p),n4(m)(q),n6(m)(s),i(p)(d),h(p)(d),c8(p)(m),n10(d)(m))。
s448、判断r5是否为真,若r5为真,则员工pidx在日期didx安排该班次,若r5为假,执行步骤s446。
s449、检查员工pidx该班次是否满足所需最小次数,检查结果表示为r6。用于获得检查结果r6的检查结果函数表示为:
r6=∑midx(pidx)(dn)≥c7(pidx)(midx)。
s4410、判断r6是否为真,若r6为真,执行步骤s444,若r6为假,执行步骤s446。
基于与前述方法实施例相同的发明构思,本发明另一实施例提供一种基于样板的公平性自动排班系统,所述系统包括服务器和客户端,所述服务器和客户端之间通信连接。所述服务器包括:
第一获取模块,用于获取排班基础信息设定值、班次样板和班次人数信息,所述班次样板包括个人的优先班次样板、全体的禁止班次样板和个人的禁止班次样板中的一种或多种;
第二获取模块,用于获取排班周期信息及相应周期内参与排班的员工信息;
第三获取模块,用于获取上一周期的排班数据并计算个人休息天数的欠补数值;
自动排班模块,用于基于步骤s1-s3所获取数据通过迭代计算进行自动排班;
生成模块,用于根据自动排班结果生成排班表并发送至各个员工对应的客户端。
所述系统用于执行前述方法实施例,其工作原理和有益效果可参考前述方法实施例,在此不再赘述。
本发明另一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。