决策变量是模型需要选择的行动量,例如产多少、运多少、是否建设。参数是当前已知的成本、需求和资源上限。
变量定义必须包含对象、时间、单位和取值类型。定义模糊会让后续每个公式都失去现实含义。
示例:xij=从仓库 i 运到门店 j 的数量(箱/日),xij≥0;yj=是否启用站点 j,yj∈{0,1}。
变量表中同时写符号、含义、单位、索引范围、连续/整数/0–1。任何公式都只使用已定义符号。
模型能改变什么
“每月最多有 1000 小时机器时间”是变量,还是已经给定的参数?
决策变量是模型需要选择的行动量,例如产多少、运多少、是否建设。参数是当前已知的成本、需求和资源上限。
变量定义必须包含对象、时间、单位和取值类型。定义模糊会让后续每个公式都失去现实含义。
示例:xij=从仓库 i 运到门店 j 的数量(箱/日),xij≥0;yj=是否启用站点 j,yj∈{0,1}。
变量表中同时写符号、含义、单位、索引范围、连续/整数/0–1。任何公式都只使用已定义符号。
比较含糊符号与可执行变量。
不知道 x 改什么、单位是什么。
决定下周 A/B 产品生产量。
xA=下周 A 生产件数。
xB=下周 B 生产件数。
若产品不可拆分,则 xA,xB 为非负整数。
机器时间、人工时间和利润都是参数,用来评价和限制 xA、xB。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
它是模型选择还是现实给定?
已知参数,用来构成容量约束。
写对象、时间索引、单位和类型。
示例:xt=第 t 天安排的兼职人数(人),t=1,…,7,xt 为非负整数。
可行性依赖取值类型。
错误。四舍五入可能破坏约束和最优性,应在模型中显式设置整数。
二选一决策。
0–1 变量,1 表示建设、0 表示不建设。
最好什么,必须满足什么
“成本低、服务好”为什么还不是一个可求解目标?
目标函数把方案好坏压成可比较数值,例如最大利润或最小总成本。约束描述资源、需求、平衡和规则。
线性规划要求目标与约束中变量均以一次线性组合出现,不能包含变量相乘、平方或条件跳变。
标准形式:max/min cᵀx,s.t. Ax≤/=/≥b,x≥0。每条约束左右单位应一致。
先用自然语言写“每单位占用×数量之和≤资源上限”,再翻译公式;逐条在结果上重算。
比较目标和约束的完整程度。
没有量化标准,无法比较。
A/B 利润 40/30;机器分别用 2/1 小时,总共 100 小时。
目标 max 40xA+30xB。
机器约束 2xA+xB≤100。
再添加人工、需求和非负/整数条件。
目标单位为元,资源约束左右单位均为小时。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
线性组合。
3x+2y。变量只以一次项出现且不互相相乘。
单位占用×数量≤总资源。
3x≤60,并通常有 x≥0;若整件生产则 x 为整数。
两个方向不同的目标要协调。
错误。多目标需要归一化加权、优先级、约束法或 Pareto 分析等明确处理。
量纲是公式检查器。
单位不一致说明关系无法在现实中成立,可能把件、小时、元等错误相加或比较。
先可行,再谈最优
利润最高的组合为什么可能被资源约束排除?
满足全部约束的点组成可行域。线性规划若有有限最优解,至少有一个最优解位于可行域角点。
无可行解表示约束互相冲突;无界表示目标能无限改善,常因漏约束;多个最优解表示一条边上同样好。
二维图解:画每条约束边界→判断可行半平面→找交集角点→代入目标函数比较。
求解器状态必须解释:optimal、infeasible、unbounded。看到异常状态先审模型,而不是换算法碰碰运气。
比较三类异常状态。
约束交集为空,应检查冲突或放宽条件。
约束 x+y≤6、x≤4、y≤5、x,y≥0,目标 max 3x+2y。
可行角点含 (0,0),(4,0),(4,2),(1,5),(0,5)。
分别计算目标 0,12,16,13,10。
最大值 16 在 (4,2)。
最优解 x=4,y=2,且同时用满 x+y 资源和 x 上限。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
代入目标函数。
3×4+2×2=16。
可能有多个最优解。
错误。目标函数可能与可行域某条边平行,整条边都可达到同一最优值。
无界意味着能一直变好。
是否漏了能限制变量增长的上限或资源约束。
一个是交集为空,一个是目标没边界。
无可行解是没有点同时满足所有约束;无界是存在可行点且目标可以无限改善,没有有限最优值。
调整两类资源上限和产品利润,观察最优整数生产组合。
调整左侧参数,观察模型输出怎样变化。
逐步提高机器资源,最优利润是否每次都增加?什么时候人工资源会成为真正瓶颈?
能不能拆、选不选、开不开
线性规划给出 2.4 辆车,四舍五入到 2 辆或 3 辆会有什么风险?
计数、班次、车辆等通常要整数;建设/选择/启用用 0–1。整数约束使可行点离散,不能简单对连续解四舍五入。
0–1 变量还能表达“若启用才允许分配”“至少选择一个”“二选一”等逻辑。
联动示例:x≤My,y∈{0,1}。若 y=0,则 x=0;若 y=1,x 可在 0..M。M 要取合理上界,不能无限大。
先求连续松弛作为上/下界参考,再求整数模型;比较差距并解释整数约束带来的现实代价。
比较连续、取整与整数优化。
数学上好,但可能出现半辆车。
若不开仓,发货量必须为 0;开仓后最多发 500 箱。
y=是否开仓,y∈{0,1}。
x=发货量,x≥0。
添加 x≤500y。
y=0 强制 x=0;y=1 允许 x≤500。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
约束不随四舍五入自动修复。
错误。取整可能使资源超限、平衡关系破坏或目标大幅变差。
开/关逻辑。
0–1 变量。
联动约束关闭活动。
x≤0,结合 x≥0 得 x=0。
大到有效,但不要大得离谱。
过大的 M 会造成松弛很弱、数值不稳定和求解变慢;应使用业务上合理的紧上界。
需求、平衡、逻辑与覆盖
“每个门店至少配送一次”和“总配送次数至少等于门店数”一样吗?
总量约束不能替代逐对象约束。每个门店、每个时段、每名员工通常都需要带索引的独立约束。
常见类型:资源上限、需求下限、流量平衡、覆盖、互斥、先后、联动。
“每个 j”必须写 ∀j。流量平衡:流入−流出=需求或库存变化。至少选 k 个:Σyj≥k;二选一:y1+y2=1。
为每条自然语言规则建一行约束测试,使用一个故意违规的小方案,确认公式能把它判为不可行。
比较总量与逐对象约束。
总数够,但局部可能严重缺货。
3 个门店需求分别 20、30、40。
定义 xij 为仓库 i 发往门店 j 数量。
对每个门店 j 写 Σi xij≥dj。
不能只写总发货≥90,否则可能一个门店收不到。
逐门店约束保证局部服务,总代数相同并不够。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
恰好一个。
yA+yB=1,且二者为 0–1 变量。
总量够不代表分配对。
错误。还需要逐地区的配送/需求约束和网络可达条件。
东西不能凭空出现或消失。
某节点流入与流出、生产与消耗或期初与期末之间的守恒关系。
至少对应 ≥。
Σyj≥3,其中 yj 为 0–1。
求解器只忠实于你写的模型
软件说 optimal,为什么仍可能得到现实中完全错误的方案?
求解器保证的是对输入模型的数学最优,不保证变量含义、单位、数据和约束录入正确。
核验包括可行性重算、目标重算、与基准比较、边界测试和参数敏感性。
至少输出:变量值、目标值、每条约束左值/右值/松弛量。改变成本、需求、资源 ±5%–10%,观察方案变化。
把最优方案转换成业务表并让队友逐条人工检查。对预测输入不确定的优化,使用情景或稳健约束。
比较结果截图与完整核验。
模型漏约束也可能显示最优。
机器上限 100,最优方案使用 100;人工上限 80,只用 52。
机器约束松弛 0,是活跃瓶颈。
人工松弛 28,短期增加人工可能无效。
尝试增加机器资源,观察利润是否提升。
敏感性帮助找到真正值得投资的资源,而非平均增加所有资源。
答案默认隐藏。聚焦题卡后按 ↓ 或 Space,一次只揭晓一道。
左右边界刚好相等。
该约束在最优解处活跃,常是当前瓶颈之一。
软件不理解现实。
错误。它只证明给定数学模型被求解;模型含义、数据和约束仍需核验。
约束也有结果。
可逐条检查可行性,并识别哪些资源用满、哪些约束宽松,为敏感性和建议提供依据。
把输入不确定性传给决策。
情景或稳健性分析,检查高低需求下方案是否仍可行。
选择生产、运输或选址问题,先手画变量—目标—约束,再使用 Excel/Python/MATLAB 求解。
讲义、练习、实验与挑战清单均在本地页面内。