Logo
Section 1 / 13

线性规划与优化入门

了解线性规划及其应用,以及如何将现实世界的问题进行建模。

导入

线性规划与优化入门

了解线性规划及其应用,以及如何将现实世界的问题进行建模。

背景

我们每个人在人生中都必须做出选择。这些选择可能让我们在最大化某一方面的同时,不得不牺牲另一方面的利益。每当我们在做这类决策时,实际上就是在进行优化。以下是一些基于多个因素做出决策的例子:

  1. 我们想购买一套新房子,需要考虑价格、地理位置、附近学校、距离购物中心的距离、周边医院、社区环境或安全程度等因素。

  2. 我们正在为计算机科学本科专业选择一所研究生院校,需要权衡学校的排名、学费、贷款可获得性、住宿条件、离家距离以及开设的专业方向等参数。

有些人可能更看重某个特定因素,但最终目标都是从现有选项中选出最优解。如果我们能将上述两个例子以及其他类似问题用数学语言表达出来,就可以使用线性规划来求解。

什么是线性规划?

简单来说,线性规划(有时也称为线性优化)是实现优化的一种方法。它是一种简单的技术,能够通过线性函数对复杂关系进行数学建模,并找到最优解。这使我们能够在做出少量基本假设的前提下,解决各种规模的问题。

...

如何用数学方式表示一个问题

表示任何线性规划问题最通用且常用的方法包括以下三个部分:

步骤1:设 ff 为一个需要被最大化或最小化的线性函数。

f(x1,x2)=c1x1+c2x2f(x_{1},x_{2}) = c_{1} x_{1} + c_{2} x_{2}

步骤2:列出约束条件,例如:

a11x1+a12x2≤b1a_{11} x_{1} + a_{12} x_{2} \leq b_{1} a21x1+a22x2≤b2a_{21} x_{1} + a_{22} x_{2} \leq b_{2} a31x1+a32x2≤b3a_{31} x_{1} + a_{32} x_{2} \leq b_{3}

步骤3:变量必须是非负的。

x1≥0x_{1} \geq 0 x2≥0x_{2} \geq 0

注意:最小化问题总可以转化为这种标准形式的等价问题。

如何建立线性规划模型

为了将现实世界中的问题转化为线性规划问题,我们需要完成以下步骤:

  1. 确定所有决策变量,即问题中的不同参数。
  2. 写出目标函数,也就是我们希望最大化或最小化的指标。
  3. 明确约束条件,即必须遵守的资源限制。

所有这些部分都必须是线性函数,才能使用线性规划方法求解。

线性规划问题建模示例

假设阿巴库斯公司(Abacus Inc.)是一家计算机制造企业。该公司仅生产两种类型的计算机:一种是面向企业用户的高性能计算机,另一种是面向普通消费者的性价比型计算机。我们将这两种型号分别命名为 Unity-Pro(UP)和 Unity-Nor(UN)。我们假设每台计算机的组装仅需两种零件:零件A和零件B。每单位产品的需求如下:

  • 每台 UP 计算机需要 2 单位零件 A 和 3 单位零件 B。
  • 每台 UN 计算机需要 1 单位零件 A 和 2 单位零件 B。

现在公司需要决定如何生产以最大化本季度利润。问题是:在当前库存限制下,应生产多少台 UP 和 UN 型号的计算机?公司目前拥有 1,000 单位零件 A 和 1,300 单位零件 B。每售出一台 UP 计算机可带来 200 美元利润,每售出一台 UN 计算机可带来 100 美元利润。

在此问题中,我们用 X 和 Y 分别表示两种型号的产量。

...
X=UP 型号的总产量X = \text{UP 型号的总产量} Y=UN 型号的总产量Y = \text{UN 型号的总产量}

公司总利润可通过将每种计算机的产量乘以其对应利润得到:

利润:最大化 Z=200X+100Y\text{利润:最大化 } Z = 200X + 100Y

为了实现利润最大化,公司在不耗尽零件 A 和零件 B 的前提下,应尽可能多地生产 UP 和 UN 型号计算机。

根据题意,每台 UP 计算机需要 2 单位零件 A,每台 UN 计算机需要 1 单位零件 A,因此有:

2X+Y≤10002X + Y \leq 1000

同理,每台 UP 计算机需要 3 单位零件 B,每台 UN 计算机需要 2 单位零件 B,数学表达为:

3X+2Y≤13003X + 2Y \leq 1300

此外,还存在两个非负约束:生产的数量不能为负数。

X≥0且Y≥0X \geq 0 \quad \text{且} \quad Y \geq 0

因此,阿巴库斯公司要实现最大利润,就必须满足以上所有不等式。这就是将一个实际问题转化为数学模型的过程。

线性规划的应用

线性规划在我们周围随处可见。即使在日常生活中,我们也一直在优化决策——比如选择去办公室的最短路线、分配工作任务、比较商品价格等等。

历史上,线性规划启发了许多优化理论的核心概念,包括分解法、对偶性,以及凸性及其推广的重要性。它也被广泛用于解决网络流问题和多商品流问题。

许多企业利用线性规划来优化运营,涵盖计划、生产、运输、技术应用以及其他关键问题。无论企业类型如何,其核心目标都是在降低成本的同时最大化利润。

甚至连谷歌也在使用线性规划来稳定 YouTube 视频的播放质量。这种针对特定领域的线性规划应用催生了大量不同的算法。这些算法通常将线性规划问题作为子问题来求解。它们被实现于多种编程语言中,普遍被称为求解器。

线性规划的现实应用