« May 2025 | Main

June 15, 2025

育儿的一些日常

以下从我最近两个月发的推文中整理。

可可

  1. 晚上可可读着书在床上睡着了。我没叫醒她,给她盖了被子就睡了。早上醒来时她跟我说,完蛋了,昨天晚上我没有洗澡。我说没关系,别被妈妈发现就好了。然后她蹑手蹑脚的偷偷起来换了身衣服,然后又躺回来睡觉。

  2. 可可的同学喊她联机 minecraft ,我在隔壁看书,听她们在微信上聊了半天硬是鸡对鸭讲。我过去跟她说,你把电脑屏幕拍个照片给她看不就好了。结果对面喊了句:你怎么玩国际版啊,我玩的是网易中国版,然后安慰可可说,你自己玩也是可以的。我想:到底谁是正版受害者?

  3. 可可最近在读的一本小说突然就找不到了,她怎么都想不起来在哪里。我花了许多时间引导她回忆,终于想起是周三的课外班落在隔壁班的教室里了。如果缺乏引导,她的记忆是绝对不可能打开的。周五家长会,我特地提前了 5 分钟到学校,和隔壁班主任解释了一番,在教室仔细搜寻,果然找到了。可可很开心。

  4. 可可最近读书挺认真的,问了好多问题。前几天问了好几个成语的意思,又比问了什么时候用——(破折号),还讨论了为什么小说里要写那么多她觉得并不精彩的情节。

  5. 可可二年级,我最近发现她数学是真的不行 :( 今天检查作业错了一道题,引导了半天才发现她对 100 以上的数字概念都没建立起来。比如知道 10 个 100 是 1000 ,但她觉得 20 个 100 是一万,而且讲了一个小时才纠正过来。果然,人类天生的感知就是对数的么?本福特定理诚不我欺。

  6. 我觉得文字阅读能力对人的一生非常重要,而现在的小孩娃很难自发练习了 :( 试过很多方法培养兴趣,还是很难。最近一个月试着强制每天半小时文字阅读。两个娃都还听话,虽然觉得是个负担,但也认了这个任务。但经过一段事件,感觉阅读能力真的有提高(从阅读速度判断)。

  7. 可可看了几部关于老鼠的小说后,已经开始跟同学说地球上最聪明的动物是老鼠,地球就是老鼠造的计算机了。

  8. 可可迷上和我一起玩 rimworld 。假期跟妈妈出去旅行,回到家第一件事就是让我打开电脑继续抓一只豚鼠当宠物。知道游戏可以通过存档回退时间后,她让我试了一下在婚礼上把除新娘之外的人全部杀掉。等她长大,我一定推荐她看一遍杀死比尔。

  9. 可可说看到短视频中说 switch 的卡带是苦的。我说你要不要试试,她挑了一张舔了一下说好苦啊。云豆说我也试试。过了一会,可可又换了一张再舔了一下,这下她相信每张 switch 卡带都非常苦了。

  10. 可可说,我们玩个游戏,我问你问题,你必须马上回答。我说好。可可问:你最喜欢哥哥还是我?看我没说话,她说,算了,这个问题不好,下一个问题……

  11. 应朋友邀请去扬州玩。在扬泰机场跟可可讲李白的诗,我说古时候送别朋友远行,可能就一辈子不会再见了。可可问,不能打电话吗?

云豆

  1. 云豆说,什么时候买 switch 2 啊。我说你又不喜欢马车,买它作甚。但还是下了单。第一天试了 switch 秘密展和马车,玩得很开心。周末他的一帮同学闻讯都来了我们家。但是摸了一下 switch 2 以后,又围在 pc 上玩《小飞船大冒险》去了。

  2. 云豆家长会上,班主任展示了一张同学自制的贺卡。粉色的封面上画着一颗爱心,写着“我喜欢你”。打开后,内面用透明胶贴满了一整面秘密麻麻的蚊子。看来广州的夏天蚊虫真多,难为孩子能攒这么多。

  3. 云豆很兴奋的告诉我,他在科学课上学到埃菲尔铁塔是古斯塔夫造的。他前段玩了 33 号远征队,古斯塔夫是他最喜欢的角色。我告诉他我对埃菲尔铁塔那一带的路很熟,因为我玩了鬼武者。

  4. 给云豆买了本《猫和少年魔笛手》,我自己先读了一遍,非常喜欢。不过我怀疑他可能不太看得懂。云豆最近主动看书了,《哈利波特》已经快把《凤凰社》读完了。前几年我给他读过前四本,这次是他自己主动从第一本开始读的。

  5. 云豆问我,100 以内哪个数的因数最多,它有多少个因数?我想到一个问题:取一个足够大的整 n ,比 n 小的整数中因数最多的数大约有多少个因数?云豆说他找到 100 以内因数最多的是 96 ,有 12 个因数。我说 72 也是 12 个,我问,你能不能证明没有更多的了?1000 以内最多因数的是 900 ,有 27 个(其实 840 的有 32 个因数更多)。我给他讲了应该怎么找到这个数,以及应该怎样快速计算因数的个数。他发现分解质因数有实际的用途,还是挺开心的。

  6. 云豆学校最近查视力,一边 5.0 一边 4.4 ;去年都是 5.0 。前同事介绍了个医生,我们就去看眼科了。配了 OK 镜,前两天佩戴颇费事,第三天开始就很顺手了。

  7. 买了一本《在数学的雨伞下》。我先读完觉得内容不错,然后在睡前给云豆读了三次共三个小时左右。出乎意料,接受度还不错。不过每次不能太长时间,小孩得慢慢来,时间长一点他就犯困。

  8. 云豆看了 switch 2 预告的直面会后非常开心,因为樱井政博又回来做卡比了。

  9. 和云豆把双影奇景通关了,然后在隐藏关死了几百次才打到第三小关。云豆强迫症犯了,一定要我陪他练习直到把隐藏关通关。

  10. 云豆同学来家里玩,我说你们打游戏水平都不错,不如一起玩双影奇境。玩了两关后,同学说没意思,我们还是玩蛋仔派对吧。

  11. 晚上给云豆讲了一晚上勾股定理,用的总统证法。娃还没开窍,累死他也累死我了。最后他终于自己想通了等量加等量还是等量;我一开始以为是公理所以没办法教,这个必须自己想明白。“三角形的内角和是 180 度” 这个可以有疑惑的定理却很快接受了,只因为老师在课堂上讲过。去年花了 8 个周末给云豆讲质数,质因数,公约数等等。虽然花了比我预想得多的时间,但我确定他最后是懂了。今年课堂上开始教了,他说很轻松。我看课堂速度比我去年教的快多了,如果靠老师教,估计要学个一知半解。

  12. 云豆拿了语文测验卷子回来,错了好多。我给他讲卷子发现他阅读能力真的是很差。三国演义的半白话自然是完全不懂的;而一篇白话的百草园,也是一半没看懂。很多书面语的词完全不明白意思。

  13. 云豆的好朋友过生日,我帮他选了个礼物 RG28XX 。

  14. 云豆一大早起来背 100 以内的质数表,课本上还有口诀,说是今天数学老师要抽查。我说不需要这么背的。你心里顺着数数,把个位是 1379 的挑出来,去掉乘法口诀里出现的数字比如 49 ,再检查一下是不是 3 的倍数。最后记住 9 字头的只有 97 就好了。他试了一次就开心的上学去了。

June 09, 2025

电梯的交互和调度

今天在网上和人闲扯,说到电梯的交互设计或许是有问题的。一般在楼宇的电梯区,会设置上下两个按钮,让乘客表达自己是要上行还是下行。如果在电梯区显示电梯当前所在楼层的话,就会有人理解为:上是指让电梯轿厢向上运行,下是指让其向下。一旦这样理解,就会输入错误的指令。

几乎每个有过在高层办公室上班经历的程序员都参与过电梯调度算法的讨论。看来,在饭点挤电梯是程序员们的共同记忆。(另一个永恒话题是怎样提高厕所的使用效率)我也不例外,20 多年里,我曾经反反复复和人讨论过这个问题。现在再也不用挤电梯了,似乎可以把过去考虑过的方案记录一下。

先说说现实存在过的方案:

大多数方案都是为了提高电梯的运营效率。要么为了节能,要么为了更快的满足乘客需求,要么为了提高高峰时的吞吐量。

大部分高层建筑都把多部电梯按楼层分区。有些电梯只服务低层,有些服务高层。如果楼层更多时可能还会分出更多区间。对于超高层建筑,也有把顶楼超高区单独分割出来,需要转电梯的。

这个设计显然是因为对于高层建筑,电梯的需求按楼层分布是金字塔型的。乘客永远都需要从地面进入,越往上,乘客越少,而路程越长。乘客的目的地却是接近均匀分布的,如果让乘客随机进入任意轿厢,最终电梯会在更多楼层停留开门,将乘客预先分组就显得很有必要。

另外,为了解决繁忙时段的吞吐量问题,电梯也可能按单双层分组。这样可以把一部分运力转嫁到楼梯上,减少每部电梯的停留时间。类似的方案还有针对乘客类型设置专用电梯,比如让饭点运输食物的乘客走专用梯,而减少乘客使用电梯的需求量;让领导们使用专门电梯,提高他们的幸福指数以获得重要工作上的效能增益,等等。

也有一些办公楼会让乘客预先输入自己的目的地,而不是简单的选择上行还是下行。这样,系统理论上可以统筹安排。我也使用过这样的系统,效果嘛,一言难尽。只能说理想很丰满,现实很骨感。电梯公司想乘着软件系统升级多赚点钱无可厚非,但复杂系统就是这样:很难把它实现得正确。


回到文章开头的话题,我的观点是,与其做一个交互更复杂的系统妄想提高效率,还不如进一步简化它。

其实,电梯的外部控制按钮或许并不需要上下两个?只要一个召唤按钮就够了。

首先,这样的交互设计是没有歧义的:我需要使用电梯,就召唤它过来。

其次,用上下行来对乘客预分类过于粗糙,实际中对效率的提升非常有限。

如果建筑只有一部电梯,看起来对乘客分类的意义最少:反正乘客都必须乘坐这唯一一部电梯去目的地的,即使电梯目前运行方向相反,提前进轿厢的区别也仅仅是在里面等待还是在外面等待。

有同学说,不对啊,假设电梯目前从 1 楼向上运行到 10 楼顶楼,5 楼的人想下去,按了召唤按钮,电梯就可能在上行过程中做无谓的停留。如果电梯按钮分开上下,需求就明确了,电梯只会上去后下行时才会停下来。

我的观点是,其实电梯在上行时停下来,乘客就可以进去了。这样电梯之后下来时就不用再次在 5 楼停下来。无论是电梯运行时间,还是乘客抵达 1 楼的时间,差别都微乎其微。

而且就我的实际经历:在饭点想乘电梯下楼的话,往往是只要电梯开门了就进去,哪管它上行还是下行。你不进去等下就进不去了。稍低楼层的人更多的是反向坐电梯,不然就可能要等到餐厅快打烊了才吃得上饭:因为你不反向乘电梯的话,电梯下行的第一站永远是最高层,比你楼层高的乘客会优先使用。电梯的设计运力难以满足高峰期的需求。

在这种使用场景下,略低楼层的乘客往往上下两个按钮都会按下,在电梯上行时就先进入轿厢,而当电梯折返下行路过同一楼层时,电梯再次开门,外面却已经没有乘客了。效率反而降低了。如果电梯只设一个召唤按钮,这个问题就可以回避掉。

ps. 真要在高峰期保证公平的话,电梯需要设置成:单趟只停一个楼层,然后循环这个目的地。例如,一部高层电梯可以依次循环停 30, 29, 28, .... ,每一趟只在目的地停一次。这个运行模式可以在电梯不满载时自动取消,或是按高峰时间段固定开启。可惜我工作过的办公楼还没有见过电梯系统能设置成这种公平模式的。

这种单按钮召唤的设计,只要算法合理也并不比上下两按钮的低效。上下两按钮只是预先把乘客分开上行组和下行组,避免只有一组乘客时电梯反向停留(例如在上行阶段为下行乘客开门)。单按钮系统可以在载荷超过阈值时拒绝响应外部召唤请求,在完全已进入轿厢的乘客都送达目的地后,再根据外部召唤情况跑下一趟。这样就可以做到:延迟处理外部请求队列,以延长乘客外部等待时间为代价,增加单趟满足的乘客数量,从而提高整体的运行效率。

那么,如果电梯系统有多部电梯时怎样处理呢?

我觉得也可以不用上下行按钮预分类乘客。而是将电梯本身分为上行开门和下行开门。和高低层分类一样,乘客应该自行去上行区和下行区召唤电梯。鉴于除了地面的乘客趋向于上行外,其实绝大多数楼中乘客使用电梯都是下行的。多部电梯的系统只要保留一部梯为上行开门就够了。而且,即使你需要下行,其实也可以进入这部梯,它或许并不慢。因为一旦反向抵达有乘客召唤的最上一层,之后它下到一楼是直达的(下行不开门)。