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

航班签派员工排班的方法、装置、计算设备和存储介质与流程

2023-01-15 07:06:12 来源:中国专利 TAG:


1.本公开涉及航空领域,并且更具体地,涉及一种用于航班签派员工排班的方法、装置、计算设备和存储介质。


背景技术:

2.航班签派对于航空公司而言是不可或缺的环节。一般情况下,会针对航班签派设置许多席位,每个席位都负责一定范围内的航班签派工作(例如,有的席位负责国际航班签派工作,有的席位负责国内航班签派工作,等等),航班签派人员在上班时会被安排到某个席位上来处理相应的航班签派工作。由于航班是24小时都有的,所以每天24小时都需要有航班签派人员上班进行航班签派工作。每个席位通常都包括早班(例如,从大约早上6点到大约中午13点)和中班(例如,从大约中午13点到大约晚上22点),有的席位还包括晚班(例如,从大约晚上22点到大约次日早上6点)以处理晚间航班签派工作。一个任务可以是指一个席位在一天的一个班次需要一个员工完成的工作。当某席位在某天的某班次包括一个或多个任务时,需要向该席位安排相应一个或多个员工以完成所述一个或多个任务。就航班签派而言,任务最主要包括放行任务,即对航班进行签派放行的任务。实际中,还可包括其它类型的任务。例如,监控任务是在完成航班签派放行后对航班运行进行监控的任务,备份任务是预先被安排不上班待命并且在航班数量超出已有上班员工处理能力时上班的任务,见习任务是学生跟着经验丰富的航班签派人员学习的任务。
3.航班签派员工排班是指将与航班签派有关的任务分配给与航班签派有关的员工,使得每个任务都尽量被完成。由于存在各种各样的任务,每个任务都有相应的起止时间和资质要求等,而各个员工的休假安排和资质水平等也不尽相同,因此航班签派员工排班需要考虑的因素特别多且复杂。传统的航班签派员工排班主要依赖于有经验的排班人员来人为排班,但是这样通常会导致排班效率较低、考虑不周、容易出错。而且,一旦出现新的人员/任务变动,重新排班的成本较高。
4.因此,期望一种改进的用于航班签派员工排班的方法。


技术实现要素:

5.根据本公开的第一方面,提供了一种用于航班签派员工排班的方法,包括:
6.接收与航班签派有关的员工的员工数据、待排班时段内与航班签派有关的任务的任务数据、所述员工的历史工时数据、所述待排班时段内所述员工的占位与请假数据;
7.基于所述员工数据、所述任务数据和所述待排班时段分别构建员工集合i、班组集合g、任务集合j和日期集合d,其中员工i∈i,班组g∈g,任务j∈j,天d∈d;
8.基于所述员工数据、所述任务数据、所述历史工时数据和所述占位与请假数据,确定每个员工i在所述待排班时段内的目标工时t
iu

9.定义如下变量:
[0010][0011][0012][0013][0014][0015]
u1i为员工i在所述待排班时段内被排班的工时不足目标工时t
iu
的部分,其中u1i≥0,
[0016]
u2i为员工i在所述待排班时段内被排班的工时超过目标工时t
iu
的部分,其中u2i≥0,
[0017]vgb
为班组g在天d的上班人数与不上班人数之差的绝对值与班组g的总人数qg之间的差的绝对值,其中0≤v
gd
≤qg;
[0018]
通过以下操作构建整数规划模型:
[0019]
设置如下约束:
[0020]
第一约束,要求对于任意一个员工i、对于任意一天d并且对于天d的任意一个任务j满足x
ij
≤y
id
z1
id-z2
id

[0021]
第二约束,要求对于任意一个任务j满足第二约束,要求对于任意一个任务j满足其中ij是员工集合i中的能够执行任务j的员工i的子集,
[0022]
第三约束,要求对于任意一个员工i满足第三约束,要求对于任意一个员工i满足其中j
i01
是任务集合j中的能够被员工i执行的处于第一时间段的班次的任务j的子集,j
i02
是任务集合j中的能够被员工i执行的处于与所述第一时间段连续的第二时间段的相邻班次的任务j的子集,
[0023]
第四约束,要求对于任意一个员工i满足其中ji是任务集合j中的能够被员工i执行的任务j的子集,tj是任务j的任务时长,t是针对所述待排班时段所要求的最大总工时,
[0024]
第五约束,要求对于任意一个员工i并且对于任意一天d满足其中r是最大连续工作天数,设置如下目标函数:
[0025]
min{∑
d∈d

i∈icd
·
(z1
id
z2
id
) ∑
i∈icu
·
(u1i u2i) ∑
d∈d

g∈gcgd
·vgd

j∈jcj
·
clj·imtj
},其中cd是临时调整为在天d上班或不上班的惩罚成本,cu是实际工时偏离目标工时的惩罚成本,c
gb
是同一班组g内的员工在天d工休不一致的惩罚成本,cj是任务j未被安排给任何员工的惩罚成本,imtj是任务j的重要性;以及
[0026]
求解所述整数规划模型并根据求解结果进行排班,所述排班指示任务j与员工i之
间的对应关系。
[0027]
根据本公开的第二方面,提供了一种用于航班签派员工排班的装置,包括:
[0028]
数据处理模块,被配置为:
[0029]
接收与航班签派有关的员工的员工数据、待排班时段内与航班签派有关的任务的任务数据、所述员工的历史工时数据、所述待排班时段内所述员工的占位与请假数据;
[0030]
基于所述员工数据、所述任务数据和所述待排班时段分别构建员工集合i、班组集合g、任务集合j和日期集合d,其中员工i∈i,班组g∈g,任务j∈j,天d∈d;
[0031]
基于所述员工数据、所述任务数据、所述历史工时数据和所述占位与请假数据,确定每个员工i在所述待排班时段内的目标工时t
iu

