Tuesday, November 11, 2008

排队排队排长队

开机后不自觉的输入了豆瓣的网址,看到几个好友推荐的一文——《被毒奶喂大的我们 该唱怎样的赞歌赞美你?》。很是无奈,不过在这里还是不说什么了吧。

这里要随便扯扯的,是另外一个事情。关于考研报名的长队。

今天上午一童鞋跑去考研报名现场确认报名(也就是照相等工作),回来后大呼幸亏去得早。咱们问他排在多远的地方,他说大约是100m处。我大惊失色(俺承认自己确实没有意识到“人多”啥含义),结果才得知居然总长度大约400m左右 囧。国内的本科生以及研究生教育体系和无奈滴研究生选拔机制不是本文的讨论的主题,而是另外一点——如何改进这个排队机制——俺倒是愿意八卦一下谈一谈。

研究生报名的排队和银行取款等的排队很类似,从本质上看,被处理时间的先后对最终结果影响不大——总不会说你先取款就可以奖给你100块钱。与此不同的是另一种排队,例如托福考试报名,例如奥运开幕式门票网上订票,在这一种排队中,被处理时间的先后对最终结果的影响是明显的——你可能晚了一天就没得考位(俺当时就是个悲惨的例子)或者门票了!咱们姑且将前者称作时间无关性排队,后者称作时间有关性排队。

咱们当前大多数的考研报名自然是长龙式——一条人站在那里无所事事,慢慢等待自己成为队伍中的头一个。工作人员尽管不止一人,但是也都还挺清闲,还能够聊聊天讲讲笑话。但是整个排队系统中被处理的客体——学生群体——的时间就被白白浪费了。(不要说 Iphone 或者是 G1-Android 首发的时候排长龙的现象,甚至是印有 Obama 大选胜利的报纸被人们排长龙热卖的现象,性质不一样 囧)

如何改进?参考下银行吧。对,就是象征排队顺序先后的号码!每个人去了之后都可以领一张号码纸,将这个号码减去当前正在被处理的号码,就得到了一个数字——表示自己被排在了多少位(往往是看到数字后就直接晕掉了 囧)。后面怎么办就很自然了,当然是估算下时间,例如排在第1000位,前面每位被处理的时间大约是1分钟,那么你只要保证在1000分钟后左右的时间再过来就行了(这里的数字纯属理论值,如有雷同,纯属故意)。

当然,在实际运作过程中还会有一些麻烦。比如很自然的很可能就会出现号码造假,号码领取票贩子,走后门不公正,领取号码后却长时间没来,发放号码的唯一性问题(例如根据学号或者身份证等等,但是无疑会增加发放号码的工作人员的工作负荷),等候室中最佳等待人数大小的确定(例如排队缓冲区大小是10个人,那么当200号在被处理时,201-210号就进入等候室排队等待,当轮到210号开始被处理时,211-220就开始接着上面10个人进入等候室,这个数字主要是根据处理方的工作人员速度决定),等等。这些问题都有一些相应的解决办法,就看付出的代价(学校需要在号码纸的制作和号码纸的发派等方面做更多的工作)和能够被回收的成本(学生的时间)之间的博弈了。

ps.

当年奥运开幕式门票网上订票系统就是因为没有做好人数限制工作,导致系统崩溃。如果能够做好服务器间的分流、排队等待和最大被处理人数的限制(但是依然可以通过 IP 和浏览器 cookie 等记录排队顺序)等工作,想必也不至于直接崩溃掉。Firefox 3.0 首发当日的下载系统也是如此。

update1(2008年11月11日 19点14分)

吃饭的时候突然想到忘记考虑了报名人数的问题。例如此次武汉大学考研报名现场确认的限定时间是5天,那么如果5天时间搞不定怎么办?俺相信这时间长度应该是个经验值,应该没啥问题。可是如果搞不定呢?咱们也不能排除这可能。号码计数就可以解决这个问题,统计和估算下网上报名的人数、每个人被处理的速度、每天工作人员的工作时间和相应工作人员的数量,就可以得到一个时间上的估计值,以及每天理论上能够被处理的人数——例如每天只能够处理2000人,那么每天发放号码到2100人的时候就开始停止发放(因为可能有人会领了号码不来,所以给出一定的冗余)。

update2(2008年11月13日)

纠正一个隐晦滴错误,上文中暗示了报名的速度慢。其实今天俺去报名了,觉得速度还成。一次性进去20个,然后在里面进行处理,根据内部人数的多少选择是否继续放人进去,工作人员滴效率也还算是挺不错的其实。 囧

--jtuki

No comments:

Post a Comment