食堂排队系统
今天晚上 18:00 准点去一楼食堂吃饭,结果队伍排到了门口还打了个圈。花了 20 多分钟才领到口粮,回头一看,队伍并没有减短。看着前后都有同学抱着 PSP 狩猎 MHP3,我有点后悔没把 PSP 带下来了。
从这几天的经历来看,我们公司食堂的处理能力应该是够的。从 17:30 到 18:45 基本能处理完 600 号人的进食问题。也不能完全怪发放食物的带宽不够,经过一个月的观察,这部分可以优化的余地不大。而且我认为优化的意义也不大。
那么怎么才能减少这么多无谓的排队时间呢?粗看可能性不大,但仔细想想,如果把眼界放宽到整个系统办公楼运作系统,应该是有可能的。
在不提高食堂带宽的前提下,如果用户随机抵达,理论上队伍总会排到 200 开外。并不会在某个特定时间点减少(只有等到最后队伍才可能逐步缩短)。但我们其实可以把排队时间挪一部分到食堂外面的。行政部以前分发过通知,安排各个部门错开时间用餐也是这个想法。
今天一边排队,一边跟前后的同学讨论是否有可能利用软件来节约大家的时间。
既然排队无法避免,相同状态下,我们当然可以在办公桌前排,而不用站在食堂里。既然每个人从座位上走到食堂的时间几乎不变(取决于电梯的运转周期),每个人从打卡到拿到食物的时间也几乎是恒定的。那么不需要特别的监控系统,我们就可以直接估算出食堂处理的带宽,并不会有太大波动。
而且每个工作日,总的用餐需求也是稳定的。
只要用一个系统,每天随机给所有同事自动排队,并在时间点通知。当每个人都比较严格的遵守约定,在接到通知的一分钟内步行去食堂。那么当他们都赶上同一部电梯的话,这批人抵达食堂的时间都是已知的。那么,在食堂的队伍理论上可以减少到一部电梯可以承载的人数左右。
这样,每个人都可以在本来需要的排队时间内做一些别的事情了。
今天讨论的时候,有同学提出应该在食堂安装摄像头做一个自反馈,让系统可以更好的自我调节。我认为意义不大,这样加大了系统实现的难度。其实在我们的特定需求下,大部分数据都是可以较为精确的估算的。我们可以允许一定的队伍(实际上也一定有,因为公司的电梯很大,导致食堂瞬间的业务量很大,不可以立刻全部处理掉),这个系统只要能帮助大家把在食堂的排队时间减少到 5 分钟以下就非常完美了。
关于如何避免大家都不遵守系统通知时间的问题,或者是有人拖拖拉拉不在通知时间去吃饭。我们先设想了复杂的打卡机制。后来觉得都没有必要。毕竟才几百人,还是比较好协调的。而且现在的饭卡系统本来就有统计每个工号的实际进餐时间。只需要每个晚上做一个统计,把严重不按照系统通知时间去吃饭的同学名单排出来,估计大家都会很有兴趣的去网站上围观的。
至于通知的问题,用 popo 就好了。
btw. 有同学认为,每天花两次 20 分钟在食堂里排队,也是个聊天交流的好机会。嗯,也有一定道理。