ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

人机环中的三种“算”:计算、算计与天算决定系统成败

人机环中的三种“算”:计算、算计与天算决定系统成败

1. 从一次调度系统复盘说起:三种“算”决定了项目成败

做系统设计这些年,我发现自己对“算”这个字越来越敬畏。2024年初我参与过一个自动化仓储项目的复盘,项目本身不算复杂,就是AGV搬运、上下架、订单批次合并那一套。算法团队当时用整数规划做了全局调度,实时率、路径代价、设备利用率在仿真环境里都非常漂亮。但上了现场以后,出现了两个谁都没预料到的现象:一是部分搬运工开始绕过系统赋予的“人工接管”权限,把任务改到自己熟悉的巷道;二是午高峰时段,只要调度策略一激进,整个场地就会出现五六分钟的拥堵,哪怕同一套参数在上午跑得特别顺。

我们花了很长时间优化计算层,调整惩罚系数、换路径规划算法、增加预测模块,结果收效甚微。直到团队里一位老工程师说了句话:我们一直在算“怎么把活排得更优”,但没算“人会怎么应对这套规则”,更没算“场地本身长时间段的物理约束”。这段话直接改变了我理解系统的方式。后来我把它整理成一个朴素但很实用的框架,就是“人机环中的计算、算计与天算”。

很多人看到这个标题会以为这是哲学讨论,但实际上它是一套非常落地的系统设计思路。这篇文章不绕弯子,我直接把三层“算”的含义、边界、失效模式,以及怎么把它们组合进同一个项目里讲清楚。无论你是做算法的、做产品设计的、做运营管理的,还是单纯对复杂系统感兴趣,这套框架都能帮你在拿到新问题时多一层判断力。

1.1 “人机环”到底是什么:一个不能简化成“人和机器”的分析单元

“人机环”这个提法,在工程、交互设计、智能系统等领域已经存在很久了。它指的并不是人、机器、环境三个孤立的要素,而是三者相互耦合、相互制约、彼此输出的组合系统。人以作业目标为中心,机器提供执行能力,环境提供资源、边界和条件,而三者之间没有任何一个可以单独决定系统最终走向。

举一个最简单的例子:一台物流分拣设备,机器本体效率极高,但放在一个空间拥挤、照明不足、操作台高度不适的物理环境里,人的操作速度必然下降,机器再快也喂不上料。反过来,环境很宽敞,但如果人机界面设计得一塌糊涂,操作员频繁误触,同样会拖垮整条产线。再进一步,如果操作员的考核指标是“分拣数量”,他就会下意识跳过质量抽检环节,哪怕机器和算法都要求他严格执行流程。

这说明一个什么问题?说明单独谈“优化某个设备”或“提升某个算法精度”是没有意义的。人机环是一个整体,任何一层的变化都会像涟漪一样传导到另外两层。最反直觉的地方在于:越是引入智能化能力,这种耦合效应越强。因为机器一旦具备自主决策,人的角色就从“直接操作者”变成了“监督者、干预者、博弈者”,人机关系一变,人的行为就会跟着变,系统对环境的影响方式也会变。这个连锁反应,往往比任何一个算法模块的缺陷都更决定项目死活。

所以我现在看任何一个系统,第一反应不是看它的技术方案有多先进,而是先画一张人机环关系图:谁是人,谁是机,什么是环,它们之间交换什么信息、什么能量、什么约束。这张图画清楚了,后面所有技术决策才有讨论前提。

1.2 三种“算”同时在场:计算、算计、天算的定义与关系

中文里“算”字有多层含义,正好对应了系统设计里三个不同层级的作用机制。

第一层是“计算”。这是最狭义也最正式的含义:用算法、模型、数据,在明确约束下求精确解。它对应的是机器可以形式化的部分,包括感知、建模、寻优、控制、预测。

