挑战运筹学——单纯形法,大M法

目的

  • 运筹学的难度真是比较大,纵使老师课件讲得已经很清楚,但是涉及的步骤繁琐程度还是大大超出想象。
  • 主要做一个不针对理论,只针对操作的讲解。
  • 面向的主要是考试和小测。

单纯形法

使用原因

  • 结局线性规划的普通作图法无法解决高维问题。

步骤1

所有的线性规划问题,我们都需要将问题转化为标准形式

  1. 使得不等式或等式的右边都是非负数,右边我们称之为RHS(right hand side)
  2. 所有的变量都要求是非负数
    a. 案例: 2 x 1 − 3 x 2 ≤ − 8 2x_1-3x_2\leq -8 2x13x28应该改成 − 2 x 1 + 3 x 2 ≥ 8 -2x_1+3x_2\geq 8 2x1+3x28
    b. 当左边小于右边的时候,例: 2 x 1 + x 2 ≤ 100 2x_1+x_2\leq 100 2x1+x2100,应该引入一个**松弛(slack)**变量,将它变为 2 x 1 + x 2 + s 1 = 100 2x_1+x_2+s_1=100 2x1+x2+s1=100
    c. 左边大于右边的时候同理,减去即可。

基变量和非基变量

  • 假设我们把一个带m约束的LP转换成标准形式。假设标准形式包含n个变量(标记为 x 1 , x 2 , . . . , n x_1,x_2,...,_n x1,x2,...,n),LP的标准形式为 m a x ( o r m i n )   z = c 1 x 1 + c 2 x 2 + . . . + c n x n s.t. ⁡    a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 . . . . . . . . . . a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m max(or min)\space z = c_1x_1+c_2x_2+...+c_nx_n\\\operatorname{s.t.}\space \space a_{11}x_1+a_{12}x_2+...+a_{1n}x_n = b_1\\..........\\a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n = b_m max(ormin) z=c1x1+c2x2+...+cnxns.t.  a11x1+a12x2+...+a1nxn=b1..........am1x1+am2x2+...+amnxn=bm
  • 我们定义参数集为 A = [ a 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a m n ] A= \left[ \begin{matrix} a_{11} & ... & ... & ... & ...\\ ... & ... & ... & ... & ... \\ ... & ... & ... & ... & ... \\ ... & ... & ... & ... & a_{mn} \end{matrix} \right] A=a11......................................................amn
    X = [ x 1 x 2 . . . . . . x n ] B = [ b 1 b 2 . . . . . . b n ] X= \left[ \begin{matrix} x_1\\x_2\\...\\...\\x_n \end{matrix} \right] B= \left[ \begin{matrix} b_1\\b_2\\...\\...\\b_n \end{matrix} \right] X=x1x2......xnB=b1b2......bn
  • 这个系统的约束可以被描述为 A x = b Ax = b Ax=b。在通过单纯形算法处理之前,我们必须定义线性系统的基础解决方案。考虑一个等式系统有n个变量和m条等式且 n ≥ m n\geq m nm。一个系统的基础结局方案可以通过下列方法获得:
    a. 隔行消去 n m nm nm变量,这些变量被称为 非基础变量(NBV)
    b. 剩下解决系统的m个变量。这些变量即为 基础变量(BV)
    c. 得到的变量向量称为 基本解(包含基本变量和非基本变量)

重要案例

  • Dakota家具公司生产书桌、餐桌和椅子。每种家居的生产都需要木材和两种熟练劳动:抛光和木工。制作每种家居所需资源如下表所示:
资源书桌餐桌椅子
木材861
抛光时间421.5
木工时间21.50.5
  • 目前可用的木材为48立方英尺、抛光时间为20个小时、木工时间为8个小时。书桌的售价为60美元,餐桌为30美元,椅子为20美元。Dakota公司认为书桌和椅子的需求量非常大,而餐桌最多只能卖出5张。由于已经购买了可用的资源,所以Dakota公司希望使收入最大化。定义的决策变量是: x 1 = 书 桌 的 产 量 x 2 = 餐 桌 的 产 量 x 3 = 椅 子 的 产 量 x_1 = 书桌的产量\\x_2=餐桌的产量\\x_3=椅子的产量 x1=x2=x3=
  • 则列方程的目标式子为 max ⁡ z = 60 x 1 + 30 x 2 + 20 x 3 \max{ z }= 60x_1+30x_2+20x_3 maxz=60x1+30x2+20x3