[0032]
定义如下变量:
[0033][0034][0035][0036][0037][0038]
u1i为员工i在所述待排班时段内被排班的工时不足目标工时t
iu
的部分,其中u1i≥0,
[0039]
u2i为员工i在所述待排班时段内被排班的工时超过目标工时t
iu
的部分,其中u2i≥0,
[0040]vgd
为班组g在天d的上班人数与不上班人数之差的绝对值与班组g的总人数qg之间的差的绝对值,其中0≤v
gd
≤qg;
[0041]
模型构建模块,被配置为通过以下操作构建整数规划模型:
[0042]
设置如下约束:
[0043]
第一约束,要求对于任意一个员工i、对于任意一天d并且对于天d的任意一个任务j满足x
ij
≤y
id
z1
id-z2
id

[0044]
第二约束,要求对于任意一个任务j满足第二约束,要求对于任意一个任务j满足其中ij是员工集合i中的能够执行任务j的员工i的子集,
[0045]
第三约束,要求对于任意一个员工i满足第三约束,要求对于任意一个员工i满足其中j
i01
是任务集合j中的能够被员工i执行的处于第一时间段的班次的任务j的子集,j
i02
是任务集合j中的能够被员工i执行的处于与所述第一时间段连续的第二时间段的相邻班次的任务j的子集,
[0046]
第四约束,要求对于任意一个员工i满足其中ji是任务集合j中的能够被员工i执行的任务j的子集,tj是任务j的任务时长,t是针对所述待排班时段所要求的最大总工时,
[0047]
第五约束,要求对于任意一个员工i并且对于任意一天d满足其中r是最大连续工作天数,设置如下目标函数:
[0048]
min{∑
d∈d

i∈icd
·
(z1
id
z2
id
) ∑
i∈icu
·
(u1i u2i) ∑
d∈d

g∈gcgd
·vgd

j∈jcj
·
clj·
imtj},其中cd是临时调整为在天d上班或不上班的惩罚成本,cu是实际工时偏离目标工时的惩罚成本,c
gd
是同一班组g内的员工在天d工休不一致的惩罚成本,cj是任务j未被安排给任何员工的惩罚成本,imtj是任务j的重要性;以及
[0049]
求解排班模块,被配置为求解所述整数规划模型并根据求解结果进行排班,所述排班指示任务j与员工i之间的对应关系。
[0050]
根据本公开的第三方面,提供了一种用于航班签派员工排班的计算设备,包括:一个或多个处理器;以及存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据本公开的第一方面的任一实施例所述的用于航班签派员工排班的方法。
[0051]
根据本公开的第四方面,提供了一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据本公开的第一方面的任一实施例所述的用于航班签派员工排班的方法。
[0052]
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
[0053]
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
[0054]
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
[0055]
图1是示出根据本公开的一些实施例的用于航班签派员工排班的方法的流程图;
[0056]
图2是示出根据本公开的一些实施例的用于航班签派员工排班的装置的示意性框图;
[0057]
图3是示出根据本公开的一些实施例的用于航班签派员工排班的计算设备的示意性框图。
[0058]
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0059]
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
[0060]
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
[0061]
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本公开的示例性方式,而不是穷尽的方式。
[0062]
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
[0063]
本公开通过为航班签派员工排班问题构建并求解整数规划模型,可以利用计算机技术自动进行航班签派员工排班,相比于人工排班具有显著提高的效率。下面将结合附图详细描述本公开的各种实施例。
[0064]
图1是示出根据本公开的一些实施例的用于航班签派员工排班的方法100的流程图。方法100例如可以通过计算机来实现。
[0065]
如图1所示,方法100可以包括在步骤s102处,接收与航班签派有关的员工的员工数据、待排班时段内与航班签派有关的任务的任务数据、所述员工的历史工时数据、所述待排班时段内所述员工的占位与请假数据。可以根据需要将待排班时段设置为任何合适的时间长度。例如,可以将待排班时段设置为未来一个月。所接收的这些数据例如可以是结构化的。在一些实施例中,员工数据可以包括每个员工的识别号、班组、部门、资质、资质有效期,任务数据可以包括每个任务的识别号、部门、席位、资质要求、日期、起止时间、任务时长、班次(例如,早班或中班或晚班),历史工时数据可以包括在待排班时段前一段时间(例如,前一个季度,或者前半年,或者前一年,等等)内每个员工的工时情况(例如,总工时和/或每月工时等),占位与请假数据包括每个员工在待排班时段内的预计无法上班(例如,因为请假、出差等原因)的情况。在一些实施例中,可以将资质划分为不同级别,每个资质级别的员工可以处理相应范围的航班签派工作。比如,资质级别高的员工既可以处理国际航班签派工作又可以处理国内航班签派工作,而资质级别低的员工可以处理国内航班签派工作而不能处理国际航班签派工作,等等。可以从多个不同维度来衡量资质。通常来讲,可以要求某个部门的任务由隶属该部门的资质满足该任务的资质要求并且资质有效期覆盖该任务的起止时间的员工来执行。
[0066]
方法100还可以包括在步骤104处,基于员工数据、任务数据和待排班时段分别构建员工集合i、班组集合g、任务集合j和日期集合d,其中员工i∈i,班组g∈g,任务j∈j,天d∈d。员工集合i可以包括与航班签派有关的所有员工i。班组集合g可以包括由与航班签派有关的员工组成的所有班组g。如前面已经提到的,就航班签派而言,任务最主要包括放行任务,即对航班进行签派放行的任务。实际中,有时还可能包括其它类型的任务,诸如监控任务、备份任务、见习任务等。任务集合j可以包括与航班签派有关的所有任务j(例如可以包括所有的放行任务,在一些情况下还可以额外包括监控任务、备份任务和见习任务等中的一种或多种类型的任务)。日期集合d可以包括待排班时段内的所有天d。
[0067]
方法100还可以包括在步骤106处,基于员工数据、任务数据、历史工时数据、占位与请假数据,确定每个员工i在待排班时段内的目标工时t
iu
。在一些实施例中,可以根据待
排班时段内的所有任务的总任务时长和有效员工数量计算平均每人次工时作为每个员工i在待排班时段内的目标工时在一些实施例中,所述有效员工数量可以等于员工集合i中的员工总数。在一些实施例中,所述有效员工数量可以基于员工集合i中的员工总数和每个员工的占位与请假数据来综合确定,例如有效员工数量可以等于那么可以理解,一个预计在待排班时段内全勤的员工相当于一个有效员工,一个预计在待排班时段内有三分之一时间无法上班(例如,由于请假/出差等)的员工相当于三分之二个有效员工,等等。在一些实施例中,可以在所述平均每人次工时的基础上根据每个员工i的历史工时情况进行调整以得到每个员工i在待排班时段内的目标工时t
iu
。例如,对于历史工时较长的员工i,目标工时t
iu
可以被确定成低于所述平均每人次工时,而对于历史工时较短的员工i,目标工时t
iu
可以被确定成高于所述平均每人次工时。
[0068]
方法100还可以包括在步骤108处,定义如下变量:
[0069][0070][0071][0072][0073][0074]
u1i为员工i在待排班时段内被排班的工时不足目标工时t
iu
的部分,其中u1i≥0,
[0075]
u2i为员工i在待排班时段内被排班的工时超过目标工时t
iu
的部分,其中u2i≥0,
[0076]vgb
为班组g在天d的上班人数与不上班人数之差的绝对值与班组g的总人数qg之间的差的绝对值,其中0≤v
gd
≤qg。
[0077]
在进行排班前,一些x
ij
的值就可以已知为0。例如,当员工i不能执行任务j时,具体地比如当员工i的部门与任务j的部门不一致、和/或员工i的资质不满足任务j的资质要求、和/或员工i的资质有效期未覆盖任务j的起止时间、和/或员工i预计无法在任务j的起止时间期间上班(例如,由于请假/出差等)等时,x
ij
=0。
[0078]
在进行排班前,就可以针对每个员工i确定其每一天d的y
id
。在一些实施例中,方法100还可以包括:接收历史任务数据,所述历史任务数据包括在待排班时段前一段时间(例如,前一周,或前一个月,等等)内已完成的每个任务的任务数据和完成该任务的员工的员工数据;基于历史任务数据确定每个员工的历史上班情况;基于在待排班时段内的任务的数量和员工的数量(此处的“员工的数量”也可以类似应用前述“有效员工数量”的实施例)
确定用于待排班时段的班制;对于任意一个员工i,基于该员工i的历史上班情况、在待排班时段内的占位与请假情况、以及所确定的班制,对该员工i在待排班时段内的每一天d的y
id
赋值0或1。班制可以是做二休二、做二休一、做二休三等班制或者组合这些班制的混合班制。例如,在允许的情况下通常可以保持做二休二的班制,如果任务数量相对于员工数量过多则可以调整为做二休二与做二休一的混合班制,如果任务数量相对于员工数量过少则可以调整为做二休二与做二休三的混合班制等。假设采取的是做二休二的班制,在不考虑占位与请假数据的情况下:如果员工i在待排班时段前一段时间的最后两天是休息,那么对于d=1,2,3,4,5,6,