第二层是“算计”。这个词在日常语境里略带贬义,但我这里取的是它的中性含义:有意图、有博弈性地权衡利弊、预判他人行为。任何一个有目标的主体,无论是人、组织还是另一套系统,都会在规则之下做策略性应对。这种应对可能是正向的,也可能是逆向的,但它一定存在。

第三层是“天算”。中国人常讲“人算不如天算”,这不是迷信,而是在表达一种系统观:单个主体的策略计算,会被更大尺度、更长时间维度的规律所约束和修正。这些规律包括物理规律、生态规律、市场规律、社会注意力规律等等。你算得再精妙,只要和这些大尺度规律作对,最终一定会被规律“找补”回来。

三层算的关系可以这样理解:计算负责“把能形式化的部分算准”,算计负责“把人的策略性应对纳入设计”,天算负责“认清哪些东西不可设计、只能顺应”。三者不是层级替代关系,而是同时存在、互相制约。很多时候项目失败,不是某一个“算法错了”,而是三层算力之间出现了断层:计算层以为自己说了算,算计层的真实行为却不买账;或者算计层设计得再精巧,天算层的大系统规律直接不给你发挥余地。

2. “计算”的本分:形式化在什么情况下有效,又在什么情况下失效

先把计算层说透。因为大多数系统设计者最熟悉、也最依赖的就是计算层,它提供的是一台机器的“确定性”。但这种确定性是有前提的,前提一旦发生变化,计算结果就从“最优解”直接变成“最优的错解”。

2.1 计算很强,强在有边界、可重复

计算层能解决的核心问题,可以归纳成五类。状态感知:用传感器和数据把系统当前状态表达出来;预测推演:基于历史数据和模型,估算未来状态;方案寻优:在约束条件内寻找最优或可行解;控制执行:把决策结果转换成机器可执行的动作;复盘迭代:用回测、统计推断、效果评估来改进模型。

这五类能力的共同点是什么?是可形式化、可验证、可重复。同样的输入,输出是稳定的;输出稳定,就能做回测;能回测,就能逐步优化。这一点极其重要,因为算计和天算这两个层面,都很难做到这种程度的可验证性。所以不管系统复杂到什么程度,计算层永远是最有价值的基石。没有它,后面两层讨论都是空中楼阁。

但问题也恰恰出在这里:计算层太“好用了”,好用到现在很多人把它当成了系统设计的唯一维度。算法工程师写代码,优化的是目标函数;产品经理定指标,盯的是数据看板;管理者看报告,关心的是KPI走势。所有动作都在计算层闭环,仿佛只要模型够好,现实就会自动跟着变好。这种思维在物理规律稳定、人为干扰极小的环境下是成立的,但一旦环境开始波动、人开始“不按套路出牌”,计算层的确定性就开始失真。

2.2 计算的三个失效面:目标失真、前提失稳、语境失全

我总结过计算层的三类典型失效情况,几乎覆盖了大多数“算法看起来很准,实际用起来不灵”的场景。

第一个失效面叫目标失真。我们在系统里优化的大量指标,其实并不是真正的业务目标,而是“方便被量化的代理指标”。仓储调度里,算法优化全局最短路径,但业务真正关心的是履约稳定性和顾客体验;路径最短不等于订单及时率高,更不等于现场作业疲劳度低。再比如推荐系统,算法优化点击率,但平台真正需要的是长期用户信任,这两者在短期内可能方向一致,长期却可能严重背离。目标一旦失真,计算层越强大,系统反而越可能朝错误方向高速狂奔。

第二个失效面叫前提失稳。形式化模型必须以假设为前提,假设设备稳定、假设需求平稳、假设所有节点畅通。但现实系统无时无刻不在“蠕动”:某台AGV因为低电量临时脱离队列,某条巷道因为货物堆放被堵住,某批订单突然加塞变更优先级。前提只要一破,模型输出就会从“最优方案”瞬间变成“错误方案”。很多做智能调度的人都有这种体验:模型在仿真里跑一百遍都没问题,一接实际数据就频繁告警,原因往往不是模型写错了,而是模型的假设前提太干净了,干净到现实世界根本不具备。

