单纯形法求解线性规划问题示例

这篇具有很好参考价值的文章主要介绍了单纯形法求解线性规划问题示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

今天被一个人问到了一个线性规划问题,这个问题我印象中只有在数学建模中会出现,于是就研究了一下,这里做一个记录。

示例

线性规划问题如下:
max z = 90 x 1 + 70 x 2 s . t . { x 1 + x 2 ≤ 16 3 x 1 + 2 x 2 ≤ 36 5 x 2 ≤ 65 x 1 , x 2 ≥ 0 (1) \text{max} \quad z = 90x_1 + 70x_2 \\ \begin{align} s.t.\left\{\begin{matrix} x_1 + x_2 &\le 16 \\ 3x_1 + 2x_2 &\le36 \\ 5x_2 &\le 65\\ x_1, x_2 &\ge 0 \end{matrix}\right. \nonumber \end{align} \tag{1} maxz=90x1+70x2s.t. x1+x23x1+2x25x2x1,x21636650(1)
先将模型化为标准型:
max z = 90 x 1 + 70 x 2 s . t . { x 1 + x 2 + x 3 = 16 3 x 1 + 2 x 2 + x 4 = 36 5 x 2 + x 5 = 65 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 (2) \text{max} \quad z = 90x_1 + 70x_2 \\ \begin{align} s.t.\left\{\begin{matrix} x_1 + x_2 + x_3 &= 16 \\ 3x_1 + 2x_2 + x_4 &= 36\\ 5x_2 + x _5 &= 65\\ x_1, x_2,x_3,x_4,x_5 &\ge 0 \nonumber \end{matrix}\right. \end{align} \tag{2} maxz=90x1+70x2s.t. x1+x2+x33x1+2x2+x45x2+x5x1,x2,x3,x4,x5=16=36=650(2)
标准形式下的约束条件系数矩阵的增广矩阵可以表示为:
[ 1 1 1 0 0 ∣ 16 3 2 0 1 0 ∣ 36 0 5 0 0 1 ∣ 65 ] \begin{bmatrix} 1 & 1 & 1 & 0 & 0 &| 16\\ 3 & 2 & 0 & 1 & 0 &|36 \\ 0 & 5 & 0 & 0 & 1 &|65 \end{bmatrix} 130125100010001∣16∣36∣65
显然,我们应将 x 3 , x 4 , x 5 x_3, x_4, x_5 x3,x4,x5 视为基变量,且将 x 1 , x 2 x_1, x_2 x1,x2 视作非基变量。接下来,令 x 1 , x 2 = 0 x_1, x_2 = 0 x1,x2=0,找到初始基可行解 X = ( 0 , 0 , 16 , 36 , 65 ) X = \left(0, 0, 16, 36, 65\right) X=(0,0,16,36,65),列出初始的单纯形表:

x B x_B xB b x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 θ \theta θ
x 3 x_3 x3 16 1 1 1 0 0 16
x 4 x_4 x4 36 3 2 0 1 0 12
x 5 x_5 x5 65 0 5 0 0 1
z 0 90 70 0 0 0

观察(2)式可知,其中只有两个关于 x 1 x_1 x1 的约束条件:
x 1 + x 2 + x 3 = 16 3 x 1 + 2 x 2 + x 4 = 36 \begin{align} x_1 + x_2 + x_3 &= 16 \tag{3} \\ 3x_1 + 2x_2 + x_4 &= 36 \tag{4} \end{align} x1+x2+x33x1+2x2+x4=16=36(3)(4)
现在我们要对 x 1 x_1 x1 进行研究,因此,首先令 x 2 = 0 x_2 = 0 x2=0

对于(3)式,如果我们令 x 3 x_3 x3 减小到 0, 那么 x 1 x_1 x1 最大可以取到 16。对于(4)式,如果我们令 x 4 x_4 x4 减小到 0,那么 x 1 x_1 x1 最大可以取到 12。因为两个约束条件共同作用,因此, x 1 x_1 x1 最大只能增加到 12。如上述表格中的 θ \theta θ 所示。

此时,我们需要将 x 1 x_1 x1 作为换入变量,将 x 4 x_4 x4 作为换出变量。那么当完成替换后,z 值的增量为:
z increase = 12 × 90 = 1080 z_{\text{increase}} = 12 \times 90 = 1080 zincrease=12×90=1080
我们需要将上表中所有 x 4 x_4 x4 对应行中的 x 1 x_1 x1 的系数化简为 1,其余行 x 1 x_1 x1 的系数化 0,因此,我们需要进行行列式变换,变换后,我们得到新的单纯形表为:

x B x_B xB b x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 θ \theta θ
x 3 x_3 x3 4 0 1 3 \frac{1}{3} 31 1 - 1 3 \frac{1}{3} 31 0 16
x 1 x_1 x1 12 1 2 3 \frac{2}{3} 32 0 1 3 \frac{1}{3} 31 0 12
x 5 x_5 x5 65 0 5 0 0 1
z 1080 0 10 0 -35 0

对于(4)式,当 x 3 = 0 x_3 = 0 x3=0 x 2 x_2 x2 每增大 1, x 1 x_1 x1 需要减小 2 3 \frac{2}{3} 32,因此, x 2 x_2 x2 每增大 1,对应 z 值的变化量为:
z variation = z x 1 + z x 2 = 90 × ( − 2 3 ) + 70 × 1 = − 60 + 70 = 10 \begin{align} z_{\text{variation}} &= z_{x_1} + z_{x_2} \nonumber \\ &= 90 \times (-\frac{2}{3}) + 70 \times 1 \nonumber \\ & = -60 + 70 \nonumber \\ &= 10 \nonumber \end{align} zvariation=zx1+zx2=90×(32)+70×1=60+70=10
对于(4)式,当 x 1 = 0 x_1 = 0 x1=0 x 2 x_2 x2 每增大 1, x 2 x_2 x2 需要减小 1 2 \frac{1}{2} 21,因此, x 4 x_4 x4 每增大 1,对应 z 值的变化量为:
z variation = − 1 2 × 70 = − 35 \begin{align} z_{\text{variation}} &= -\frac{1}{2} \times 70 \nonumber \\ &= -35 \nonumber \end{align} zvariation=21×70=35
替换完成后的非基变量变成了 x 2 , x 4 x_2, x_4 x2,x4,接下来需要考虑将 x 2 x_2 x2 换入,三个约束条件均包含 x 2 x_2 x2 变量:
x 1 + x 2 + x 3 = 16 3 x 1 + 2 x 2 + x 4 = 36 5 x 2 + x 5 = 65 \begin{align} x_1 + x_2 + x_3 &= 16 \tag{5} \\ 3x_1 + 2x_2 + x_4 &= 36 \tag{6} \\ 5x_2 + x _5 &= 65 \tag{7} \end{align} x1+x2+x33x1+2x2+x45x2+x5=16=36=65(5)(6)(7)
现在我们要对 x 2 x_2 x2 进行研究,因此,首先令 x 1 = 0 x_1 = 0 x1=0

对于(5)式,当 x 3 x_3 x3 减小到 0 时, x 2 x_2 x2 最大可以取到 16。对于(6)式,当 x 4 x_4 x4 减小到 0 时, x 2 x_2 x2 最大可以取到 18。对于(7)式,当 x 5 x_5 x5 减小到 0 时, x 2 x_2 x2 最大可以取到 13。因此, x 2 x_2 x2 的最大值只能取到 13。

类比上面相同的行列式操作,最终我们可以得到的单纯形表为:

x B x_B xB b x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 θ \theta θ
x 3 x_3 x3 1 3 \frac{1}{3} 31 0 0 1 - 1 3 \frac{1}{3} 31 1 15 \frac{1}{15} 151
x 1 x_1 x1 10 3 \frac{10}{3} 310 1 0 0 1 3 \frac{1}{3} 31 - 2 15 \frac{2}{15} 152
x 2 x_2 x2 13 0 1 0 0 1 5 \frac{1}{5} 51
z 1210 0 0 0 -14 -2

对应上述单纯表,最终我们可以将标准模型变为:
max z = 90 x 1 + 70 x 2 s . t . { x 3 − 1 3 x 4 + 1 15 x 5 = 1 3 x 1 + 1 3 x 4 − 2 15 x 5 = 10 3 x 2 + 1 5 x 5 = 13 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 (8) \text{max} \quad z = 90x_1 + 70x_2 \\ \begin{align} s.t.\left\{\begin{matrix} x_3 - \frac{1}{3}x_4 + \frac{1}{15}x_5&= \frac{1}{3} \\ x_1 + \frac{1}{3}x_4 - \frac{2}{15}x_5 &= \frac{10}{3} \\ x_2 + \frac{1}{5}x _5 &= 13 \\ x_1, x_2,x_3,x_4,x_5 &\ge 0 \nonumber \end{matrix}\right. \end{align} \tag{8} maxz=90x1+70x2s.t. x331x4+151x5x1+31x4152x5x2+51x5x1,x2,x3,x4,x5=31=310=130(8)
对于(7)式, x 5 x_5 x5 每增大 1, x 2 x_2 x2 需要减小 1 5 \frac{1}{5} 51,因此, x 5 x_5 x5 每增大 1,对应 z 值的变化量为:
z variation = − 1 5 × 10 = − 2 \begin{align} z_{\text{variation}} &= -\frac{1}{5} \times 10 \nonumber \\ &= -2 \nonumber \end{align} zvariation=51×10=2
对于(7)式, x 5 x_5 x5 每增大 1, x 2 x_2 x2 需要减小 1 5 \frac{1}{5} 51,再考虑约束(6)式, x 2 x_2 x2 每减小 1, x 4 x_4 x4 需要增加 2 5 \frac{2}{5} 52,对应 z 值的变化量为:
z variation = − 2 5 × 35 = − 14 \begin{align} z_{\text{variation}} &= -\frac{2}{5} \times 35 \nonumber \\ &= -14 \nonumber \end{align} zvariation=52×35=14
最终,z 值的最大值为:
z increase = 1080 + 10 × 13 = 1080 + 130 = 1210 z_{\text{increase}} = 1080 + 10 \times 13 = 1080 + 130 = 1210 zincrease=1080+10×13=1080+130=1210
因此,我们说,我们求解的原始线性规划问题等同于求解方程 y = 1210 − 14 x 4 − 2 x 5 y = 1210 -14x_4 - 2x_5 y=121014x42x5的最大值问题。

如果大家觉得有用,就点个赞让更多的人看到吧~文章来源地址https://www.toymoban.com/news/detail-741189.html

到了这里,关于单纯形法求解线性规划问题示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 运筹学—线性规划单纯形表

    什么是标准型数学模型? a. 具有等式约束方程组:一般引入松弛变量将不等式约束转化为等式约束 b. 约束方程右边常数非负:若右边为负,则两边同称-1使其变为非负 c. 所有变量非负 d. 目标函数为max型,对于min型,化为max型 例如:3a+9b=540添加松弛变量c,使得不等式变为3

    2023年04月08日
    浏览(34)
  • 二次规划(QP)求解与序列二次规划(SQP)求解非线性规划问题

    二次规划(QP)是求解一种特殊的数学优化问题的过程——具体地说,是一个(线性约束)二次优化问题,即优化(最小化或最大化)多个变量的二次函数,并服从于这些变量的线性约束。二次规划是一种特殊的非线性规划。        序列二次规划(SQP,Sequental Quadratic Programming)算法是

    2024年02月02日
    浏览(31)
  • 数学建模--Lingo求解线性规划问题

    一 问题重述 1.1问题背景 工厂根据外部需求和内部设备,人力,原料等条件,以及最大利润为生产目标制定生产计划,根据生产计划,工艺流程,资源约束及费用参数等,以最小的成本为目标制定生产批量计划,若短时间外部需求和内部资源等不随时间的变化,可制定单阶段

    2024年02月12日
    浏览(28)
  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(26)
  • python数学建模--线性规划问题案例及求解

    本博客参考: 《python数学实验与建模》 《MATLAB数学建模经典案例实战》 m a x   z = 8 x 1 − 2 x 2 + 3 x 3 − x 4 − 2 x 5 { x 1 + x 2 + x 3 + x 4 + x 5 ≤ 400 x 1 + 2 x 2 + 2 x 3 + x 4 + 6 x 5 ≤ 800 2 x 1 + x 2 + 6 x 3 ≤ 200 x 3 + x 4 + 5 5 ≤ 200 0 ≤ x i ≤ 99 , i = 1 , 2 , 3 , 4 x 5 ≥ − 10 max z=8x_1-2x_2+3x_3-x_

    2023年04月13日
    浏览(30)
  • SAP ABAP 使用GENIOS求解线性规划问题的简单例子

    主要内容来自Operations Research ABAP ,结合我遇到的需求,做了一些修改。 需求:有BOX1和BOX2两种箱子,分别能包装不同数量的A物料和B物料,给出若干数量的A, B物料,怎样包装可以使箱子数最少? 线性规划有助于解决类似问题。 以下是一个示例程序,包含必要的注释,   运行

    2024年02月16日
    浏览(26)
  • lingo软件求解线性规划举例

      缺点,数据多时不好找 当变量有成千上万个时,而关心的非零解只是极少数,在当前窗口读解很麻烦。下面是读取非零解的窗口操作步骤: (1)缩小当前解的窗口(不是关闭!); (2)把鼠标点进模型所在窗口;

    2024年02月13日
    浏览(39)
  • 使用COPT求解混合整数线性规划

    使用 from copt import * 引入模型 import coptpy as cp env = Envr() 创建优化模型,返回一个Model对象 mdl=env.ccreateModel(\\\"name\\\") 添加一个决策变量: mdl.addVar(lb=0.0, ub=COPT.INFINITY, obj=0.0, vtype=COPT.CONTINUOUS, name=\\\"\\\", column=None) Lb : 变量的下界。可选参量,默认为0.0。 Ub : 变量的上界。可选参量

    2024年02月06日
    浏览(37)
  • OR-Tools的线性规划求解器入门——调用不同求解内核

    OR-Tools因其开源、可调用其他求解器、以及强大的CP求解器,在近几年受到了工业界的广泛关注,关于OR-Tools的CP求解组件的介绍,可以参考《OR-Tools的CP-SAT求解器入门案例》,本文主要介绍OR-Tools的另一块主要的内容 Linear Solver ,在一些问题上,OR-Tools自带的求解内核 GLOP 在线

    2024年01月17日
    浏览(34)
  • 【数学建模】Python+Gurobi求解非线性规划模型

    目录 1 概述 2 算例  2.1 算例 2.2 参数设置 2.3 Python代码实现 2.4 求解结果 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。 参考:(非线性规划Python)计及动态约束及节能减排环保要求的经济调度 2.1 算例 2.2 参数设置 求解NLP/非凸问题时,

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包