数值稳定性与建模质量
数值建模关注的是:在有限精度、有限域和求解器编码下,模型的数学含义仍然成立。反复需要明确的四项声明是:变量边界、单位与缩放、任何 Big-M 常数的推导方式,以及严格边界或等式边界上容差的解释。
本页通过一个小型生产模型展开这些概念,同时说明何时改写是精确的、何时是有意的近似,以及如何用对称性破除规则去掉重复解而不改变业务最优值。讨论与求解器无关,不虚构当前 OSPF API。
1. 为什么边界与单位属于模型语义
有限边界不只是性能提示。它决定模型允许哪些方案,也常常提供条件约束或析取约束所需的证明。如果
单位同样重要。残差
缩放是有意的变量代换,用来使系数和残差处于相近数量级。缩放应当作为模型变换的一部分记录,而不是只对打印给求解器的矩阵进行处理。
2. 完整的有界示例:两个相同工厂
2.1 业务描述与数据
有两个完全相同的工厂,总产量必须为五个整数单位。开工工厂最多生产六个单位,开工固定成本为 4 美元,每个生产单位的成本为 1 美元。“大批次”表示一个工厂的产量严格超过三个单位。大批次指标会被下游规则使用,因此模型必须正确分类。
| 工厂 | 产量上界 | 开工固定成本 | 单位成本 |
|---|---|---|---|
| $4 | $1 | ||
| $4 | $1 |
两个工厂在所有数据和规则上都相同,所以交换工厂标签不应改变可行性或成本。
2.2 变量、中间值与约束
令
定义总产量和总成本中间值:
需求与开工规则为:
第二条在
对于整数产量,“严格超过三个”精确等价于
最后选择两个工厂标签对称类中的一个代表:
成本目标为:
虽然
2.3 推导 Big-M 值
对于下界分支,当
因此
对于上界分支,当
因此
使用一个通用的
一般地,对上界条件行
最小的非负有效值由下式决定:
对下界条件行
则使用:
最大值应在声明的域及其背景约束上计算,而不是在一个无界的数学变量上计算。对仿射
2.4 手算一个最优解
考虑:
总产量为
任何可行方案都必须至少开工一个工厂,因为
如果没有对称行,
3. 以声明单位进行缩放与容差换算
假设一个相关时间变量原本以分钟表示:
定义小时变量
例如,分钟等式
所有相关量也必须一起换算。
约束同一个时间表达式的 Big-M 若原来是
4. 严格不等式与精确/近似边界
4.1 整数变量:精确转换
对于整数
因此,工厂示例中的两个 Big-M 行能对
| 有效 | |
|---|---|
离散边界没有理由使用
4.2 连续变量:声明的余量是政策选择
对于实数
此时
余量应来自测量分辨率、合同政策或声明的分离要求,而不应只因为它小于求解器可行性容差就随意选择。如果开区间中的值有业务意义,应显式建模第三种状态,或采用能够表达该语义的方式;不要把两分支近似悄悄标成精确。
4.3 数值容差不是严格边界余量
对于等式
这个带宽说明如何分类计算得到的解。业务余量
5. 对称性破除
两个可互换工厂会产生两个交换标签后的见证。由于两个工厂在域、容量、成本和其他规则上完全相同,
相对于目标值,对称性破除是精确的:每个方案都可以置换成满足代表性规则的方案,并保持相同的目标和业务含义。它本身不会改善业务计划,只会减少重复搜索分支,并使代表解的选择更可预测;如果还存在其他对称性,它并不保证完整方案唯一。
如果两个工厂在成本、容量、可用性、质量或任一约束上不同,该规则就不再有效。交换标签可能改变可行性或价值。安全的模型应在加入对称规则前确认完全可互换,包括可选规则和成本。类似的字典序代表规则也可用于可互换车辆、房间或相同机器。
6. 精确改写与近似
审查数值模型时,可以使用下面的分类:
| 构造 | 在所声明模型中的状态 |
|---|---|
| 精确的开工连接 | |
| 整数 | 精确的离散严格转换 |
| 根据有效边界得到 | 精确的指示分支 |
| 不进行舍入的 | 精确的坐标变换 |
| 对实数 | 声明的保守近似 |
| 接受 $ | a(x)-b |
| 对真正相同的工厂使用 | 精确且保持目标值的代表选择 |
精确性描述的是针对已声明域、边界和单位的数学变换。数值接受容差是独立的报告或求解器约定;它不会把近似或开边界政策变成精确等式。如果边界只是估计,根据它推导的 Big-M 就不是证明;如果缩放过程中舍入了输入数据,变换在代数上也不再精确。
7. 在 OSPF 中的概念性组织
可以通过以下概念职责让数值语义保持可见:
- 数据或领域上下文拥有物理单位、有限边界、整数性、数据精度以及用于对称性的等价类。
- 模型上下文拥有原始业务规则:开工、严格服务阈值、等式和允许的近似余量。
- 编译边界推导逐行边界与 Big-M,执行已记录的缩放,并保留每次转换是精确的、基于容差的还是近似的。同时应保留每条生成行所依据的源规则。
- 求解结果上下文以缩放单位和业务单位报告数值、残差、分支指标、目标值、对称代表选择,以及任何未解决的数值或最优性状态。
编译器架构 讨论语义模型与后端机制的分离。求解结果 从报告角度说明:没有单位、残差容差或证明状态的解值是不完整的。在询问某个目标为何不能改善时,临界约束分析 应使用原始有界规则及其业务语义,而不是一个没有解释的内部 Big-M 行。
这里的组织是概念性的,刻意不暗示某个当前的类名或函数名。
8. 常见陷阱
8.1 猜一个通用 Big-M
过大的常数会削弱连续松弛并放大舍入误差;过小的常数会删除有效方案。应从有限边界推导每个 M,并写出推导过程。如果没有可靠边界,应先改写或取得边界,而不是用更大的数字掩盖不确定性。
8.2 边界与数据不一致
如果声明容量为六,但输入行允许产量八,那么有效数据要么让模型不可行,要么说明边界错误。Big-M 推导、缩放和对称性声明都依赖同一个权威边界。
8.3 用机器 epsilon 表示业务边界
严格服务阈值不会因为加上
8.4 换算单位前比较残差
8.5 对非相同对象应用对称性
如果机器容量或可用性不同,按任意 ID 排序并不安全。加入代表性顺序前,应验证包括可选规则和成本在内的完全可互换性。
8.6 把近似当成等价
epsilon 余量会产生空档;舍入系数会改变边界;近似的非线性包络可能遗漏可行点。应标注该选择,量化受影响的单位,并把它写进结果和审查证据。
8.7 忘记缩放目标与报告
把变量从分钟改成小时却保持目标系数不变,会改变该目标的相对价值。加权多目标项也一样。应一致地转换约束、目标、容差和展示值。