有y
id
=1,1,0,0,1,1,

;如果员工i在待排班时段前一段时间的最后两天是工作,那么对于d=1,2,3,4,5,6,

有y
id
=0,0,1,1,0,0,

;如果员工i在待排班时段前一段时间的最后两天分别是工作和休息,那么对于d=1,2,3,4,5,6,

有y
id
=0,1,1,0,0,1,

;如果员工i在待排班时段前一段时间的最后两天分别是休息和工作,那么对于d=1,2,3,4,5,6,

有y
id
=1,0,0,1,1,0,

。可以理解,基于该员工i的历史上班情况、在待排班时段内的占位与请假情况、以及所确定的班制,就可以对该员工i在待排班时段内的每一天d的y
id
赋值0或1。因此,y
id
可以视为原定上班计划,其在进行排班前是已知的。
[0079]
z1
id
和z2
id
用于描述排班相对于原定上班计划y
id
的临时调整。通常期望排班相对于原定上班计划y
id
的临时调整尽量少。
[0080]
u1i和u2i用于描述排班后员工i的要完成的工时相对于目标工时t
iu
的偏差。通常期望员工i要完成的工时尽量接近目标工时t
iu
。可以理解,u1i和u2i中必有一者为零,另一者大于或等于零。
[0081]vgd
用于描述同一班组g内的员工在天d的工休不一致程度。通常期望同一班组的员工尽量同时上班或同时休息。
[0082]
接下来,方法100还可以包括在步骤110处,通过设置约束和目标函数来构建整数规划模型。
[0083]
在一些实施例中,可以设置第一约束,要求对于任意一个员工i、对于任意一天d并且对于天d的任意一个任务j满足x
ij
≤y
id
z1
id-z2
id
。第一约束可以在整数规划模型求解过程中限定变量x
ij
、y
id
、z1
id
、z2
id
之间的关系。
[0084]
在一些实施例中,可以设置第二约束,要求对于任意一个任务j满足其中ij是员工集合i中的能够执行任务j的员工i的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第二约束设置为要求对于任意一个任务j满足(∑
i∈i
x
ij
) clj=1。也就是说,无需从员工集合i中挑选出能够执行任务j的员工i的子集ij,而是直接对所有员工i的x
ij
求和即可,反正当员工i不能执行任务j时x
ij
=0。第二约束可以确保在整数规划模型求解过程中,每个任务j要么被安排给相应一个员工i,要么未被安排给任何员工。
[0085]
在一些实施例中,可以设置第三约束,要求对于任意一个员工i满足其中j
i01
是任务集合j中的能够被员工i执行的处于第一时间段的班次的任务j的子集,j
i02
是任务集合j中的能够被员工i执行的处于与所述第一时间段连续的第二时间段的相邻班次的任务j的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第三约束设置为要求对于任意一个员工i满足
其中j
01
是任务集合j中的处于第一时间段的班次的任务j的子集,j
02
是任务集合j中的处于与所述第一时间段连续的第二时间段的相邻班次的任务j的子集。也就是说,只需从任务集合j中挑选出处于第一时间段的班次的任务j的子集j
01
和处于第二时间段的相邻班次的任务j的子集j
02
,而无需从j
01
中进一步挑选出能够被员工i执行的子集j
i01
也无需从j
02
中进一步挑选出能够被员工i执行的子集j
i02
,反正当员工i不能执行任务j时x
ij
=0。可以理解,如果处于第一时间段的班次是某天的早班,则处于第二时间段的相邻班次可以是该天的中班;如果处于第一时间段的班次是某天的中班,则处于第二时间段的相邻班次可以是该天的晚班;如果处于第一时间段的班次是某天的晚班,则处于第二时间段的相邻班次可以是第二天的早班。因为通常来讲要求劳动者的连续工作时间不得超过10个小时,而每个班次的时长一般都在7小时以上,所以这个连续工作时间的要求相当于不允许员工连续上两个班次,即上完早班不能接着上当天的中班,上完中班不能接着上当天的晚班,上完晚班不能接着上第二天的早班。第三约束可以确保在整数规划模型求解过程中,不会将连续两个班次的任务j都安排给同一个员工i。
[0086]
在一些实施例中,可以设置第四约束,要求对于任意一个员工i满足其中ji是任务集合j中的能够被员工i执行的任务j的子集,tj是任务j的任务时长,t是针对待排班时段所要求的最大总工时。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第四约束设置为要求对于任意一个员工i满足∑
j∈j
tj·
x
ij
≤t,其中tj是任务j的任务时长,t是针对待排班时段所要求的最大总工时。也就是说,无需从任务集合j中挑选出能够被员工i执行的任务j的子集ji,而是直接对所有任务j的(tj·
x
ij
)求和即可,反正当员工i不能执行任务j时x
ij
=0。例如,当待排班时段为一个月时,t可以为168小时。可以根据有关规定合理地设置t的值。第四约束可以确保在整数规划模型求解过程中,不会使员工被排班的总工时超过可允许的最大总工时。
[0087]
在一些实施例中,可以设置第五约束,要求对于任意一个员工i并且对于任意一天d满足其中r是最大连续工作天数。例如,r可以为6天或更少。可以根据有关规定合理地设置r的值。第五约束可以确保在整数规划模型求解过程中,不会使员工被连续排班超过可允许的最大连续工作天数,保证员工休息。
[0088]
在一些实施例中,可以设置第六约束,要求对于任意一个员工i、对于任意一天d并且对于天d的晚班的任意一个任务j满足其中j
id3
是任务集合j中的能够被员工i执行的天d的晚班的任务j的子集,pn是晚班间隔天数。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第六约束设置为要求任意一个员工i、对于任意一天d并且对于天d的晚班的任意一个任务j满足其中j
d3
是任务集合j中的天d的晚班的任务j的子集,pn是晚班间隔天数。也就是说,只需从任务集合j中挑选出天d的晚班的任务j的子集j
d3
,而无需从j
d3
中进一步挑选出能够被员工i执行的子集j
id3
,反正当员工i不能执行任务j时x
ij
=0。在一些实施例中,可以要求=0。在一些实施例中,可以要求并且向下取整。可以在允许的情况下将pn设置得尽量
大,以使得同一员工的两次晚班之间间隔得尽量久。在一些情况下,设置pn需要考虑待排班时段前一段时间的最后几天。第六约束可以使得在整数规划模型求解过程中,尽量避免使员工被连续地或密集地排夜班,并且在员工被排夜班的情况下使员工的两次晚班之间至少间隔pn天。
[0089]
在一些实施例中,方法100还可以包括:基于任务数据构建席位集合s,其中席位s∈s;基于被分配至席位s的任务的数量和能够负责席位s的员工的数量(此处的“员工的数量”也可以类似应用前述“有效员工数量”的实施例)确定在席位s上的平均每人次目标任务数量ns;定义如下变量,s1
is
为员工i在席位s上被排班的任务数量不足目标任务数量ns的部分,其中s1
is
≥0,s2
is
为员工i在席位s上被排班的任务数量超过目标任务数量ns的部分,其中s2
is
≥0。可以理解,s1
is
和s2
is
中必有一者为零,另一者大于或等于零。例如,可以基于任务数据得到席位数据,所述席位数据可以包括每个席位在所述待排班时段内的每一天的每个班次负责的任务;然后可以基于席位数据构建席位集合s。
[0090]
照此,在一些实施例中,可以设置第七约束,要求对于任意一个员工i并且对于任意一个席位s满足其中j
is
是任务集合j中的能够被员工i执行的被分配至席位s的任务j的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第七约束设置为要求对于任意一个员工i并且对于任意一个席位s满足s满足其中js是任务集合j中的被分配至席位s的任务j的子集。也就是说,只需从任务集合j中挑选出被分配至席位s的任务j的子集js,而无需从js中进一步挑选出能够被员工i执行的子集j
is
,反正当员工i不能执行任务j时x
ij
=0。第七约束可以使得在整数规划模型求解过程中,尽量避免在被安排至同一席位的员工之间的工作量分配失衡。
[0091]
在一些实施例中,可以设置第八约束,要求对于任意一个员工i并且对于在天d有中班且在天(d 1)有早班的任意一个席位s满足其中j
isd2
是任务集合j中的能够被员工i执行的被分配至席位s的天d的中班的任务j的子集,j
is(d 1)1
是任务集合j中的能够被员工i执行的被分配至席位s的天(d 1)的早班的任务j的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第八约束设置为要求对于任意一个员工i并且对于在天d有中班且在天(d 1)有早班的任意一个席位s满足其中j
sd2
是任务集合j中的被分配至席位s的天d的中班的任务j的子集,j
s(d 1)1
是任务集合j中的被分配至席位s的天(d 1)的早班的任务j的子集。也就是说,只需从任务集合j中挑选出被分配至席位s的天d的中班的任务j的子集j
sd2
和被分配至席位s的天(d 1)的早班的任务j的子集j
s(d 1)1
,而无需从j
sd2
中进一步挑选出能够被员工i执行的子集j
isd2
也无需从j
s(d 1)1
中进一步挑选出能够被员工i执行的子集j
is(d 1)1
,反正当员工i不能执行任务j时x
ij
=0。第八约束可以使得在整数规划模型求解过程中,安排在某天负责了某个席位的中班的员工继续在第二天负责该席位的早班。这可能是出于工作连贯性、便于员工通勤等方面的综合考虑。当然,如果某些席位没有同时包括某天的中班和第二天的早班,则不对其做此要求。
[0092]
在一些实施例中,可以设置第九约束,要求对于任意一个员工i满足
其中ji是任务集合j中的能够被员工i执行的任务j的子集,tj是任务j的任务时长,t
iu
是员工i在待排班时段内的目标工时。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第九约束设置为要求对于任意一个员工i满足(∑
j∈j
tj·
x
ij
) u1
i-u2i=t
iu
。也就是说,无需从任务集合j中挑选出能够被员工i执行的任务j的子集ji,而是直接对所有任务j的(tj·
x
ij
)求和即可,反正当员工i不能执行任务j时x
ij
=0。第九约束可以使得在整数规划模型求解过程中,尽量避免在各个员工之间的工时分配失衡。
[0093]
在一些实施例中,可以设置第十约束,要求对于任意一个员工i满足其中ji是任务集合j中的能够被员工i执行的任务j的子集,t1j是任务j的执勤时长,t

