【课堂笔记】线性规划(方述诚)L1&L2 介绍和预备知识

记录线性规划的笔记,学习过程难免出错,欢迎指出错误。
课程为方述诚教授线性规划公开课,文中图片为课程PDF中截取,版权归PDF所有者。

L1 Introduction

线性规划(LP)历史

  • Conceived by G. B. Dantzig (1947)
  • Named by T. C. Koopmans & G. B. Dantzig (1948)
  • Simplex Method proposed by G. B. Dantzig (1948).(单纯形法曾是唯一的算法)
  • Ellipsoid Method proposed by L. G. Khachian (1979)(First polynomial-time algorithm for LP)(椭球法是第一个多项式时间算法)
  • Interior-Point Method proposed by N.Karmarkar (1984).(First “good” polynomial-time algorithm for LP)(内点法是第一个表现良好的多项式时间算法)

大规模线性规划问题的求解思路

  • 特殊结构
  • 稀疏性
  • 解构,大化小
  • 并行计算

L2 求解前的准备工作

LP的标准型

  关于线性规划的标准型和规范型,请参考线性规划标准型和规范型

关键元素

n n n个变量(有限个)
x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn

1个目标函数
z = c 1 x 1 + c 2 x 2 + . . . + c n x n z = c_1x_1+c_2x_2+...+c_nx_n z=c1x1+c2x2+...+cnxn

m m m个约束
a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + . . . + a 2 n x n = b 2 ⋮ a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m \begin{matrix} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1 \\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2 \\ \vdots \\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m \\ \end{matrix} a11x1+a12x2+...+a1nxn=b1a21x1+a22x2+...+a2nxn=b2am1x1+am2x2+...+amnxn=bm

非负约束
x 1 ≥ 0 , x 2 ≥ 0 , . . . , x n ≥ 0 x_1 \ge 0,x_2 \ge 0,...,x_n\ge 0 x10,x20,...,xn0

线性规划一般形式

M i n i m i z e   z = c 1 x 1 + c 2 x 2 + . . . + c n x n subject to                                                                                         a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + . . . + a 2 n x n = b 2 ⋮ a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m x 1 ≥ 0 , x 2 ≥ 0 , . . . , x n ≥ 0 (LP) {\rm{Minimize}} \ z = c_1x_1+c_2x_2+...+c_nx_n \\ \text{subject to \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ } \\ \\a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1 \\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2 \\ \vdots \\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m \\ x_1 \ge 0,x_2 \ge 0,...,x_n\ge 0 \tag{LP} Minimize z=c1x1+c2x2+...+cnxnsubject to                                                                                        a11x1+a12x2+...+a1nxn=b1a21x1+a22x2+...+a2nxn=b2am1x1+am2x2+...+amnxn=bmx10,x20,...,xn0(LP)
即,最小化一个目标函数+等于约束+非负变量

线性规划矩阵形式

  为了方便表述,线性规划的向量都是列向量
令,
c = ( c 1 c 2 ⋮ c n ) \bf{c} = \begin{pmatrix} c_1\\c_2\\ \vdots\\c_n \end{pmatrix} c=c1c2cn

x = ( x 1 x 2 ⋮ x n ) \bf{x} = \begin{pmatrix} x_1\\x_2\\ \vdots\\x_n \end{pmatrix} x=x1x2xn

b = ( b 1 b 2 ⋮ b n ) \bf{b} = \begin{pmatrix} b_1\\b_2\\ \vdots\\b_n \end{pmatrix} b=b1b2bn

A = ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ) \bf{A} = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \\ \end{pmatrix} A=a11a21am1a12a22am2a1na2namn
于是,上述的LP公式可以写成
M i n   c T x s. t.  A x = b          x ≥ 0 {\rm{Min}} \ {\bf{c}}^T {\bf{x}} \\ \text{s. t. } {\bf{Ax} = \bf{b}} \ \ \ \ \ \ \ \ \\ \bf{x} \ge 0 Min cTxs. t. Ax=b        x0
看着简洁多了,矩阵就是好啊!

简单例子(运输问题)

  经典的运输问题如下图所示,有NC、OK、IO、VA四个城市提供猪肉,有NY、LA、DC三个城市需要猪肉,每吨猪肉的价格在各个城市之间的运费不同,具体如第三个矩阵所示,求一个满足需求且成本最小的分配方案。


运输问题

  按照线性规划的关键元素,进行建模。

在这里插入图片描述

  最后得到一个完整的线性规划模型,如图所示


在这里插入图片描述

注意,上图中的等式约束是可以削减一个的,因为我们的输入数据中,供给量等于需求量,有冗余,非最简形式。因为供给等于需求,所以去掉一个约束,没送出去(没得到)的肉必然属于哪个城市。
另外,这不是一个解方程的问题,这是线性规划,7个等式,12个变量,12个非负约束

隐含假设

  上述的运输问题的例子我们暂时不去求解,建模的过程包含很多假设我们先不考虑。这里说的隐含假设是指线性规划问题的隐含假设。

  1. 均衡假设:没有规模效应、没有折扣
  2. 加法假设:总=各部分之和
  3. 可分假设:非整数,任何小数都可接受
  4. 确定假设:所有的参数都是已知且确定的

转成标准型

看下面的一个线性规划的一个例子:


在这里插入图片描述

  在这个例子中,上述式子区别于标准型,首先目标函数是最大化的,其次 x 3 x_3 x3存在绝对值,最后约束也不是等式。处理方法如下:

无约束变量处理方法

  上述问题中的 x 3 x_3 x3是无约束的变量,并未出现 x 3 ≥ 0 x_3 \ge 0 x30,处理的方法如下:
  引入两个非负变量,将无约束变量看做这两个非负变量相减。
x i ∈ R x_i \in {\bf{R}} xiR,令
在这里插入图片描述
于是,有 x i = x i + − x i − , x i − ≥ 0 , x i − ≥ 0 x_i = x_i^+-x_i^-, x_i^- \ge 0,x_i^-\ge 0 xi=xi+xixi0,xi0相当于任意两数非负数相减,结果可能是正数、负数、0。
∣ x i ∣ = x i + + x i − |x_i| = x_i^++x_i^- xi=xi++xi相当于两个非负数相加。
但是しかし无约束变量处理中隐含了一个非常重要的条件,即 x i + × x i − = 0 x_i^+ \times x_i^- = 0 xi+×xi=0
因为 x i − x_i^- xi x i − x_i^- xi总有一个要为0。

不等式约束处理方法

  经过上述的处理,线性规划例子变成了如下模样:


在这里插入图片描述

  这时,引入松弛变量和剩余变量的概念。在小于等于约束中,引入松弛变量,填补小于等于的部分,转换成等式。

在这里插入图片描述

  在大于等于约束中,引入剩余变量,减去大于等于的部分,转换成等式。

在这里插入图片描述

最大化目标函数处理方法

  经过上述的处理,线性规划例子变成了如下模样:


在这里插入图片描述

  现在,只剩下目标函数不对了,最大化一个问题,就等于最小化这个问题目标函数取负后的目标函数值再取负,即 M a x   c T x = − M i n ( − c T x ) {\rm{Max}}\ c^T x = {-\rm{Min}}(-c^Tx) Max cTx=Min(cTx),原理如图所示

在这里插入图片描述

  于是,例子中的线性规划终于转成了标准型。

在这里插入图片描述

处理绝对值 ∣ x i ∣ |x_i| xi时潜在问题

  1. 增加了变量个数,就增加了问题的维度。
       x i = x i + − x i − , x i − ≥ 0 , x i − ≥ 0 x_i = x_i^+-x_i^-, x_i^- \ge 0,x_i^-\ge 0 xi=xi+xixi0,xi0 ∣ x i ∣ = x i + + x i − , x i − ≥ 0 , x i − ≥ 0 |x_i| = x_i^++x_i^-, x_i^- \ge 0,x_i^-\ge 0 xi=xi++xixi0,xi0
  2. 在处理绝对值问题丢失了一个二次约束。
      丢失的二次约束就是前文中的 x i + × x i − = 0 x_i^+ \times x_i^- = 0 xi+×xi=0
  3. 原问题的一个解(并非某一变量值)变成了处理后问题(新问题)的多个解。
      比如,原问题 x i = 5 x_i=5 xi=5,可以是新问题5-0=5得来,6-1=5得来,也可以是7-2=5得来。(产生这样的问题就是丢失了二次约束 x i + × x i − = 0 x_i^+ \times x_i^- = 0 xi+×xi=0,这个约束让其中一个变量为0)
  4. ∣ x ∣ |x| x是凸的, − ∣ x ∣ -|x| x是凹的。
      凹函数这里出现了问题,因为 − ∣ x ∣ -|x| x是凹函数,没有极小。
      (中国大陆数学界某些机构关于函数凹凸性定义和国外的定义相反,此处为遵守方述诚教授课程中的定义,即英文convex function。详见凸函数——百度百科)
  5. 当求 c ∣ x ∣ c|x| cx c > 0 c >0 c>0最大化时, m a x   c ∣ x ∣ {\rm{max\ }}c|x| max cx可能会有问题。(绝对值出现在目标函数中)
      求 c ∣ x ∣ c|x| cx的最大化,转换为求 − c ∣ x ∣ -c|x| cx的最小化,若 c c c为正,则 − c ∣ x ∣ -c|x| cx为凹函数且无极小。丢失二次约束会导致无解。

  按照上述方法处理问题,举几个反例。

反例1 多个解出现

在这里插入图片描述

  这个问题中,只有一个唯一解,最优值为-1。按照上述的方法进行转换,得到标准型如下:


在这里插入图片描述

即产生了目标函数值等于-1的多个解(丢失了其中一个变量为0的隐藏约束)。
反例2 单纯形法失效

  求 − c ∣ x ∣ , c > 0 -c|x|,c>0 cx,c>0的最小化问题,原问题为:


在这里插入图片描述

经过处理,标准型为


在这里插入图片描述

求这个标准型,得到解为


在这里插入图片描述

  单纯形法失效了,不能从一个点转到另一个点再转到最优点。
  这个问题,在1971年被发现并提出,原文和参考如下:


在这里插入图片描述

  也就是说,在求max问题中目标函数出现了 c ∣ x ∣ c|x| cx,且 c > 0 c>0 c>0,上述处理失效,因为缺少那个隐藏的二次约束。1948年单纯形法提出,1971年人们才发现这个问题。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值