返回

文章详情

系统与延迟

Hacker News2026年7月26日 00:37

延迟的表现出反直觉的特性。在假期期间,离开家(和国家)一两周是摆脱我过去以刻板方式消磨空闲时间的好时机(过多的 YouTube、Lobste.rs、HackerNews 和 BlueSky),尝试一些新事物。对于我最近的假期,我准备了一些方格纸来制作位图字体,还有两本书:第一本是《Nachové pustiny》:一本捷克后末日小说,以此为我在捷克共和国创作的'辐射' MMO 游戏提供灵感,第二本是《系统思维》:一本在工作中推荐的书(用我的工作教育预算买的),它在我书架上积了几个月的灰尘。我高兴地宣布,我成功完成了这三个目标:我创建了位图字体(尽管我仍需处理字距和重音),读完了这本后末日小说(还不错),并读完了系统书籍!《系统思维》介绍了一个框架和一个源与汇、库存与流动、反馈环路和系统的可视语言(通常是自下而上涌现的)。这大致对应于数学模型和微分方程,尽管书中没有详细阐述这些,仅在附录中提到实际公式作为例子。延迟是奇怪的 有一章在我看来是整本书的亮点,讲的就是延迟。运行的例子(见上面的图片)是一个汽车经销商经理,她在停车场上管理一批汽车的库存,目标是始终保持库存是销售数量的10倍。当客户需求上升时,她开始订购更多汽车以弥补差距。没有延迟的系统 在理想的世界中没有延迟:她立即看到需求增加和当前库存与理想库存之间的差距,立即发送订单以补充更多的汽车,这些汽车也立即到达。此外,在此例中,时间粒度是天,所以想象一下,在一天结束时,她看到卖出了30辆汽车,发送30辆汽车的订单,第二天早上它们就会到达。首先,我们来看模型中的常数,不会受到延迟的影响:客户需求每天开始为20辆,然后逐渐增加到每天22辆,在某一天有70辆的峰值销售量。销售量是min(客户需求,库存),在下面的所有例子中将等于客户需求,因为我们有足够的汽车可用,但如果需求快速高涨,你可以想象库存会被抢购一空。我们的经理计算所需库存为销售量 * 10。这可能有些简单化,但这就是例子。你也可以想象我们以后对过去的N天的销售进行平均,并基于此计算所需库存,从而在系统中引入另一个延迟,但我在这篇博客中省略了这一点,因为它并没有涉及我想要说明的内容。那么,没有延迟的模型表现如何呢?顺便提一下,在读书时我用 Elm 写了一个蒙特卡罗模拟器——它列出了这篇博客中例子的伪代码公式——但电子表格就足够了,还有其他工具可以处理这些微分方程模型。碰巧的是,有个免费图形网页应用构建在JS库之上,展示了我在其中的一个例子。我想这本书很有影响力。该模型没有延迟,但它有一个问题,即对客户需求的随机峰值反应过度,导致订购过多的汽车,而这些汽车又需要很长时间才能售出,更重要的是,它不现实:在现实世界中,一切都有一定的延迟。订单处理需要时间,汽车到达经销商库存需要时间,等等。我们把它称为交付延迟。这似乎是一个糟糕的延迟,但延迟不一定总是坏的:考虑到经理可能不想对这些随机峰值做出过度反应。她因为一个峰值订购了550辆汽车,而她通常每天只订购约20辆!相反,她可能希望通过订购差异的一半或三分之一,逐渐达到所需库存。例如,如果第二天一切恢复正常,我们将能够更平稳地应对波动,而不用过度反应。我们把这个除数称为响应延迟。 有延迟的系统 让我们运行带有这两个延迟的模型,看看:交付延迟:5天(从我发送订单到汽车到达停车场)响应延迟除数:2(如果我看到差异为30辆汽车,我今天只会订购15辆。)发生了什么?我们原以为自己做的一切都是正确的,响应延迟是好事!的确是。但这两个延迟的组合使我们的系统出现了振荡!即使在客户需求保持稳定的情况下,它也从未稳定下来。经理被困在一个恶性循环中,订购过多的汽车,然后在首个订单到达之前的几天内继续增加订单。一旦订单开始到达,她现在有了过多的汽车,最终不再下单了。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