是针对待排班时段所要求的最大总执勤时长。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第十约束设置为要求对于任意一个员工i满足∑
j∈j
t1j·
x
ij
≤t

,其中t1j是任务j的执勤时长,t

是针对待排班时段所要求的最大总执勤时长。也就是说,无需从任务集合j中挑选出能够被员工i执行的任务j的子集ji,而是直接对所有任务j的(t1j·
x
ij
)求和即可,反正当员工i不能执行任务j时x
ij
=0。第十约束可以使得在整数规划模型求解过程中,不会使员工被排班的总执勤时长超过可允许的最大总执勤时长。
[0094]
在一些实施例中,方法100还可以包括:基于任务数据确定待排班时段内的晚班数量,基于历史任务数据确定每个员工在待排班时段前一段时间内已完成的历史晚班数量,并且基于占位与请假数据确定每个员工在待排班时段内的上班天数;基于待排班时段内的晚班数量、每个员工是否能够执行待排班时段内的晚班的情况、每个员工的历史晚班数量和在待排班时段内的上班天数,确定每个员工i待排班时段内的晚班数量上限n
i3h
和晚班数量下限n
i3l
。例如,如果员工i不能执行待排班时段内的晚班,则可以有n
i3h
=n
i3l
=0;如果有多个员工i能够执行待排班时段内的晚班,那么然后可以在平均每人次晚班数量的基础上根据所述多个员工i中的每个员工i的历史晚班数量和在待排班时段内的上班天数进行调整以确定每个员工i待排班时段内的晚班数量上限n
i3h
和晚班数量下限n
i3l
。在一些情况下,可以将所有部门的晚班和所有部门的员工放在一起考虑来确定每个员工i待排班时段内的晚班数量上限n
i3h
和晚班数量下限n
i3l
。在另一些情况下,可以分部门地考虑每个部门的晚班和该部门的员工来确定每个员工i待排班时段内的晚班数量上限n
i3h
和晚班数量下限n
i3l
。在一些示例中,如果基于单个部门确定的晚班数量上限低于基于所有部门确定的晚班数量上限,则可以以较低的那个晚班数量上限为准。
[0095]
照此,在一些实施例中,可以设置第十一约束,要求对于任意一个员工i满足其中j
i3
是任务集合j中的能够被员工i执行的晚班的任务j的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第十一约束设置为要求对于任意一个员工i满足其中j3是任务集合j中的晚班的任务j的子集。也就是说,只需从任务集合j中挑选出晚班的任务j的子集j3,而无需从j3中进一步挑选出能够被员工i执行的子集j
i3
,反正当员工i不能执行任务j时x
ij
=0。第
十一约束可以使得在整数规划模型求解过程中,给每个员工排的夜班数量合理化。
[0096]
在一些实施例中,可以设置第十二约束,要求对于任意一个员工i并且对于任意一天d满足其中j
id3
是任务集合j中的能够被员工i执行的天d的晚班的任务j的子集,j
id1
是任务集合j中的能够被员工i执行的天d的早班的任务j的子集。由于当员工i不能执行任务j时x
ij
=0,因此在一些实施例中可以替代地将第十二约束设置为要求对于任意一个员工i并且对于任意一天d满足其中j
d3
是任务集合j中的天d的晚班的任务j的子集,j
d1
是任务集合j中的天d的早班的任务j的子集。也就是说,只需从任务集合j中挑选出天d的晚班的任务j的子集j
d3
和天d的早班的任务j的子集j
d1
,而无需从j
d3
中进一步挑选出能够被员工i执行的子集j
id3
也无需从j
d1
中进一步挑选出能够被员工i执行的子集j
id1
,反正当员工i不能执行任务j时x
ij
=0。第十二约束可以使得在整数规划模型求解过程中,在为员工安排某天的晚班之前为其安排当天的早班。
[0097]
在一些实施例中,可以设置第十三约束,要求对于任意一个班组g并且对于任意一天d满足∑
i∈g2·
(y
id
z1
id-z2
id
)-2
·
qg v
gd
m
·
(1-ω
gd
)≥0,并且满足-2
·

