随机规划与情景树
随机规划用带概率的情景描述决策时尚未知道的量。建模的首要约束是时间顺序:今天决定的量,不能因为模型把明天的两种结果都列成两行,就在两行里偷偷取不同值。情景树把每次获得新信息的时刻画成分叉,分叉前的决策必须共享。
先订货,后补货
设活动前先订 件,单价二元;活动当天才知道需求 :需求四件的概率为 ,需求八件的概率为 。不足部分当天可以每件五元补购,未卖出的先订货物没有残值。这里的概率和价格只是用于讲解的一组合成设定,不是实际市场估计。
若当天已知道需求,可分别订四件或八件;但活动前只有一个订单 。设看到情景 后的补购量为 ,满足 。完整的两阶段模型是 若商品不可分,另加 ;本例连续模型的最优 恰好为整数。图上左右两条枝分别对应低、高需求;分叉后的补购量可以不同,分叉前的 却只有一个。
把小例算到底
由于补购单价为正,给定 时最优补购是 、,其中 。于是目标成为单变量分段函数 在 ,两种情景都要补购,故 ,增加先订量每件使期望总成本下降三元。在 ,只有高需求情景要补购,,再多订反而每件增加期望成本零点七五元。 时无需补购, 继续增加。因此最优先订 ,低需求不补,高需求补四件,期望成本 元。
还可用斜率检查概率假设的影响。若高需求概率改为 ,则在 上 ; 时订四件, 时订八件,恰好 时四至八件的任一先订量有相同期望成本。这个阈值由“多预订一件的成本二元”和“仅在高需求发生时节省五元”比较得到。
非预见性与多阶段树
若为每个情景复制一份初始变量 ,就必须加非预见性约束 ;也可像上面直接只用一个 。不加这条约束的求解器会在低需求枝取四、高需求枝取八,相当于提前知道结果,给出不可执行的乐观值。
多阶段问题在每个节点上先观察已到达的信息,再作下一步决策。两条最终路径在某阶段以前若拥有完全相同的观察历史,就要共享该阶段的决策;只有分叉以后才可以不同。把情景概率 加总为一,并检查每个节点的子枝条件概率也加总为一。情景表来自样本估计时,还须说明罕见情形是否被遗漏,不能仅靠加大情景数掩盖概率校准问题。
验证与风险
本例以期望成本为目标,允许高需求时补购。如果临时采购有断供风险,应添加补购容量、库存约束或缺货损失,最优订量可能改变。对能源调度等题目,储能水平要在情景间沿时间递推,不能每个时段独立清零;鲁棒优化更适合表达必须在整个指定不确定集合内都满足的硬限制。
实际评估时,先用训练期资料拟合情景及概率,在留出的未来期按当时可获信息重新决策,逐期记录实现成本、缺货次数、约束违规和一个简单基线。不能用最终真实需求回填历史决策,也不能把模型求解器的样本内最优值当作部署后的平均表现。
参考资料与相关词条
- Stanford MSE 348《Optimization Under Uncertainty》,两阶段与多阶段决策、情景树。
- Pyomo 文档:含非预见性约束的 extensive form。
- 相关:概率、期望、整数规划、鲁棒优化。