第 0 章
淋浴问题
为什么我就不能把淋浴调到 38 °C?
烫!冷!烫!
米卡: 好吧,我承认。今天早上我拧了淋浴旋钮,结果烫熟了,往回拧,又冻僵了,这样来回折腾了大概六次。
朱恩: 大家都这样!老房子的淋浴最糟糕了。
西奥: 但为什么这么难呢?你只想要一个数字,38 度。你只有一个旋钮。这应该很简单啊。
我们来弄清楚吧。下面是一个淋浴器,旋钮和花洒之间有一根长水管,就像真的一样。你在旋钮处混合好的水需要几秒钟才能沿着管子流上去。你可以看着水的颜色沿着管子慢慢爬升。
你的目标: 把水温调到 38 °C(绿色区域),并连续保持 10 秒。拖动橙色旋钮,或者点击它然后用方向键。你一碰它,计时就开始了。
结果怎么样?如果你来回摆动,在绿色带上下越界,那你并不孤单。看看蓝色曲线:它可能像一条紧张的蛇一样来回折线。
淋浴坏了吗?
朱恩: 我觉得淋浴坏了。我把旋钮调到温水,可它还是一直变烫!
西奥: 嗯。我们来画两样东西:旋钮要求的温度,和花洒实际给你的温度。如果它坏了,这两者应该完全对不上。
橙色虚线曲线是你的旋钮位置要求的温度:阀门处的混合温度。蓝色曲线是实际到达的温度。把橙色曲线在时间上往后移,看看它们能不能对上。
朱恩: 哦!轻轻转动时,把橙色曲线往后移大约 3½ 秒,那些大的波动就几乎对上了。急转时对得并不完全准。
米卡: ……水是延迟且被平滑过的!旋钮的动作并不是简单地过 3½ 秒后被复制出来。
这就是第一条线索。当你感觉“太烫”时,你感觉到的是几秒前的旋钮位置。到那时你已经把它调得更烫了,于是你又往回拧,拧过头,循环就又开始了。
更用力一点会有帮助吗?
米卡: 我明白了:我太温和了!只要水不对,我就把旋钮转得更快,就能更快修正。
我们造了三只机械手,不用被水淋就能测试各种想法。普通手在水温偏差越大时,把旋钮转得稍微快一点,就像大多数人那样。更用力的手做完全相同的事,但力度是两倍。
先预测一下! 和普通手相比,更用力的手会怎样?
三种都试试。急躁的手在冰冷和滚烫之间来回折腾。耐心的手把旋钮调到大约 51%(事先算好的正确配比),然后只是等待。它轻松获胜。
西奥: 所以单是延迟并不是问题所在。耐心的手有同样的延迟,却做得很好。问题在于对过时的消息反应太急切。
米卡: 所以“偏差越大就越用力”是错误的本能?那简直就是我的全部性格。
朱恩: 但耐心的手作弊了。它事先就知道正确答案。如果热水箱变凉了,或者有人冲了马桶,正确的旋钮位置就会改变,而耐心的手不会察觉。
这才是真正的难题。我们需要一种能做出反应(这样它才能应对意外)但又不会反应过度(这样它才不会来回摆动)的东西。记住这个想法。整门课都在讲它。
目前我们知道的
我们搞清楚了什么
- 有一个目标(38 °C)和一种行动方式(旋钮)还不够。你如何反应才是关键。
- 延迟意味着你感受到的永远是过时的信息。淋浴器没坏,只是反应慢了半拍。
- 对过时的信息做出更猛烈的反应,只会让水温忽冷忽热得更厉害,而不是更好。
- 把旋钮调好一次然后等着,确实管用——但前提是没有任何东西发生变化。
一架小小的无人机在风中稳稳地悬停在 2 米高处,完全没有大脑。它面临的问题和我们一样。它是怎么解决的呢?