You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何寻找线性规划的无穷最优解?给定LP的目标函数修改咨询

Hey,让我来帮你把这两个线性规划的问题理清楚:

1. 如何寻找线性规划的无穷最优解?

其实找无穷最优解的核心逻辑很简单,就是看目标函数的等值线是否和可行域的某条边界线段完全平行,而且这条边界上的所有点都能达到最优值。具体可以按这几步来:

  • 先求出一个顶点最优解:用图解法(二维问题超直观)或者单纯形法都可以,先找到一个能让目标函数取到最值的顶点。
  • 检查最优解所在的边界:如果这个顶点属于一条可行域的边界线段(不是孤立的点),而且目标函数的斜率和这条边界对应的约束直线斜率完全一致,那这条线段上的所有点都是最优解——也就是无穷多最优解。
  • 如果用单纯形法的话,看最优表的检验数:要是有非基变量的检验数为0,而且这个非基变量对应的列里有正的元素(能进基),那就说明存在无穷最优解。进基后你会得到另一个顶点最优解,这两个顶点之间的线段就是所有最优解的集合。

2. 修改目标函数使原线性规划存在无穷最优解

先把原问题摆出来,方便分析:
$$\text{max} \ Z=5x_1+3x_2$$
$$s.t.\
\begin{cases}
2x_1+x_2\le 8 \
3x_1+2x_2\ge 6 \
x_1,x_2\ge0
\end{cases}$$

思路

要让修改后的问题有无穷最优解,关键就是让目标函数的等值线和可行域的某条有效边界线段平行。这里的“有效边界”指的是:在目标函数最大化的方向上,这条边界是能让目标函数取到最大值的那部分区域(不是远离最优方向的边界)。

首先先拆解原可行域的各约束斜率:

  • 约束$2x_1+x_2=8$变形为$x_2=-2x_1+8$,斜率是$-2$
  • 约束$3x_1+2x_2=6$变形为$x_2=-\frac{3}{2}x_1+3$,斜率是$-1.5$
  • 非负约束$x_1=0$(竖线,斜率无穷大)、$x_2=0$(横线,斜率0)

原目标函数$Z=5x_1+3x_2$的斜率是$-\frac{5}{3}≈-1.67$,介于$-2$和$-1.5$之间,所以最优解是$(4,0)$($2x_1+x_2=8$和$x_2=0$的交点),是单个顶点。要改出无穷最优解,我们需要让目标函数斜率和某条可行域的边界斜率一致,而且这条边界是可行域的上边界(max方向的最优边界)——显然$2x_1+x_2=8$这条边界符合要求,它是可行域的上边界,而且是一条线段(从$(0,8)$到$(4,0)$)。

修改方法与验证

我们把目标函数改成和$2x_1+x_2=8$平行的形式,比如$\text{max} \ Z=2x_1+x_2$(系数和约束成比例就行,也可以是$4x_1+2x_2$、$6x_1+3x_2$这类,本质一样)。

现在验证:

  1. 可行域还是原来的区域,所有约束不变。
  2. 目标函数$Z=2x_1+x_2$的等值线和$2x_1+x_2=8$完全平行,当$Z$取最大值8时,等值线正好和这条边界线段重合。
  3. 这条线段上的任意点都满足所有约束:比如$(3,2)$,代入$3x_1+2x_2=9+4=13≥6$,满足;$(0,8)$代入$30+28=16≥6$,也满足。
  4. 所以这条线段上的所有点都是最优解,也就是无穷多最优解,最优值为8。

要是你想选其他平行形式,比如$\text{max} \ Z=4x_1+2x_2$,最优值就是16,同样这条线段上的所有点都是最优解,逻辑是一样的。


内容的提问来源于stack exchange,提问作者user441848

火山引擎 最新活动