本文笔者将通过一个案例,来向大家展示:如何利用模型来解决多考生、多考站的排考需求?
2018年至今,在产品规划的路径上,遇到了若干需要使用算法模型来辅助业务需求讲解的案例,为了更好地跟研发团队沟通,我用图形、Excel表格等工具,配合产品原型为研发团队做了算法的说明。
本案例是一个多考生,多考站的排考需求,大致逻辑如下:
明确考站数量N和考生数量n;
每个考生在这场考试中需完成这N个考站的考试;
明确每个考站的单站考试时间、换站时间.
由于场地(考站)和评分老师数量的限制,每批次进站考试的学生规模有限,比如:总共8个考站,那么同一批进站考试的学生,最大人数上限就是8名。
根据需求描述,整理单批次的模型如下:
模型的输入参数(黄色单元格):单站时长、换站时长、考站数量,三者决定了单批次时长,具体关系是:
对于每一个批次来说,总共有两个部分组成,总站内时长和总换站时长,其中:
在一个批次的内部,每位学生进行轮转的顺序示意图如下:
换批次时长可以理解为批次间隔的等待时间,可以让参与考试的老师、学生们有个休息调整的时间。
批次总数的算法为:总人数/考站数,在余数为0的情况下直接取整,在余数不为0的情况下取整后+1;
计算总时长的逻辑与前面利用单站时长和换站时长求解单批次时长的逻辑类似:总时长=(单批次时长+换批次时长)*批次总数-换批次时长;
根据数据显示需要,将计算得到的分钟数,折算为X小时Y分钟这样符合常人阅读习惯的表示方式。
至此,一个总时长估算的算法就完成了。但是业务需求还有延伸,比如:
案例中估算的8小时45分钟,如果分为上午、下午两场,应该如何设置休息时间;
若由于其他参数的变化导致考试时间必须跨天,又有哪些参数需要设置;
除了每站时间相等的逻辑之外,还会有长短站、关联站的逻辑,应该如何计算;
主要的分类包括:
时间相同,无关联站;
时间相同,有关联站(可进一步细分为:仅有1组关联,存在多组关联——链条长度相等(2,2)或链条长度不等(2,3)的情况)
长短站,无关联站;
长短站,有关联站;
各站时长均不等,有无关联站未知,
在上述逻辑基础上,增加一个带关联站的逻辑:
实际业务中,大多数情况是多个批次先后进入考站进行考试,而且,效率最高的排考方案一定是充分利用每个考站的可用时间,杜绝“浪费”。上图所示的逻辑中增加了多个批次学员(色块代表新批次的学员),可以看见第1次换站时补充了一名学员H;第8次换站时,补充了7名学员I~O,第9次换站时,又补充了一名学员P。
举一个长短站(长站的单站时间=两倍短站时间)的例子,当长站时长为短站时长的双倍时,系统通过增加一个相同项目的长站来解决拥堵的问题,示意图如下:
【关联站】:必须先进行某站考试,才可进入关联的另一站;
【长短站】:特定的站点时长是其他站点的2倍、3倍等;
年初在跟某位产品新人交流时,她惊讶地问:你们产品要做到这么细啊?
当时我回答她:产品早期考虑得越充分,研发阶段要填的坑就越少。