i∈g
(y
id
z1
id-z2
id
) v
gd
m
·
ω
gd
≥0,其中m是常数,v
gd
、ω
gd
是取值为0或1的变量。通常,可以将m的值设置为远大于其它任何变量的取值范围。第十三约束可以使得在整数规划模型求解过程中,尽量使得同一班组的员工在某天同时上班或同时休息。
[0098]
在一些实施例中,可以设置第十四约束,要求对于任意一个员工i满足其中j
ic
是任务集合j中的能够被员工i执行的相互冲突的任务j的子集。在某种意义上,第十四约束已被第三约束暗含,因此在设置了第三约束时也可以不设置第十四约束。
[0099]
在上述约束中,从整数规划模型的角度来看第一约束可以限定变量之间的关系、第二约束可以限定对所有任务的覆盖约束,从相关规定的角度来看第三约束可以限定最大连续工作小时数约束、第四约束可以限定最大总工时约束、第五约束可以限定最大连续工作天数约束,从各种业务目标的角度来看其余约束可以让求解得到的排班更加合理化。可以在整数规划模型中设置第一约束至第五约束,可选地还可以设置第六约束至第十四约束中的一者或多者。
[0100]
在一些实施例中,可以将目标函数设置为min{∑
d∈d

i∈icd
·
(z1
id
z2
id
) ∑
i∈icu
·
(u1i u2i) ∑
d∈d

g∈gcgd
·vgd

j∈jcj
·
clj·
imtj},其中cd是临时调整为在天d上班或不上班的惩罚成本,cu是实际工时偏离目标工时的惩罚成本,c
gd
是同一班组g内的员工在天d工休不一致的惩罚成本,cj是任务j未被安排给任何员工的惩罚成本,imtj是任务j的重要性。这样的目标函数的含义是,使得不按照原定工作计划y
id
而临时调整的上班日期尽量少(大括号中的第一项),每个员工被排班的工时与目标工时的差距尽量小(大括号中的第二项),同一班组内的员工尽量同时上班或同时休息(大括号中的第三项),未被安排给任何员工的任务尽量少(大括号中的第四项)。cd、cu、c
gd
、cj、imtj是整数规划模型的可调节参数。不同类型的任务j的重要性可以不同,比如备份任务的重要性往往低于、甚至可以远低于正常任务。相同类型的不同任务j的重要性可以相同,也可以不同。可以根据实际情况合理设置各个任务的重要性,例如当某个任务未得到安排会造成的问题的严重性越高时说明该任务
的重要性可以被设置得越高。(cj·
imtj)指示了任务j未被安排给任何员工的加权惩罚成本,因而imtj的取值范围在一定程度上也受cj的取值的影响。在一些示例中,imtj的取值范围可以在0至100之间(包括0和100)。
[0101]
应理解,可以根据实际需要修改目标函数,以使求解结果朝着期望的排班效果的方向。在一些示例中,还可以在上述目标函数的大括号中增加一项∑
s∈s

