Skip to content

滚动优化与重优化 ​

滚动优化处理业务状态随时间变化的决策:新订单到达、设备不可用、已执行结果偏离计划。它不是把同一个模型重复运行,也不同于时间片轮转对计算资源的分配。

1. 三个时间范围 ​

规划时域覆盖本次考虑的未来;执行窗口决定这次真正下发的动作;冻结窗口限制已经承诺、不能随意变化的决策。三个窗口可以不同,不能把远期建议当成已执行事实。

每次滚动先读取实际执行状态,再构造新输入。未完成任务延续,已完成任务退出,库存或设备状态成为新初始条件。旧计划不是现实状态的唯一来源。

2. 例子:两期生产与稳定性 ​

概述、实体与集合 ​

生产上下文在两个时段 T={1,2} 满足累计需求。每期容量 Kt=5 件,累计需求 D1=3,D2=8 件。旧计划为 x¯=(4,4),第一期已承诺 4 件,但尚未执行。单位生产成本为 1 元/件,计划变动代价为 2 元/件。

变量与中间值 ​

xt∈Z≥0 表示本次计划产量(件)。辅助变量 vt≥0 表示用于惩罚的绝对变动量。累计产量与成本定义为:

Pt=∑k=1txk,C=∑t∈Txt+2∑t∈Tvt.

冻结集合 F={1},可调整集合为 T∖F。数据断言要求累计需求不下降、容量非负。

约束与目标 ​

s.t.0≤xt≤Kt∀t∈T,Pt≥Dt∀t∈T,xt=x¯t∀t∈F,vt≥xt−x¯t,vt≥x¯t−xt∀t∈T.

最小化 C。由于变动系数为正且无其他关系迫使 vt 增大,最优时 vt=|xt−x¯t|。这一性质依赖目标,不是无条件函数图像定义。

新需求与结果 ​

若累计需求改为 D2=9,冻结第一期后可选最优方案为 (4,5),总生产 9 件、变动 1 件、成本 C=11。旧计划 (4,4) 不再满足需求,不能因为曾经可行就自动作为回退。

若同时第二期容量降为 4,则冻结条件下无法满足 9 件需求。应报告冲突或通过业务批准调整承诺,不应悄悄删除冻结约束。

3. 重建、增量修改与 warm start ​

业务语义上,每次运行是一个有明确版本的新场景。实现可以重建模型,也可以在后端允许时修改参数或增量结构,但需要保证剩余旧状态不会污染新模型。

warm start 提供候选变量值或后端支持的恢复信息;它不证明候选在新数据下可行,不保证搜索树复用,也不保证更快。新增变量如何初始化、删除任务如何映射,都必须以业务身份处理。

4. 已执行与已承诺的区别 ​

已执行结果应成为事实,例如第一期实际只完成 3 件,则剩余需求从实际量计算,而不是仍把旧计划 4 件计入累计完成。已承诺但未执行的动作则可以用冻结约束表达。

冻结规则来自业务,不是求解器默认能力。确需解冻时,应保留改变了哪些承诺及原因。时间推进导致窗口移动时,还要避免把同一需求重复计算。

5. 超时、稳定性与业务使用 ​

超时后有可行解时,可按业务质量要求决定是否下发执行窗口;没有可行解时,只有经过新输入检查的旧方案或明确可行的应急策略才可使用。

稳定性可按产量变动、换机次数或开始时间偏移定义。不同量纲不能直接相加,权重也不能替代必须保持的承诺。硬冻结与软变动惩罚需要分开。

6. 在 OSPF 中组织职责 ​

业务上下文提供实际状态、变量及稳定性指标;应用决定滚动触发、时域、冻结政策和方案发布;后端负责求解。每轮结果保留输入版本,避免将旧运行的迟到结果覆盖新方案。

进一步阅读多目标优化与软约束、不可行性分析和场景分析。