第三个失效面叫语境失全。计算只能处理那些已经被表达出来、被数据化的变量。但真实系统里大量决策依赖的语境信息,比如操作员的情绪状态、管理层的考核导向、团队内部长期形成的协作习惯,根本无法进入目标函数。这些语境变量虽然没有被算进去,却有资格否决目标函数的执行效果。它们像水面下的冰山,算法看见的只是露出水面的那一角。

一句话总结:计算像GPS导航,它规划的是“忽略司机情绪、忽略封路信息”的直线最优,发布最优路径依赖实时路况、限行规则和用户偏好。但导航再好,只要司机不是想去最近的目的地,而是因为那条路让他心烦而主动改道,算法结果就必然失真。

2.3 一个典型的“算不准”复盘:问题往往出在形式化的前提,而不是算法本身

回到那个AGV项目。第一次优化失败后,我们把目标函数改成了动态惩罚机制,希望惩罚那些会引发拥堵的路径策略。但连续观察几天,拥堵依旧准时出现。后来翻了两个月的现场日志,才发现真正的原因根本不在目标函数里:调度策略激进的时段,恰好是工人午饭前后的时间段。午饭前,大家都想把手头任务收尾,形成了一股同时向高密度巷道聚集的冲动;午休结束后,又集中返回作业区,短时间内制造出剧烈的人流和设备流叠加。

这就是一个很典型的“前提失稳”加“语境失全”的混合案例。算法假设现场流量在时间维度上是均匀或平滑变化的,但人的作息节律制造了明显的尖峰;影响流量的关键因素不是AGV路径规划,而是人的生理节律和工作心理。算法再聪明,也算不出“工人想吃午饭”这个变量。后来我们只是把午间调度策略改成保守模式,拥堵率立刻明显下降。

这段经历让我形成了一条经验:当计算层反复调优无效时,大概率不是参数没调好,而是模型边界和真实世界的边界没有对齐。这时候最该做的不是继续加参数,而是回头审视:我把什么问题形式化了?有什么该被形式化的问题被我漏掉了?漏掉的变量是不是才是真正的主变量?

3. “算计”的复权:别把人的策略性应对当成噪声

如果说计算层是“机器的逻辑”,那么算计层就是“人的逻辑”。系统设计里最常犯的一个错误,是把人的策略性应对当成随机的、可以忽略的干扰噪声。实际上,这不是噪声,这是有意图的博弈行为,它比噪声更难对付,也更容易被设计者误判。

3.1 人不是“理性平均值”,人是博弈者:算计的正与反

几乎所有规则被公布的那一刻起,就会出现两类人:一类顺着规则做事,一类绕开规则做事。系统设计者往往习惯把第二类行为标记为违规、恶意、bug,但从行为者的视角看,这不过是在资源限制下的适应性策略。任何有自主目标的主体,都会对外部约束做权衡——遵守规则带来的收益高,就遵守;绕开规则收益更高且风险可控,就绕开。

这种现象在经济学和管理学里早已被反复验证过,叫做“激励扭曲”或“套利行为”。但我更愿意把它看作一种决策智能:它帮助主体在约束条件下最大化自身利益,只不过主体的利益排序,未必和系统设计者的排序一致。一线操作者绕过调度系统走熟路,从“减少个人体力消耗、保持熟悉感”这个目标看完全理性;但从“系统全局稳定”的目标看,就成了需要治理的偏离行为。两种理性碰撞的结果,就是系统实际运行状态和仿真状态的分道扬镳。

所以我现在特别反感“唯一正确答案”这类表述。在一个有人参与的系统里,几乎不存在唯一正确答案,只存在“在某个博弈格局下,各方利益暂时达成均衡的可行解”。所谓“算计”,就是要在这种均衡形成之前,提前预判每个主体的应对方式。

3.2 好的系统设计不消除算计,而是引导算计

