线性编程003:图形解决方案

那好吧! 我们知道什么是线性规划,可以使用什么样的问题来解决以及如何解决这些问题。 因此,让解决方案开始!!

首先,我们提出了两个变量的线性规划问题(这次我们不使用公式),并尝试找到解决方案。 我将尽力将这些文章的结构安排成时尚的知识发现方式,而不是动pl地说。 因此,我将省略一些暂停点,读者可以在上面选择两个选项–鉴于以上信息,暂停和考虑解决方案,或者继续阅读解决方案。 我更喜欢前一种方法,因为没有什么比自己发现一种方法更好,更有效了。

也就是说,让我们来解决当前的问题。 下面提到我们将在下面的解决方案中讨论的两个变量问题:

好吧,那我们还有什么? 我们有两个变量x1x2对吗? 假设我们面前有一张纸,那么在做任何事情之前,我们要做的就是在图形上绘制方程式和不等式。 让我们开始做。

我们首先在下图中绘制2×1 + x2 = 100的线。 此后提到一些注意事项:

  1. 我们都知道如何绘制代表高中线性方程的线
  2. 我们可能不知道或记得的是,一条线的图实际上代表着两个不等式以及一个方程
  3. 下图清楚地表示了这一点
  4. 水平轴代表x1坐标,垂直轴代表x2坐标
  5. 该线表示第一个约束的等式
  6. 带红色阴影的区域表示不等式2×1 + x2 <= 100

为何如此? 好吧,每条线将其绘制所在的平面分为两个不同的区域。 在凸优化领域,我们将这些区域称为仿射半空间。 如果该行具有以下形式:

然后,两个半空间代表以下不等式:

在我们的例子中,线表示第一约束的方程式。 红色阴影表示的半空间表示不等式2×1 + x2 <= 100 ,而未阴影阴影表示的半空间表示不等式2×1 + x2> = 100

为了验证这一点,我们考虑每个区域中的两个点,如下表所述:

现在我们知道了如何在图形上表示不等式,我鼓励用户尝试并找到一种方法来绘制至少一个可行点,该可行点在绿色框中满足我们问题的所有约束。 这是我们的第一个停顿和思考点。 您可以选择在此处暂停并仔细考虑以找到此方法,或者继续阅读以找到为您提到的解决方案。

我下面所做的是使用一个图形或一组代表决策变量的轴绘制了表示约束的所有不等式。 如此构成的数字如下:

可以清楚地看到,代表每个不等式的点使用不同的颜色着色,并且所有这些点集的交点都可以由多边形ABCDE清楚地界定

因此,我们可以清楚地声明,多边形ABCDE内部的任何点最终都将满足我们问题的所有约束,因此被称为可行点。

这些可行点的集合称为线性程序的可行区域

为了清楚起见,我在下面提到了可用于找出任何线性程序的可行区域的步骤:

  1. 使用一组代表问题决策变量的轴绘制所有不等式
  2. 找到满足所有方程的所有区域相交的区域
  3. 这个交叉点将是问题的可行区域

既然我们对此感到失望,那么在继续全面解决我们的问题之前,我们只需要一个额外的概念。

我们知道我们问题的目标是使Z = 3×1 + 2×2的值最大化 现在,等式3×1 + 2×2 = c1表示一条线。 该线上的每个点具有相同的Zc1。 目标函数的值保持不变的每条这样的线分别称为最大化最小化问题的 利润线或等成本线。

请注意,如果我们任意更改c1 ,则直线将平行于自身移动,但直线的斜率保持不变。 下图表示了这一事实。

那好吧……现在,您知道了要弄清楚我们的问题的解决方法所需要知道的一切。 因此,适当停顿和思考有关使用图形来解决任意两个变量LP的通用方法的问题。

最后,经过所有必要的术语之后,我们终于可以通过图形方法解决此线性编程问题。 所以说实话,如果您掌握了等利润线和等成本线的概念,那么现在大多数人必须已经知道解决方案。 但是,为了使事情更加具体,我们将逐步解决问题。

我们现在肯定知道两件事:

  1. 满足问题约束的所有点都包含在一个多边形内(在我们的示例中为多边形ABCDE)
  2. 我们的目标函数的斜率永远不会改变-它只是根据Z的值平行于自身移动

问题在于多边形ABCDE的内部具有无限数量的点,因此我们不能进行详尽的搜索来找出为目标函数提供最佳值或最佳值的点。

当面对这样的无限搜索空间问题时,在数学和计算机科学中,通常的做法是使用试探法以将该搜索空间减小为较小的,最好是有限的集合。 在这种情况下,我们可以这样做吗?

如果查看最后一个数字,则选择一条特定的Z = c1线并将其平行于自身移动,您会发现,向左移动时,Z的值减小,而向右移动时,Z的值始终增大。 因此,如果我们沿原点穿过Z = 0线并继续向右移动(从而增加Z的值),则我们将到达等利润线Z = c1和我们可行的区域,多边形ABCDE。 如果将线向右进一步移动,最终将使Z增加,但至少违反了我们的约束之一。 从直觉上也可以理解,Z线和多边形恰好有一个点的共同点必须是多边形的顶点之一。 因此,使用上面的启发式方法,我们可以放心地说,问题的最佳点必须位于可行区域的顶点之一-多边形ABCDE。 因此,每个顶点都称为基本可行解 。 我们将在下一篇文章中找到此命名方式背后的原因。

因此,我们已将搜索空间从无限集减少到LP可行区域的顶点集-在这种情况下,点集S = {A,B,C,D,E}。 如果我们能够在这5个点上评估Z的值,我们将能够确定该问题的最佳解决方案。 这正是我们下面要做的:

太好了,既然我们已经评估了所有点的Z值,我们可以肯定地说我们的线性程序的最优点位于B点。这就是…完成…解决了。

因此,总而言之,下面列出了解决线性规划问题的逐步算法:

  1. 绘制代表问题约束的不等式
  2. 找出问题的可行范围
  3. 在可行区域的每个顶点处评估Z
  4. 为目标函数提供最佳值的顶点是问题的最佳值。

好吧,那很容易,不是吗? 是的,但是线性编程的主题才刚刚变得有趣。 现在,我们可以使用图形方法解决线性程序,但现实生活中遇到的大多数情况都将包含两个以上的决策变量。 在这种情况下,由于我们原始的视觉感觉,我们可能无法采用此方法,因为我们可能无法绘制6或7或更大尺寸的图形。 然后怎样呢? 幸运的是,数学家们开发了一种使用代数的奇妙工具,使我们能够解决几乎任意数量的变量。 这就是为什么我们脱离几何框,继续使用数学语言(代数)的原因和原因。 我们将在下一篇文章中开始讨论这种方法。

下一篇

对于两个变量中的所有线性规划问题,上述方法似乎确实很健壮,但确实如此。 让我们解决一些关于其健壮性的普遍关注的问题。

多边形内是否包含所有可行区域?

当然不是。 可能存在一组导致无界可行区域的约束,或者可能导致无效集合中的可行区域的另一组约束。 留给用户考虑这些情况。 我相信上面提供的信息足以找到解决这些问题的方法。

线性程序可以有多个最优值吗?

好吧,例如Z线可以平行于多边形的一侧吗? 如果是,是