做分布鲁棒优化(DRO)的人,最容易踩进的一个陷阱,就是把模糊集当成一个固定不动的“球”。项目里用到的标准做法是这样的:手里有一堆历史样本,构造一个经验分布,再以它为中心拿 Wasserstein 度量画一个半径为 ε 的球,最后在球里面找最坏情况分布做 min-max 决策。这套框架本身很成熟,但如果你面对的是一个带先期投入、后期还能动态调整的“混合决策”问题,固定模糊集就会变得非常拧巴:你在第一阶段砸下去的钱、签下的合同、铺设的产能,本质上都会改变后续不确定性分布的形态和可观测性,可模糊集却纹丝不动。
后来我干脆把模糊集也变成一个随决策状态、随观测信号不断进化的对象,做了一套“基于混合决策的完全自适应分布鲁棒”方法。这套方法里,Wasserstein 球不再被静态地钉在历史经验分布上,它的中心、半径都会随着第一阶段的不可逆决策和第二阶段的反馈状态同步调整。最终在库存-产能联合决策这类典型问题上,无论是平均成本还是最坏情况表现,都明显优于“固定模糊集 + 两阶段决策”的常规路线。
这篇文章会把整个建模动机、数学形式、求解思路以及数值实验里踩过的坑完整记录下来,既写给想自己做决策相关分布鲁棒优化的同行,也写给那些已经在用 DRO 但总感觉“差点意思”的人。
1. 固定模糊集为什么在混合决策环境里会失效
1.1 场景一:第一阶段决策本身就改变数据生成过程
第一次注意到固定模糊集有问题,是在一个分销网络的产能扩张项目里。业务方想同时决定两件事:要不要在某区域增加一条产线,以及增加之后每条产线的最优生产量。经典的建模思路是把产线扩张当成第一阶段二元变量,把生产量当成第二阶段可调变量,然后套一个 Wasserstein DRO。
听起来没有任何问题,但业务方提了一个很实际的需求:新增产线会伴随一系列市场动作,比如区域促销、渠道补贴、门店陈列资源倾斜。这些动作会改变需求分布本身的均值甚至尾部形状。也就是说,当你把“是否扩产”这个决策变量从 0 变成 1 的那一刻,原先统计出来的历史需求样本就不再是当前决策下的真实分布样本了。严格说,未来需求的概率分布是这个决策变量的函数。
传统 DRO 的模糊集完全没考虑这层反馈。经验分布始终来自旧数据,Wasserstein 球也只能在这个旧中心附近摆动。模型能捕捉样本噪声,却捕捉不到“决策带来的分布漂移”。你投资一条产线,需求上去了,旧模型还在按没有产线的历史分布算风险,结果就是库存水平系统性偏低,缺货惩罚全部暴露在最坏情况之外。
这类问题在文献里叫内生不确定性(endogenous uncertainty),但落到实际项目里,更常见的说法是“决策影响数据生成”。它不是一个纯理论现象,几乎所有带市场反馈的产能、定价、产品组合决策都会遇到。
1.2 场景二:观测到部分信号后,分布的不确定性应该收缩
另一类更隐蔽的失效发生在多阶段决策中。比如一个两阶段库存问题,随机需求向量 ξ 被拆成 ξ₁ 和 ξ₂ 两部分。第一阶段你做出初始订货决策,只能看到 ξ₁ 的分布;等第一阶段结束, ξ₁ 已经真实发生,这时你手里多了一条非常关键的信息——整个随机过程的一部分已经被观测了。第二阶段的可调决策本应该利用这条信息,把不确定性范围大幅收缩。
如果硬套静态 DRO,第二阶段面对的模糊集和第一阶段一模一样,都是基于全量历史样本的同一个 Wasserstein 球。没有任何机制告诉你“既然 ξ₁ 已经等于某个具体值,那 ξ₂ 的条件分布大概率落在某个更窄的区域里”。这不是模型保守不保守的问题,而是模糊集没有跟随信息状态更新,白白浪费了已经观测到的信息。
后来在文献里看到有人把这叫 distributionally adaptive,其实翻译成大白话就是:分布层面的决策也应该具备“看到什么再决定信什么”的能力。分布鲁棒不该只在决策变量层面做 wait-and-see,模糊集自身也应该有 wait-and-see 结构。
1.3 问题根源:决策、信息和分布三者被割裂了
把上面两种场景放在一起,可以看出共同的病根:目标函数里的决策变量、约束里的决策变量,以及概率分布三者之间本来是相互作用的,但标准 DRO 只保留了决策变量到目标函数的映射,把分布锁死成一个外部输入。
你仔细想想,决策变量对不确定性分布的影响通常不是通过目标函数传递的,而是通过“信息状态”传递的。投资扩产,本质是花钱买了一个新信息状态,这个状态下需求分布的中心可能偏移,方差可能改