i∈ics
·
(s1
is
s2
is
),这样使得目标函数的含义可以包括使得各个席位内的工作量分配尽量均衡。在一些示例中,还可以在上述目标函数的大括号中移除一项或多项。
[0102]
继续参考图1,在构建好整数规划模型后,方法100还可以包括在步骤s112处,求解整数规划模型并根据求解结果进行排班,所述排班指示任务j与员工i之间的对应关系。具体地,求解整数规划模型例如可以求解出每个的值是1还是0,从而可以确定任务集合j中的每个任务j被安排给员工集合i中的哪个员工i还是未被安排给任何员工。
[0103]
本文不对整数规划模型的具体求解方法作特别限制。可以理解,现在已知的或以后开发的任何合适的用于整数规划模型的求解方法都可以适用于此。例如目前最常用的求解方法有枚举法、割平面法、分支定界法、图论法、二元开发法等。另外,还可以将本文所构建的整数规划模型输入现在已知的或以后开发的任何合适的用于整数规划模型的求解器进行求解,求解器会智能地选择最适合该模型的算法,给出最优解或可行解。求解器通常集成了大多数目前最顶级的算法包,其内部有很多加速求解的小技巧,对于一般的整数规划问题而言往往有着不错的效果。例如目前商业求解器有gurobi、copt、scip/spx、matlab等,开源求解器有cbc、glpk、lp_solve等。
[0104]
在一些实施例中,可以基于所确定的排班计算用于衡量排班效果的各种各样的指标,例如可以包括但不限于以下中的一者或多者:每个员工在待排班时段内的工时和/或所有员工在待排班时段内的工时的方差(即,用于衡量工时均衡性的指标);每个员工在待排班时段内的晚班数量和/或所有员工在待排班时段内的晚班数量的方差(即,用于衡量晚班均衡性的指标);每个班组g在待排班时段内的每一天d的v
gd
和/或每个班组g在待排班时段内的所有v
gd
的平均值(即,用于衡量班组工休一致性的指标);每个被安排晚班的员工的晚班间隔天数和/或所有被安排晚班的员工的晚班间隔天数的平均值和/或方差(即,用于衡量晚班间隔情况的指标);与每个席位对应的每个员工的工时和/或与每个席位对应的所有员工的工时的方差(即,用于衡量席位均衡性的指标)。例如,可以根据所计算的指标衡量排班效果,并据此调整整数规划模型的参数,比如cd、cu、c
gd
、cj、imtj,然后重新求解经调整参数的整数规划模型并根据新的求解结果重新排班,基于重新确定的排班计算计算指标以衡量排班效果,直到排班效果符合期望为止。
[0105]
由此,方法100可以为航班签派员工排班问题构建整数规划模型,根据与航班签派相关的各种数据为模型中的变量赋值,根据各种相关规定和业务目标为模型设置约束,并根据各种期望排班效果为模型设置目标函数,并且可以通过求解所构建的整数规划模型进行航班签派员工排班,相比于人工排班具有显著提高的效率,不易出错。在每次要排班的时候(例如每月初),只需根据此时的数据执行方法100即可。一旦中途(例如月中)发生员工和/或任务等的各种变动,例如员工的出差/休假、离职/入职,任务的增删/修改等,只需要
用更新的员工数据、任务数据、占位与请假数据重新执行方法100即可,重新排班成本较低。
[0106]
下面结合图2来介绍根据本公开的一些实施例的用于航班签派员工排班的装置200。如图2所示,装置200可以包括数据处理模块202、模型构建模块204和求解排班模块206。
[0107]
数据处理模块202可以被配置为:
[0108]
接收与航班签派有关的员工的员工数据、待排班时段内与航班签派有关的任务的任务数据、所述员工的历史工时数据、所述待排班时段内所述员工的占位与请假数据;
[0109]
基于所述员工数据、所述任务数据和所述待排班时段分别构建员工集合i、班组集合g、任务集合j和日期集合d,其中员工i∈i,班组g∈g,任务j∈j,天d∈d;
[0110]
基于所述员工数据、所述任务数据、所述历史工时数据和所述占位与请假数据,确定每个员工i在所述待排班时段内的目标工时t
iu

