在最优化中,目标函数和约束函数皆为线性函数的优化问题称为线性规划(LP),它是相对简单的最优化问题。

标准形式

  • 线性规划

  如下形式的线性规划记2-1
利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题

利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_02称为价格系数利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_03称为右端项

  采用向量-矩阵表示法,标准形式可以简写为如下形式,记为2-2:

利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_04

利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_05利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_06利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_07利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_08

  • 典范形式

利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09看作由利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_10个列向量构成的,即:

利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_11

利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_12列向量是利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_13。于是,2-2中的利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14可写成:

利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_15

利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09中有利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_17个列向量可以合并成单位矩阵,且利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_18,则此时的2-2称为线性规划的典范形式

一般形式化标准形

  对于一般形式的线性规划,比如标准形式中是求极小,而有时候给出的是求极大,所以我们需要将其化成标准形,然后对标准形做研究,得到通用的解法。

  那么实际问题中出现的非标准形式如何处理呢?有三个基本原则:

  • (1) 极大化极小

利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_19,可变为利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_20

  • (2) 松弛变量和剩余变量
      如约束中出现利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_21,则在该约束中加上一个变量(称为松弛变量),并要求该变量非负;如出现利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_22,则在该约束中减去一个变量(称为剩余变量)。

注意:新引入变量的价格系数全部设为零,因此目标函数中没有出现新变量。

  • (3) 自由变量
      以上讨论都考虑变量的取值是非负的。实际中,如果某些变量没有这种约束,也就是说,某些变量可以任意取值,那么这些变量称为自由变量。自由变量可以通过以下两种方法把它消除。
  • 第一种方法:引入两个非负变量利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_23利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_24,令利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_25。将其代入到线性规划的目标函数和约束函数中,自由变量 利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_26就消除了。注意,求出新线性规划的最优点后,再利用利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_25便可以定出利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_26
  • 第二种方法:取一个包含利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_26的等式约束,例如利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_30由此解出:
    利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_31

  第一种方法将增加变量的数目,导致问题的维数增大。第二种方法正好相反。

解的性质

  在介绍解的性质之前,先需要了解一下各种各样的解的概念。

利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_33称为方程组利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14,而满足利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_36利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_33称为线性规划2-2的容许解。现在要定义一种特殊的容许解-基本容许解,而在介绍基本容许解之前需要介绍另一个概念:基。

定义:利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_17个线性无关列向量称为。基中的每个列向量称为基向量,而利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09中的其余列向量称为非基向量。由全体基向量合成的矩阵称为基矩阵,也简称为基。若基是单位矩阵,则称为标准基

定义: 在约束利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_41中,确定一个基后,与基向量对应的变量称为基变量,与非基向量对应的变量称为非基变量

定义:利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_42利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14的一个解。若它有利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_17个分量所对应的利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09的列向量构成基利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_46,而其余利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_47个分量全部为0,则利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_42称为约束利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14关于基利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_46基本解。若利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_42还满足利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_52利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_42称为约束利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_14利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_36关于基利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_46基本容许解,也称为线性规划2-2关于基利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_46的基本容许解。

  简单地说,在确定基之后,所有非基变量取值都为0的解是基本解,所有非基变量取值都为0的容许解是基本容许解

定义:设利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_58是2-2的一个基。若2-2存在关于利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_58的基本容许解,则称B是2-2的容许基;否者称为非容许基。若容许基是单位矩阵,则称为标准容许基

  上述所涉及到的概念,总结如下,方便复习:

  • 容许解
  • 基向量
  • 非基向量
  • 基矩阵
  • 标准基
  • 基变量
  • 非基变量
  • 基本解
  • 基本容许解
  • 容许基
  • 非容许基
  • 标准容许基

定义: 若基本解中基变量的取值都不为0,则该解称为非退化的;否者称为退化的。若2-2的所有基本容许解都是非退化的,则线性规划2-2称为非退化的;否者称为退化的。

  若线性规划是非退化的,则容许基与其基本容许解是一一对应的。相反地,退化地基本容许解可能与多个容许基相对应,也就是说不同的容许基会有相同的容许解。

  • 基本容许解与极点地对应关系

  约束:
利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_60

  的基本容许解与这组约束所确定的容许集的极点在一定条件下是一一对应的。

定理:利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09是秩为利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_17利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_63矩阵,利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_64是由约束利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_65所确定的容许集,则利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_66利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_65的基本容许解的充要条件是利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_33利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_64的极点。

推论: 容许集利用截距和斜率画出一元线性函数 python 截距式线性规划_最优化_70的极点个数有限。其中假定利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_09是秩为利用截距和斜率画出一元线性函数 python 截距式线性规划_线性规划_17利用截距和斜率画出一元线性函数 python 截距式线性规划_优化问题_63矩阵。

  这里书上都有证明,这里我引用一位老师的话,定理都是证明给怀疑的人看的,如果你不怀疑,就不需要证明。如果你用过图解法。其实上面这个很好理解的。

定理: 线性规划若有容许解,则必有基本容许解。

定理: 线性规划若有最优解,则必有最优基本容许解。