图解线性规划简介

欢迎来到离散数学中最实用的章节之一!线性规划 (Linear Programming, LP) 的名称听起来很高级,但其实目标很简单:在给定一系列限制条件下,找出最佳的结果(例如利润最大化或成本最小化)。

想象你在经营一家小烘焙坊。你希望赚取最多的利润,但你只有有限的面粉、有限的烤箱使用时数,而且你不可能烤出负数个蛋糕!线性规划能帮助我们平衡这些规则,找出成功的“甜蜜点”。


1. 建立问题模型:基本要素

在绘图之前,我们需要将现实世界的情况转化为数学模型。这称为建立模型 (Formulation)。任何线性规划问题都包含四个主要部分:

A. 决策变量 (Decision Variables)

这是你可以控制的项目。我们通常称之为 \(x\) 和 \(y\)。务必定义它们所代表的含义并列出单位。

例子:设 \(x\) 为生产的标准杯子蛋糕数量,\(y\) 为生产的豪华杯子蛋糕数量。

B. 目标函数 (Objective Function)

这是你想要达成的目标。你是想最大化 (maximise) 利润,还是最小化 (minimise) 浪费?它通常以方程式形式呈现,开头通常是 \(P\)(利润,Profit)或 \(C\)(成本,Cost)。

例子:如果一个标准杯子蛋糕能带来 £2 利润,而一个豪华款能带来 £3 利润,你的目标就是最大化 \(P = 2x + 3y\)。

C. 约束条件 (Constraints)

约束条件就是“规则”或限制。我们将这些写成不等式(使用 \(\le\) 或 \(\ge\) 等符号)。

  • 资源限制:“你只有 500g 糖。”如果每个 \(x\) 用 10g,每个 \(y\) 用 20g,那么 \(10x + 20y \le 500\)。
  • 比例约束:“你生产的标准蛋糕数量必须至少是豪华蛋糕的两倍。”这代表 \(x \ge 2y\)。

D. 平凡约束 (Trivial Constraints)

在现实世界中,你不可能制作负数量的产品。我们必须总是包含 \(x \ge 0\) 和 \(y \ge 0\)。别忘了这些,它们能确保我们的图形位于第一象限!

快速回顾:建立模型时,先找出变量,写下你的“目标”(目标函数),并列出你的“规则”(约束条件)。


2. 可行区域:绘图规则

现在进入绘图阶段。我们需要找到可行区域 (Feasible Region),即图表上同时满足所有规则的区域。

如何画线

对于每个约束条件(例如 \(2x + 3y \le 12\)),首先将其视为方程式(\(2x + 3y = 12\))来画出一条直线。一个好用的技巧是截距法 (Cover-Up Method)

  1. 令 \(x = 0\),求出 \(y\)。(在我们的例子中:\(3y = 12\),所以 \(y = 4\))。标记点 \((0, 4)\)。
  2. 令 \(y = 0\),求出 \(x\)。(在我们的例子中:\(2x = 12\),所以 \(x = 6\))。标记点 \((6, 0)\)。
  3. 将两点用直线连接起来。

阴影规则(OCR 考试重点!)

在本课程中,我们遵循一个特定的惯例:涂黑不满足条件的区域。

如果你的规则是 \(x + y \le 10\),直线上方的任何点都是“错误的”(不符合规则)。请涂黑直线上方的区域。当你为所有约束条件都做完这个步骤后,你会剩下清晰、没有阴影的区域。这个空白区域就是可行区域

你知道吗? 使用这种“涂黑排除法”能让可行区域脱颖而出,让你更容易观察解的位置!


3. 找出最佳解

一旦你有了清晰的可行区域,如何找到能带来最大利润的精确点呢?有两种主要方法:

方法一:顶点测试法 (Vertex Testing)

“最佳”解永远会出现在可行区域的其中一个顶点 (vertices)(角落)。

  1. 找出所有顶点的坐标。
  2. 将这些 \((x, y)\) 值代入你的目标函数
  3. 得到最大值(求最大化时)或最小值(求最小化时)的那一个就是优胜者!

方法二:目标线法 (The Objective Line / "Sliding Line")

如果顶点很多,这个方法比较快:

  1. 为你的目标函数选择一个随机值(例如,如果 \(P = 2x + 3y\),试着设 \(2x + 3y = 6\))。
  2. 在图上画出这条线(通常画成虚线)。
  3. 使用直尺,将该线平行移动穿过可行区域。
  4. 最大化时: 直线离开可行区域前触碰到的最后一个点就是最大值。
  5. 最小化时: 直线进入可行区域内触碰到的第一个点就是最小值。

重点摘要:“最佳”答案几乎总是落在角落!利用直尺找出在目标方向上最远的那个角落。


4. 处理整数解

如果刚开始觉得这部分很麻烦别担心,因为有时候算出来的答案可能是“生产 4.7 辆车”。你不可能生产 0.7 辆车!如果题目要求整数解 (integer solutions),你必须找出最合适的整数坐标。

常见错误:不要直接四舍五入!四舍五入后的点可能已经超出了你的可行区域(违反了规则)。

修正方法:观察最接近你最佳顶点的整数点 \((x, y)\),并确保它们仍然在未涂黑的可行区域内。将这些点代入目标函数中进行测试,看看哪一个最好。


总结清单

  • 建模: 确定变量 (\(x, y\)),写下目标函数 (\(P = ...\)),并列出约束条件。
  • 作图: 使用截距法画线。
  • 涂阴影: 将直线“错误”的一侧涂黑。保持可行区域清晰。
  • 求解: 测试顶点或使用滑动目标线法。
  • 检查: 答案是否需要为整数?在现实语境下是否合理?

秘诀: 请务必使用削尖的铅笔和长直尺。精确的绘图会让你在使用滑动目标线法寻找“最后触碰点”时轻松许多!