理解了算计的必然性之后,真正的问题就变成了:既然人一定会算,那设计者应该怎么和这种算相处?

我的答案是:不要试图消灭它,而是引导它。消灭算计意味着把人的所有自由度都锁死,结果是系统失去灵活性,同时逼出更多隐蔽策略。引导算计意味着设计者明确知道“人在什么端口上会算”,然后主动把那些端口的设计目标调整为系统性预期的方向。

实操上,有三种被验证过比较有效的方式。

第一是激励结构对齐。把个人利益和系统利益写进同一个公式。比如调度系统允许操作员选择任务,但不同任务积分不同,积分又与个人绩效挂钩。这时候“为自己选任务”和“为系统完成任务”就是同一件事,算计自然变成系统动力的放大器。

第二是规则留出选择空间。不要用算法把所有决定都做完,而是在少数关键节点允许用户行使有限的修改或覆盖权。这看起来是“放权”,实际上是在降低被对抗的可能性。人有干预感,就更愿意配合;有自主感,就更少产生对抗冲动。

第三是建立博弈反馈通道。把“被绕过的规则”当成信号而不是违规。每一条被绕过的规则都暴露了原规则与现实之间的裂痕,系统设计者应该快速修正这些裂痕,而不是记仇式地加惩罚。历史上很多成功的协议,都是在“被钻空子—修复—再被钻空子—再修复”的过程中成熟起来的。

这三种做法看似是让步,本质上是把治理成本转变成设计成本,把“事后对抗”转变成“事前设计”。

3.3 把“算计”纳入建模的简易方法:三类主体清单

很多技术团队一听“要把算计纳入建模”,第一反应是“这怎么建模?量化不了”。我提供一个非常简单的方法,不需要复杂算法,只需要一张表。

任何一个包含人的系统,至少先拆出三类主体。第一类是执行者,也就是手脚直接接触系统的人,关心他们从行为中获得了什么收益,会怎样调整行为频次;第二类是使用者,也就是把系统当工具的人,关心他们会把哪些功能变成习惯,把哪些功能变成规避对象;第三类是管理者,也就是制定规则和考核的人,关心他们会根据指标怎么调整策略,甚至怎么改变工作流程。

针对每一类主体,列一行这样的清单:主体身份、拥有的自由度、能看到的信息、其利益函数、最可能采取的策略、该策略会利用哪条系统规则、如何通过激励方式反转策略结果。这张表写完之后,系统设计者通常会有两个发现:第一,自己原来一直是被“算计”的对象,只是没意识到;第二,大部分所谓恶意行为,其实都是可以预判和引导的正常博弈策略。

举个生活化的类比:就像一个城市设计者,不应该假设所有行人都会走斑马线,而是默认有人会斜穿马路、有人会翻护栏,然后把护栏高度、路口间距、斑马线位置当成博弈变量来调整。这才是把算计纳入设计的姿势。

4. “天算”的提醒:系统自组织和环境约束决定最终空间

如果说计算层是“机器的逻辑”,算计层是“人的逻辑”,那么天算层就是“更大系统自身的逻辑”。这一层最容易被忽略,也最让设计者无力,因为它不服从任何单个主体的意志。

4.1 把“天算”翻译成现代系统语言:大尺度规律的总称

“天算”这个词带着很强的文化意味,但我建议把它理解成一组大尺度规律的集合:物理规律,比如能量守恒、熵增、摩擦损耗;生态规律,比如承载能力有限、反馈回路断裂便走向崩溃;市场规律,比如供需弹性、均值回归;社会规律,比如注意力稀缺、信任成本递增。

这些规律的共同点是:它们不因为某个个人或组织的意愿而改变,只在更长的时间尺度和更大的空间尺度上稳定发挥作用。我们常说的“人算不如天算”,翻译成系统语言就是说:任何个体的策略计算,在大尺度规律面前都只是局部调整,无法改变系统收敛方向。