[0111]
定义如下变量:
[0112][0113][0114][0115][0116][0117]
u1i为员工i在所述待排班时段内被排班的工时不足目标工时t
iu
的部分,其中u1i≥0,
[0118]
u2i为员工i在所述待排班时段内被排班的工时超过目标工时t
iu
的部分,其中u2i≥0,
[0119]vdg
为班组g在天d的上班人数与不上班人数之差的绝对值与班组g的总人数qg之间的差的绝对值,其中0≤v
gd
≤qg。
[0120]
模型构建模块204可以被配置为通过以下操作构建整数规划模型:
[0121]
设置如下约束:
[0122]
第一约束,要求对于任意一个员工i、对于任意一天d并且对于天d的任意一个任务j满足x
ij
≤y
id
z1
id-z2
id

[0123]
第二约束,要求对于任意一个任务j满足第二约束,要求对于任意一个任务j满足其中ij是员工集合i中的能够执行任务j的员工i的子集,
[0124]
第三约束,要求对于任意一个员工i满足第三约束,要求对于任意一个员工i满足其中j
i01
是任务集合j中的能够被员工i执行的处于第一时间段的班次的任务j的子集,j
i02
是任务集合j中的能够被员工i执行的处于与所述第一时间段连续的第二时间段的相邻班次的任务j
的子集,
[0125]
第四约束,要求对于任意一个员工i满足其中ji是任务集合j中的能够被员工i执行的任务j的子集,tj是任务j的任务时长,t是针对所述待排班时段所要求的最大总工时,
[0126]
第五约束,要求对于任意一个员工i并且对于任意一天d满足其中r是最大连续工作天数,设置如下目标函数:
[0127]
min{∑
d∈d

i∈icd
·
(z1
id
z2
id
) ∑
i∈icu
·
(u1i u2i) ∑
d∈d

g∈gcgd
·vgd

j∈jcj
·
clj·
imtj},其中cd是临时调整为在天d上班或不上班的惩罚成本,cu是实际工时偏离目标工时的惩罚成本,c
gd
是同一班组g内的员工在天d工休不一致的惩罚成本,cj是任务j未被安排给任何员工的惩罚成本,imtj是任务j的重要性。
[0128]
求解排班模块206可以被配置为求解所述整数规划模型并根据求解结果进行排班,所述排班指示任务j与员工i之间的对应关系。
[0129]
装置200的实施例基本类似于前述方法100的实施例,因此在此不再赘述,相关之处可参见方法实施例部分的说明。
[0130]
本公开还提供了一种用于航班签派员工排班的计算设备,其可以包括一个或多个处理器以及存储计算机可执行指令的存储器,计算机可执行指令在被一个或多个处理器执行时使得一个或多个处理器执行根据本公开的前述任一实施例所述的用于航班签派员工排班的方法。如图3所示,计算设备300可以包括(一个或多个)处理器302以及存储计算机可执行指令的存储器304,计算机可执行指令在被(一个或多个)处理器302执行时使得(一个或多个)处理器302执行根据本公开的前述任一实施例所述的用于航班签派员工排班的方法。(一个或多个)处理器302例如可以是计算设备300的中央处理单元(cpu)。(一个或多个)处理器302可以是任何类型的通用处理器,或者可以是专门设计用于航班签派员工排班的处理器,诸如专用集成电路(“asic”)。存储器304可以包括可由(一个或多个)处理器302访问的各种计算机可读介质。在各种实施例中,本文描述的存储器304可以包括易失性和非易失性介质、可移除和不可移除介质。例如,存储器304可以包括以下的任何组合:随机存取存储器(“ram”)、动态ram(“dram”)、静态ram(“sram”)、只读存储器(“rom”)、闪存、高速缓冲存储器和/或任何其它类型的非瞬态计算机可读介质。存储器304可以存储在被处理器302执行时使得处理器302执行根据本公开的前述任一实施例所述的用于航班签派员工排班的方法的指令。
[0131]
本公开还提供了一种其上存储有计算机可执行指令的非瞬态存储介质,计算机可执行指令在被计算机执行时使得计算机执行根据本公开的前述任一实施例所述的用于航班签派员工排班的方法。
[0132]
说明书及权利要求中的词语“左”、“右”、“前”、“后”、“顶”、“底”、“上”、“下”、“高”、“低”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在附图中的装置倒转时,原先描述为在其它特征“之上”的特征,此时可以描述为在其它特征“之下”。装置还可以以其它方式定向(旋转90度或在其它方位),此时将相应地解释相对空间关系。
[0133]
在说明书及权利要求中,称一个元件位于另一元件“之上”、“附接”至另一元件、“连接”至另一元件、“耦接”至另一元件、或“接触”另一元件等时,该元件可以直接位于另一元件之上、直接附接至另一元件、直接连接至另一元件、直接耦接至另一元件或直接接触另一元件,或者可以存在一个或多个中间元件。相对照的是,称一个元件“直接”位于另一元件“之上”、“直接附接”至另一元件、“直接连接”至另一元件、“直接耦接”至另一元件或“直接接触”另一元件时,将不存在中间元件。在说明书及权利要求中,一个特征布置成与另一特征“相邻”,可以指一个特征具有与相邻特征重叠的部分或者位于相邻特征上方或下方的部分。
[0134]
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
[0135]
如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
[0136]
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
[0137]
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
[0138]
在本公开中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
[0139]
如本文所使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任何和所有组合。本文中使用的术语只是出于描述特定实施例的目的,并不旨在限制本公开。如本文中使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚指示。
[0140]
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其它各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。可以以任何方式和/或与其它实施例的方面或元件相结合地组合以上公开的所有实施例的方面和元件,以提供多个附加实施例。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
[0141]
虽然已通过示例对本公开的一些特定实施例进行了详细说明,但本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献