x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3符号RHS
861 ≤ \leq 48
421.5 ≤ \leq 20
21.50.5 ≤ \leq 8
010 ≤ \leq 5
  • 他们都大于0我就省略了
  • 这里当符号是 = 或者 ≥ \geq 的问题会在大M法中讨论
转化为单纯形法的标准形式
行号Z x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3s_1s_2s_3s_4符号RHS基变量
01-60-30-200000 ≤ \leq 0 z = 0 z= 0 z=0
108611000 ≤ \leq 48 s 1 = 48 s_1= 48 s1=48
20421.50100 ≤ \leq 20 s 2 = 20 s_2= 20 s2=20
3021.50.50010 ≤ \leq 8 s 3 = 8 s_3= 8 s3=8
400100001 ≤ \leq 5 s 4 = 5 s_4= 5 s4=5

开始迭代!!

第一步:看表格是否已经达到最优情况

  • 判断是否达到最优情况的方法就是看Z所在行的所有非人工变量( s 1 s_1 s1~ s 4 s_4 s4为人工变量)的参数是否都为非负。
  • 我们判断参数为 − 60 , − 30 , − 20 -60, -30, -20 60,30,20 ,未达到优化条件。

第二步: 找非负最小参数,遍历每行,找到 R H S x 1 \frac{RHS}{x_1} x1RHS最小的

在这里插入图片描述

  • 于是我们会形成一个这样的表格。
  • 我们发现第三行符合要求。

第三步:开始换元,把其他行的 x 1 x_1 x1全部换成0,然后第三行的 x 1 x_1 x1消为1

在这里插入图片描述

第一步:表格是否达到最优情况

  • x 3 x_3 x3仍然为负数,不满足最优。

第二步: 找非负最小参数,遍历每行,找到 R H S x 3 \frac{RHS}{x_3} x3RHS最小的

在这里插入图片描述

  • 我们发现第二行符合要求

第三步:开始换元,把其他行的 x 3 x_3 x3全部换成0,然后第三行的 x 3 x_3 x3消为1

在这里插入图片描述

  • 现在问题就解决而来,得出了结果

结果

  • 结果要关注最后两列。
  • 我们可以看到 s 1 = 24 , x 3 = 8 , x 1 = 2 , s 4 = 5 , Z = 280 s_1=24,x_3=8,x_1=2,s_4=5, Z = 280 s1=24,x3=8,x1=2,s4=5,Z=280
  • 当求最小的时候,我们就求最大的-Z就好了 。

可选最优解

  • 当我们把上面餐桌的售价改为35时,会导致我们优化到中间,出现这样子的表格。
    在这里插入图片描述
  • 根据定义,所有基变量在第0行都必须有0系数(否则它们就不是基变量)。但是在我们的最优表中,有一个非基变量 x 2 x_2 x2在第0行的系数同样也是0。
  • 这就说明我们可以把 x 2 x_2 x2代换到其他等式,我们会获得这样的表格。
    在这里插入图片描述
  • 根据定理,两个最优点的连线同样也是最优的,两点之间上的点可以用这个表达式。 x λ = λ x + ( 1 − λ ) x ′ , ∃   0 ≤ λ ≤ 1 x_{\lambda}=\lambda x+(1-\lambda)x^{'}, \exist \space 0\leq \lambda \leq 1 xλ=λx+(1λ)x, 0λ1
    在这里插入图片描述

无界解(没有界的解法)

  • 基本判断条件是两个
    • 第0行还有负数的的非人工变量
    • 然而下面你已经找不到可以替换的ratio了

大M法

  • 我们上面提到,我们只讨论了 ≤ \leq
  • 当遇到了 ≥ \geq 或者 = = =的时候我们应该怎么操作呢?

第一步:先进行标准化

  • 按照上面讲的进行标准化。
    在这里插入图片描述

第二步:将约束条件转化为标准形式

  • 小于等于则加入松弛变量 s i s_i si
  • 大于等于则加入剩余变量 e i e_i ei
    在这里插入图片描述

第三步:如果是=或者 ≥ \geq ,则加入人工变量 a i a_i ai

在这里插入图片描述

第四步:将 M a i Ma_i Mai放入目标函数

  • 如果是最大化,则 − M a i -Ma_i Mai
  • 如果是最小化,则 + M a i +Ma_i +Mai
    在这里插入图片描述

第五步:把目标函数里的人工变量全部消除

  • 把下面加入的 a i a_i ai反代回目标函数。
  • 目标函数不能有 a i a_i ai
  • 要把目标函数的M全部移到RHS
    在这里插入图片描述

第六步:开始按照单纯形算法的步骤进行迭代

例子

  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值