这里有个关键认知:天算不是“不可知”的玄学,它恰恰是可分析的,只是分析尺度要大得多。一个人可以在短时间内用算法优化一条产线的效率,但他无法用一个季度的时间改变一座城市的交通吞吐总量上限。城市总吞吐量就是一种天算,它由道路空间、信号配时、驾驶员反应速度共同决定,单台车的导航再聪明,也只是在“整体容量”这个大常数下做微调。

4.2 为什么“越设计越复杂”往往就是天算在起作用

系统设计者经常掉进一个难以察觉的陷阱:当系统开始出现波动,第一反应是增加规则去压制波动;规则导致新的适应行为,于是再增加新的规则。如此循环,系统越来越复杂,稳定性却越来越差。

这种“越设计越复杂”的模式,本质上是设计者在和天算拔河。他们想通过精细化控制,改变那些根本不由他们决定的宏观结果。比如在物流场地里,无论算法怎么优化路径,场地的物理总面积、门禁口数量、车辆转弯半径都是固定的;这些硬约束构成了系统的“物理天算”,企图通过增加控制策略绕过这些约束,结果只能是策略数量增加、物理天花板却纹丝不动。

更合理的做法是停下来,先识别哪些是“不可设计的层”。把不可设计层当成预算约束或边界条件,然后把设计的精力转移到可以做局部调整的地方。就像冲浪者不会试图改变海浪的方向,而是等着浪来时调整自己脚下的位置。这不叫消极,这叫对一个更大系统规律的基本尊重。

4.3 项目里识别“天算”信号的几个线索

既然天算这么重要,怎么在具体项目里识别它?我总结过几个出现频率很高的信号。

一个是反直觉的周期。无论你怎样调参,系统都会出现固定节律的波动,比如午高峰、月末峰值、季度考核周期。这说明宏观节律在主导结果,计算层的参数只影响局部形状。

另一个是衰减效应。每次优化带来的边际收益越来越小,第一次优化可能提升百分之二十,第二次只有百分之五,第三次几乎没有变化。这时候系统很可能已经逼近物理或生态极限,再加大投入也只是在极限线上摩擦。

还有一个是模式转移。你压制了某一个问题,它却变成另一种更隐蔽的问题出现。例如提高了分拣速度,质检漏检率上升;缩短了排队时间,投诉率反而增加。这种位移说明你并没有改变系统底层规律,只是把压力推到了另一个节点。

最后是边界僵化。无论投入多少资源,某个关键指标都停留在一个极限值附近,像一堵看不见的墙。出现这些信号时,就不要再纠缠计算层的参数和算计层的激励策略了,该考虑是不是有更大的规律在起作用。

5. 三“算”协同:一张实用的判断路线图

前面说了很多理论层面的东西,这一节讲讲怎么落地。我有一套实际项目里反复用过的思路,本质上就是三张清单和三道门,先拆问题,再定策略,最后验证。

5.1 先把问题拆成三个区间:可控、可博弈、只能顺应

没有什么问题是一上来就能“全面优化”的。拿到一个问题,第一件事永远是分类,拆成三个区间。

第一类是可控区间。机器能准确感知、能形式化建模、输出可被验证,这一类问题放给计算层处理,适合做定量优化。

第二类是可博弈区间。问题中涉及有自主目标的人或组织,各方会基于自身利益做出策略性调整,这类问题放给算计层,适合做机制设计,而不是纯计算优化。

第三类是只能顺应区间。问题背后有物理规律、生态承载力、市场长期趋势这些不可直接调控的大尺度约束,这类问题放给天算层,能做的只是适配、避险和等待时机。

分类的过程通常会颠覆团队的认知。有一次我和一支技术团队做方案评审,他们花了两周时间优化一个推荐策略的参数,结果发现核心瓶颈是用户对新推荐位的不信任,这是一个典型的可博弈区间问题。参数优化优化到天,只是在可控区间里打转,完全没触及真正的瓶颈。

