如下所示,是一家小店的排班需求。从星期一到星期日,每天的时间段相同,即将每天的工作时间分成6段。
如下所示,是一家小店的排班需求。从星期一到星期日,每天的时间段相同,即将每天的工作时间分成6段。
排班条件共5个,但第5个条件:“每个员工平均每天至少9个小时长,一周内工作时长为54个小时”,似乎存在矛盾,于是我将其修改为:“每个员工平均每天至少9个小时长,一周内工作时长至少为54个小时”。利用规划求解来求出排班安排。
首先,需要在Excel中安装“规划求解加载项”。很简单,调出“加载项”对话框,选中“规划求解加载项”前的复选框即可,如下所示。
此时,在Excel功能区界面的“数据”选项卡中,会出现“规划求解”命令,如下所示。
下面,我们将条件输入到工作表中。
由于中午11:3 至13: ,下午的17: -19: ,在这两个期间至少要有3人上班;每天早上8:3 至9:3 为准备营业时间,最少为2名员工,假设其他时间至少1人上班。在列J中输入各时段至少上班人数,列H中的公式为前四列对应行中单元格之和,如下所示。
在单元格区域D46:G46中,分别输入求每名员工一周工作总时间的公式。在单元格D46中的公式为:
=SUMPRODUCT($C$2:$C$43,D2:D43)
如下所示,可向右拉至单元格G46。在单元格区域D48:G48中输入约束时间。
在单元格I47中输入目标公式:
=SUM(D46:G46)
即员工周工作总时间。
接着,我们设置规划求解参数。
目标单元格设置为:I47=SUM(D46:G46),目标值为252小时(即9小时/天*7天*4名员工)。
可变单元格设置为:D2:G43,即要求排班的数据区域
约束条件设置为:
H2:H43>=J2:J43
D46:G46>=D48:G48
D2:G43=二进制(即1表示上班,表示休息)
进行规划求解,如下所示。
求得的结果如下所示。
虽然求出了结果,但可以看出,有名员工周工作时间达到82小时,显然不合理。一种是再分析求出的结果,适当调整排班安排,例如员工4几乎排满了班,可以在满足时段人数时减少员工4的排班。