三言两语讲清楚线性规划单纯形方法

必须承认,上学的时候线性规划这门课完全没听懂。参加工作后,需要根据线性规划原理写一个算法,没办法,只好自己从头学,几经周折终于弄明白。感觉单纯形方法一节课足以讲明白,不知道教材为什么写得这么深奥难懂,而且竟然需要用一学年时间授课。
  本文,我按自己的理解讲一下单纯形方法。我保证,稍加耐心看明白这篇文章,你能把单纯形算法DIY出来。

典范型

从一个实际例子开始讨论。

例1 求解下述LP问题最优解:

m a x    z = 2 x 1 + 3 x 2 + 4 (1) \tag{1} max \ \ z = 2x_1 + 3x_2 + 4 max  z=2x1+3x2+4(1)
s.t.

{ 5 x 1 + 2 x 2 ≤ 40 3 x 1 + 5 x 2 ≤ 30 − x 1 + 3 x 2 ≤ 9 x 1 , x 2 ≥ 0 (2) \tag{2} \begin{cases} & 5x_1 + 2x_2 &\le& 40 \\ & 3x_1 + 5x_2 &\le& 30\\ & -x_1 + 3x_2 &\le& 9 \\ & x_1 , x_2 &\ge& 0 \end{cases} 5x1+2x23x1+5x2x1+3x2x1,x2403090(2)

图 1

LP问题有很多种表达形式,我比较喜欢上面这种,解的可行域差不多是上图这个样子,在这样一个可行域里,寻找目标函数的最大值。最优解通常位于可行域顶点位置。感觉上面这种表达形式比较符合直观想象。
  本文中我们把上述形式的LP模型称为典范型

标准型

约束条件(2)是不等式,引入松弛变量 x 3 , x 4 , x 5 x_3,x_4,x_5 x3,x4,x5将其变为等式。
  
m a x    z = 2 x 1 + 3 x 2 + 4 (3) max \ \ z = 2x_1 + 3x_2 + 4 \tag{3} max  z=2x1+3x2+4(3)

s.t.

{ 5 x 1 + 2 x 2 + x 3 = 40 3 x 1 + 5 x 2 + x 4 = 30 − x 1 + 3 x 2 + x 5 = 9 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 (4) \begin{cases}\tag4 & 5x_1 + 2x_2 + x_3 &=& 40 \\ &3x_1 + 5x_2 + x_4&=& 30\\ &-x_1 + 3x_2 + x_5&=& 9 \\ & x_1, x_2, x_3, x_4, x_5 & \ge & 0 \\ \end{cases} 5x1+2x2+x33x1+5x2+x4x1+3x2+x5x1,x2,x3,x4,x5===403090(4)
  上述表达形式称为LP问题的标准型,任何LP问题均可转化为标准型。如何把典范性转化为标准型,不是本文关注的问题,对此不展开讨论。需要关注的是, 约束条件中的五个变量,令它们分别等于零,则对应的图像是可行域的五条边界。 牢牢记住这一点,这是单纯形解法的关键,参见下图。
  
图 2

单纯形方法思路

单纯性的思路很简单,如果最优解唯一的话,它一定是可行域的一个顶点。
  上面的例子中,可行域的顶点就是两条边界的交点。换句话讲,最优解的五个变量 x 1 , . . . , x 5 x_1,...,x_5 x1,...,x5中,一定有两个变量为零,其余的大于等于零。我们先从最简单的情况开始研究。

最简单的情形

例1修改一下,把目标函数的变量系数改成负数,其它条件不变。

例2 求解LP问题:
m a x   z = − 2 x 1 − 3 x 2 + 4 (5) max \ z = -2x_1 -3x_2 + 4 \tag{5} max z=2x13x2+4(5)

解:
  由于目标函数的变量系数都是负数,很显然, x 1 , x 2 = 0 x_1,x_2=0 x1,x2=0 时,目标函数取得最大值。
  于是,毫无悬念,问题的解为:
x 1 = 0 , x 2 = 0 , z = 4. x_1=0,x_2=0,z=4. x1=0,x2=0,z=4.

和几何解释结合起来,问题的最优解是直线 x 1 = 0 , x 2 = 0 x_1=0,x_2=0 x1=0,x2=0的交点。 ■ \blacksquare

问题再复杂一点点

如果目标函数中变量系数有大于零的怎么办?答案是通过更换变量,使系数小于零。下面例子中, x 1 x_1 x1系数为正,显然 x 1 = 0 x_1=0 x1=0不再适合做此规划问题的最优解。于是我们要想办法选择一个合适的变量来置换 x 1 x_1 x1,具体方法参照下面的例子。

例3 求解LP问题:
m a x   z = 2 x 1 − 3 x 2 + 4 (6) \tag6 max \ z = 2x_1 - 3x_2 + 4 max z=2x13x2+4(6)
s.t.
{ 5 x 1 + 2 x 2 + x 3 = 40 3 x 1 + 5 x 2 + x 4 = 30 − x 1 + 3 x 2 + x 5 = 9 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 (7) \begin{cases} 5x_1 + 2x_2 + x_3 &=& 40\tag{7} \\ 3x_1 + 5x_2 + x_4 &=& 30\\ -x_1 + 3x_2 + x_5 &=& 9 \\ x_1, x_2, x_3, x_4, x_5 &\ge& 0 \end{cases} 5x1+2x2+x33x1+5x2+x4x1+3x2+x5x1,x2,x3,x4,x5===403090(7)
  解:
  把约束方程(7)变换一下形式,用 x 1 , x 2 x_1,x_2 x1,x2表示其它变量:
{ x 3 = − 5 x 1 − 2 x 2 + 40 x 4 = − 3 x 1 − 5 x 2 + 30 x 5 = x 1 − 3 x 2 + 9 (8) \begin{cases} x_3 &=& -5x_1-2x_2+40 \tag{8}\\ x_4 &=& -3x_1-5x_2+30 \\ x_5 &=& x_1-3x_2+9 \end{cases} x3x4x5===5x12x2+403x15x2+30x13x2+9(8)
  上述方程式左边的变量称为基变量,右边的变量称为非基变量
寻求可行解
  方程组右边的常数项都是非负的,这说明 x 1 = 0 , x 2 = 0 x_1=0,x_2=0 x1=0,x2=0时其他变量均非负,也就是说 x 1 = 0 , x 2 = 0 x_1=0,x_2=0 x1=0,x2=0是一组可行解。
  注:本例有意忽略了可行解求法,后面会专门介绍可行解一般求法。

选择入基变量
  目标函数中,非基变量 x 1 x_1 x1系数是正数,它的值越大,目标函数就越大。在单纯形方法中,非基变量最终总是要取零值的,因此,它作为非基变量不利于目标函数最大化。我们希望选择一个新的变量来置换它。这一步中, x 1 x_1 x1称为入基变量

选择出基变量  
  从基变量 x 3 , x 4 , x 5 x_3,x_4,x_5 x3,x4,x5选择出基变量,用于置换 x 1 x_1 x1。很显然, x 5 x_5 x5不合适,因为在约束条件(8)中,它与 x 1 x_1 x1系数符号相同,把它放到目标函数中,它的系数仍然为正数。这不符合我们最初的想法。令其他两个个变量为零,看看 x 1 x_1 x1等于多少。
{ x 2 = 0 , x 3 = 0 ⇒   x 1 = − 40 / ( − 5 ) = 8 x 2 = 0 , x 4 = 0 ⇒   x 1 = − 30 / ( − 3 ) = 10 \begin{cases}{} x_2=0,x_3=0 &\Rightarrow& \ x_1 = -40 / (-5) = 8 \\ x_2=0,x_4=0 &\Rightarrow& \ x_1 = -30/(-3) = 10 \end{cases} {x2=0,x3=0x2=0,x4=0 x1=40/(5)=8 x1=30/(3)=10
  这两个解,我们肯定要选择绝对值较小的那个。为什么呢?因为如果选择较大的那个 x 1 = 10 x_1=10 x1=10(注:OA与CB的交点),也落到了可行域之外,只有最小的一个(A点)才恰好落在可行域的一个顶点上。

求最优解
   x 1 , x 3 x_1,x_3 x1,x3角色交换后,可以用 x 2 , x 3 x_2,x_3 x2,x3表示其他变量,于是得到:
x 1 = − 2 5 x 2 − 1 5 x 3 + 8 x_1 = -\frac25x_2 -\frac15x_3 + 8 x1=52x251x3+8
  代入目标函数,得到:
m a x   z = − 19 5 x 2 − 2 5 x 3 + 20 max \ z = -\frac{19}5x_2 -\frac25x_3+20 \\ max z=519x252x3+20

显然,当 x 2 = 0 , x 3 = 0 x_2=0,x_3=0 x2=0,x3=0时得到最优解 z = 20 z = 20 z=20 ■ \blacksquare

如何求初始可行解

前面看到如何根据第一个可行解逐步求初最优解,那么第一个可行解是如何求出来的呢?
  
  例4 求下面LP最优解:
m a x   z = 2 x 1 + 3 x 2 + 4 max \ z = 2x_1 + 3x_2 + 4\\ max z=2x1+3x2+4
s.t.
{ 5 x 1 + 2 x 2 ≤ 40 3 x 1 + 5 x 2 ≤ 30 − 2 x 1 + x 2 ≤ − 1 x 1 , x 2 ≥ 0 \begin{cases} 5x_1 + 2x_2 &\le& 40 \\ 3x_1 + 5x_2 &\le& 30\\ -2x_1 + x_2 &\le& -1 \\ x_1, x_2 &\ge& 0 \end{cases} 5x1+2x23x1+5x22x1+x2x1,x2403010

解:
   x 1 = 0 , x 2 = 0 x_1=0,x_2=0 x1=0,x2=0不是可行解,我们需要研究如何寻找初始基础可行解。
  问题转化成标准型,
{ 5 x 1 + 2 x 2 + x 3 = 40 3 x 1 + 5 x 2 + x 4 = 30 − 2 x 1 + x 2 + x 5 = − 1 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 \begin{cases} 5x_1 + 2x_2 + x_3 &=& 40 \\ 3x_1 + 5x_2 + x_4 &=& 30\\ -2x_1 + x_2 + x_5 &=& -1 \\ x_1, x_2, x_3, x_4, x_5 &\ge& 0 \end{cases} 5x1+2x2+x33x1+5x2+x42x1+x2+x5x1,x2,x3,x4,x5===403010
  我们先尝试把 x 1 , x 2 x_1,x_2 x1,x2当作非基变量,写出可行解约束方程,

{ x 3 = − 5 x 1 − 2 x 2 + 40 x 4 = − 3 x 1 − 5 x 2 + 30 x 5 = 2 x 1 − x 2 − 1 \begin{cases} x_3 &=& -5x_1 - 2x_2 + 40 \\ x_4 &=& -3x_1 - 5x_2 + 30\\ x_5 &=& 2x_1 - x_2 -1 \end{cases} x3x4x5===5x12x2+403x15x2+302x1x21
  令 x 1 = 0 , x 2 = 0 x_1=0,x_2=0 x1=0,x2=0,我们看到 x 5 = − 1 x_5=-1 x5=1,所以我们确定 x 5 x_5 x5出基。入基变量如何选择?
  显然应该选择系数与常数项相反的,也就是 x 1 x_1 x1。这样, x 2 = 0 , x 5 = 0 x_2=0,x_5=0 x2=0,x5=0时, x 1 = 1 2 ≥ 0 x_1=\frac12 \ge 0 x1=210
  于是问题变成,
m a x   z = 4 x 2 + x 5 + 5 max \ z = 4x_2 + x_5 + 5\\ max z=4x2+x5+5
s.t
{ x 1 = 1 2 x 2 + 1 2 x 5 + 1 2 x 3 = − 9 2 x 2 − 5 2 x 5 + 75 2 x 4 = − 13 2 x 2 − 3 2 x 5 + 57 2 \begin{cases} x_1 &=& \frac12x_2+\frac12x_5+\frac12\\ x_3 &=& -\frac92x_2 - \frac52x_5 + \frac{75}2 \\ x_4 &=& -\frac{13}2x_2 - \frac32x_5 + \frac{57}2 \end{cases} x1x3x4===21x2+21x5+2129x225x5+275213x223x5+257
  现在基可行解约束方程右边的常数项全部非负。令非基变量为零,可以得到初始基可行解。 ■ \blacksquare

小结

单纯形方法利用了可行域顶点就是非基变量为零的那些点,通过从第一个随机解,逐步进行入基/出基置换,得到第一个可行解,然后再继续入基/出基置换,得到最优解。
  
  从几何解释上看,就是从任意一个顶点,先找到可行域的一个顶点,再不断沿着相邻顶点,最终走到最优点。
  
  另外需要注意两个特殊情况:

  1. 如果目标函数中某个变量的系数大于零,但是无法找到与其置换的入基变量,该规划问题最优解是正无穷大。
  2. 如果目标函数中某个变量系数为零,则规划问题可能具有无数个解。
  3. 如果无可行解,则规划问题无解。

到这里单纯形方法的最核心内容就讲完了。通过本文获取的第一手经验,读懂专业教程应该没多大困难了。

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
根据引用\[1\]中的信息,CMOS sensor的曝光方式有场曝光Global shutter和行曝光Electronic rolling shutter。在行曝光Electronic rolling shutter模式下,每一行像素的曝光开始时间和结束时间是不一样的,而在场曝光Global shutter模式下,所有像素的曝光开始时间和结束时间都是一样的。因此,行曝光模式下捕获快速移动的物体可能会引起图像失真和扭曲,而场曝光模式需要更高成本的存储器来存放像素值。 至于sensor的读出时间如何计算,引用\[3\]中提到了读出噪声,其中包括黑电平(暗电流)和满足高斯分布的噪声。读出时间的计算通常涉及到传感器的特性和读出电路的设计。具体的计算方法可能因传感器的不同而有所差异。一般来说,读出时间可以通过传感器的帧率和曝光时间来计算。帧率是指每秒钟传感器能够采集和读出的图像帧数,而曝光时间是指传感器曝光的持续时间。读出时间可以通过帧率减去曝光时间来得到。 总结起来,sensor的读出时间可以通过帧率减去曝光时间来计算,具体的计算方法可能因传感器的不同而有所差异。 #### 引用[.reference_title] - *1* [【camera】【CMOS Sensor】感光芯片cmos sensor简单介绍](https://blog.csdn.net/sinat_41752325/article/details/127629360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [三言两语讲讲 sensor 的噪声](https://blog.csdn.net/m0_37324740/article/details/114847710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值