最容易犯的错误是把“只能顺应”的问题当成“可控”问题来解决,用加规则、加控制的方式对抗客观规律,结果就是白白消耗资源。正确的态度是不跟地心引力较劲,而是顺着它设计出椅子、楼梯和电梯。

5.2 落地五步核查表:把你的方案过一遍这三层

我会用一张五步核查表来验证一个方案是否真的覆盖了三层“算”。

第一步,划定形式化边界。明确自己要“计算”的问题边界:哪些变量进了模型,哪些数据可信,哪些输出可以验证,哪些变量明确不进入模型。这一步是防止目标失真和语境失全的前提。

第二步,设定博弈坐标。把方案放进利益相关者网络中,逐个问:谁有动机偏离方案?偏离端口在哪里?方案释放了什么信号诱使偏离?是不是某些规则写着“请配合”,但激励结构写着“请对抗”?

第三步,剔出天算变量。把暂停不了、调节不了、只能接受的约束条件单列出来,明确标注为边界而非目标。比如场地总面积、总通行时间、人的注意力上限,这些都是天算变量,不要混进优化目标里。

第四步,设计三层接口。为计算层设计标准化输入和可回滚输出,为算计层预留选择通道和反馈通道,为天算层设定缓冲余量和止损阈值。三层接口缺一不可。

第五步,建立验证闭环。至少准备两套对照方案,一套是不做任何算计设计的纯计算方案,一套是加入了博弈缓冲和天算适配的方案,用实际运行数据验证哪套更能扛住波动。

这张表看起来简单,真做起来往往需要好几个来回才能填完整。但每次填完,方案质量都会有肉眼可见的提升,因为它是逼着你把视角从“算法内部”抬到“系统全局”。

5.3 用对照实验验证“三算”框架:一组真实的实验数据

我们接着讲仓储项目的第二轮实验。当时我们按三算框架把方案拆成了三组来做对照。

A组是纯计算方案:路径最短、时间最短,所有决策由算法统一调度。B组在A组基础上加入算计设计:允许操作员有限改派,增加窗口授权,同时调整绩效公式,让个人顺手的行为和系统目标一致。C组在B组基础上再加入天算适配:根据午间人流节律和场地物理瓶颈做时段错峰,把“总吞吐量上限”作为规划硬约束。

两周实验结果差别明显。A组异常事件和高峰拥堵率最高,操作员抵触情绪也最明显。B组在A组基础上降低了约三成异常事件,主要是改派授权和绩效调整之后,人为绕行减少了。C组在B组基础之上又降低约两成违规绕行和高峰拥堵,因为错峰策略让人流和设备流不再互相踩踏。

这个对照实验给我的印象非常深。它说明每一层“算”都在弥补其他层的盲区,多花一点点功夫把三层同时纳入,得到的不是某一个指标的提升,而是系统整体韧性的提升。所谓“整体韧性”,就是面对波动不失控、面对偏离能纠偏、面对物理边界不硬撞的能力。

6. 最后分享一点我的个人体会

写到这里,我想起那个AGV项目后来是怎么收尾的。我们最终没有选择单一的“最优策略”,而是把调度参数改成了时段敏感模式,给工人保留了有限改派的通道,甚至允许低峰时段人工完全接管巷道。设备利用率其实略有下降,但整体吞吐量反而稳定上涨。

我自己的感受是,所谓的计算、算计、天算,不是什么哲学口号,而是三个必须同时出现在系统设计文档里的检查项。计算再重要,也不能忽略人会用自己的行为投票;算计再精巧,也不能忽视更大尺度的规律会把小聪明折算成成本;天算再硬,也需要前两层去创造局部空间,在约束里找到生存缝隙。

后来每一次拿到新项目,我都会先问自己一句:我现在算的,到底属于哪一个层级?如果连这个问题都答不上来,那后面做的所有优化,很可能只是在自己的想象里自嗨。先把“算”分层,再来谈怎么算,这句话值得写进每一个系统设计评审的第一页。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进