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

标准形式

  • 线性规划

  如下形式的线性规划记2-1
min⁡∑j=1ncjxjs.t. ∑j=1naijxj=bi,i=1,2,⋯,mxj≥0,j=1,2,⋯,n}\left.\begin{array}{ll}{\min \sum_{j=1}^{n} c_{j} x_{j}} \\ {\text { s.t. } \sum_{j=1}^{n} a_{i j} x_{j}=b_{i},} & {i=1,2, \cdots, m} \\ {x_{j} \geq 0,} & {j=1,2, \cdots, n}\end{array}\right\} min∑j=1n​cj​xj​ s.t. ∑j=1n​aij​xj​=bi​,xj​≥0,​i=1,2,⋯,mj=1,2,⋯,n​⎭⎬⎫​

  称为线性规划的标准形式。其中cjc_{j}cj​称为价格系数,bib_{i}bi​称为右端项

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

min⁡cTxs.t. Ax=bx≥0}\left.\begin{array}{c}{\min c^{T} x} \\ {\text {s.t. } A x=b} \\ {x \geq 0}\end{array}\right\} mincTxs.t. Ax=bx≥0​⎭⎬⎫​

  其中A=(aij)m×nA=(a_{ij})_{m \times n}A=(aij​)m×n​,b=(b1,⋯,bm)Tb=(b_{1}, \cdots, b_{m})^{T}b=(b1​,⋯,bm​)T,c=(c1,⋯,cn)Tc=(c_{1}, \cdots , c_{n})^{T}c=(c1​,⋯,cn​)T,x=(x1,⋯,xn)Tx=(x_{1},\cdots , x_{n})^{T}x=(x1​,⋯,xn​)T。

  • 典范形式

  在下面进行理论分析时,经常把AAA看作由nnn个列向量构成的,即:

A=[a1,a2,⋯,an]A=[a_{1},a_{2},\cdots ,a_{n}] A=[a1​,a2​,⋯,an​]

  其中第jjj列向量是aj=[a1j,a2j,⋯,amj]Ta_{j}=[a_{1j},a_{2j},\cdots ,a_{mj}]^{T}aj​=[a1j​,a2j​,⋯,amj​]T。于是,2-2中的Ax=bAx=bAx=b可写成:

∑j=1nxjaj=b\sum_{j=1}^{n}x_{j}a_{j}=b j=1∑n​xj​aj​=b

  若AAA中有mmm个列向量可以合并成单位矩阵,且b≥0b \geq 0b≥0,则此时的2-2称为线性规划的典范形式

一般形式化标准形

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

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

  • (1) 极大化极小

  如求max∑j=1ncjxjmax \sum_{j=1}^{n}c_{j}x_{j}max∑j=1n​cj​xj​,可变为min∑j=1n(−cj)xjmin \sum_{j=1}^{n}(-c_{j})x_{j}min∑j=1n​(−cj​)xj​。

  • (2) 松弛变量和剩余变量
      如约束中出现≤\leq≤,则在该约束中加上一个变量(称为松弛变量),并要求该变量非负;如出现≥\geq≥,则在该约束中减去一个变量(称为剩余变量)。

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

  • (3) 自由变量
      以上讨论都考虑变量的取值是非负的。实际中,如果某些变量没有这种约束,也就是说,某些变量可以任意取值,那么这些变量称为自由变量。自由变量可以通过以下两种方法把它消除。

    • 第一种方法:引入两个非负变量x1+x_{1}^{+}x1+​和x1−x_{1}^{-}x1−​,令x1=x1+−x1−x_{1}=x_{1}^{+}-x_{1}^{-}x1​=x1+​−x1−​。将其代入到线性规划的目标函数和约束函数中,自由变量 x1x_{1}x1​就消除了。注意,求出新线性规划的最优点后,再利用x1=x1+−x1−x_{1}=x_{1}^{+}-x_{1}^{-}x1​=x1+​−x1−​便可以定出x1x_{1}x1​。
    • 第二种方法:取一个包含x1x_{1}x1​的等式约束,例如ai1x1+ai2x2+⋯+aimxn=bia_{i1}x_{1}+a_{i2}x_{2}+ \cdots + a_{im}x_{n}=b_{i}ai1​x1​+ai2​x2​+⋯+aim​xn​=bi​由此解出:
      x1=biai1−ai2ai1x2−⋯−ainai1xnx_{1}=\frac{b_{i}}{a_{i1}}-\frac{a_{i2}}{a_{i1}}x_{2} - \cdots - \frac{a_{in}}{a_{i1}}x_{n} x1​=ai1​bi​​−ai1​ai2​​x2​−⋯−ai1​ain​​xn​

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

解的性质

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

  满足Ax=bAx=bAx=b的xxx称为方程组Ax=bAx=bAx=b的,而满足Ax=bAx=bAx=b,x≥0x \geq 0x≥0的xxx称为线性规划2-2的容许解。现在要定义一种特殊的容许解-基本容许解,而在介绍基本容许解之前需要介绍另一个概念:基。

定义:AAA的mmm个线性无关列向量称为。基中的每个列向量称为基向量,而AAA中的其余列向量称为非基向量。由全体基向量合成的矩阵称为基矩阵,也简称为基。若基是单位矩阵,则称为标准基

定义: 在约束∑j=1nxjaj=b\sum_{j=1}^{n}x_{j}a_{j}=b∑j=1n​xj​aj​=b中,确定一个基后,与基向量对应的变量称为基变量,与非基向量对应的变量称为非基变量

定义: 设x0x_{0}x0​是Ax=bAx=bAx=b的一个解。若它有mmm个分量所对应的AAA的列向量构成基BBB,而其余n−mn-mn−m个分量全部为0,则x0x_{0}x0​称为约束Ax=bAx=bAx=b关于基BBB的基本解。若x0x_{0}x0​还满足x0≥0x_{0} \geq 0x0​≥0则x0x_{0}x0​称为约束Ax=bAx=bAx=b,x≥0x \geq 0x≥0关于基BBB的基本容许解,也称为线性规划2-2关于基BBB的基本容许解。

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

定义:设BBB是2-2的一个基。若2-2存在关于BBB的基本容许解,则称B是2-2的容许基;否者称为非容许基。若容许基是单位矩阵,则称为标准容许基

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

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

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

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

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

  约束:
Ax=b,x≥0Ax=b, \ \ x \geq 0 Ax=b,  x≥0

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

定理: 设AAA是秩为mmm的m×nm \times nm×n矩阵,DDD是由约束Ax=b,x≥0Ax=b, \ \ x \geq 0Ax=b,  x≥0所确定的容许集,则XXX为Ax=b,x≥0Ax=b, \ \ x \geq 0Ax=b,  x≥0的基本容许解的充要条件是xxx为DDD的极点。

推论: 容许集D={x∣Ax=b,x≥0}D=\{x|Ax=b,x \geq 0\}D={x∣Ax=b,x≥0}的极点个数有限。其中假定AAA是秩为mmm的m×nm \times nm×n矩阵。

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

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

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

我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

线性规划 (一) 线性规划的基本形式及各种概念相关推荐

  1. 单纯形法解下列线性规划问题_用单纯形法求解下列线性规划问题 线性规划单纯形法教学策略探求...

    摘    要:运筹学中的线性规划使用日广.文章从高职院校线性规划教材与教育现状动身,提出了改善线性规划单纯形法教育的新策略. 要害词:高职院校;线性规划;单纯形法 中图分类号:G642.0       ...

  2. 【运筹学】对偶理论 : 对偶问题引入 ( 生产产品线性规划 | 设备租赁线性规划 | 对偶问题引入 )

    文章目录 一.工厂生产产品模型 二.问题一 : 生产利润最大化 三.问题二 : 设备出租问题 四.对偶问题引入 一.工厂生产产品模型 工厂生产 甲 , 乙 两种产品 ; 生产每种产品 , 都需要使用 ...

  3. 【运筹学】线性规划数学模型 ( 线性规划求解 | 根据非基变量的解得到基变量解 | 基解 | 基可行解 | 可行基 )

    文章目录 一.线性规划求解 二.根据非基变量的解得到基变量解 三.基解 四.基可行解 五.可行基 一.线性规划求解 在上一篇博客 [运筹学]线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | ...

  4. 数据科学家线性规划入门指南

    前言 生活之道在于优化.每个人拥有的资源和时间都是有限的,我们都想充分利用它们.从有效地利用个人时间到解决公司的供应链问题--处处都有用到优化. 优化还是一个有趣的课题--它解决的问题初看十分简单,但 ...

  5. 单纯形法表格法例题详解_优化 |运筹学线性规划单纯形法之求解

    文章申明 文章作者:臧永森 臧永森:清华大学工业工程系在读博士,研究方向:运筹优化算法的设计与应用.数据统计分析.大数据技术与应用,戚铭尧老师团队 责任编辑:阎泳楠 文章由『运筹OR帷幄』原创发布,如 ...

  6. 万字教你如何用 Python 实现线性规划

    摘要:线性规划是一组数学和计算工具,可让您找到该系统的特定解,该解对应于某些其他线性函数的最大值或最小值. 本文分享自华为云社区<实践线性规划:使用 Python 进行优化>,作者: Yu ...

  7. 数学建模算法与程序(司守奎):第一章 线性规划

    第一章 线性规划 1 线性规划 1.1 线性规划的实例与定义 1.2 线性规划的MATLAB标准形式是 1.3线性规划问题解的概念 1.4 线性规划的图解法 1.5 求解线性规划的MATLAB解法 例 ...

  8. 只需一步,轻松用Python实现线性规划

    线性规划说明 什么是线性规划? 想象一下,您有一个线性方程组和不等式系统.这样的系统通常有许多可能的解决方案.线性规划是一组数学和计算工具,可让您找到该系统的特定解,该解对应于某些其他线性函数的最大值 ...

  9. 数学建模专栏:线性规划与应用

    摘要:线性规划是运筹学中一个广泛应用的优化方法,用于解决线性目标函数在一系列线性约束条件下的最优化问题.本篇博客将介绍线性规划的基本概念.求解方法以及在实际问题中的应用.我们将使用MATLAB中的li ...

  10. 【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )

    文章目录 一.线性规划示例 二.转化成标准形式 三.初始基可行解 四.列出单纯形表 五.计算检验数 六.选择入基变量与出基变量 七.第一次迭代 : 列出单纯形表 一.线性规划示例 线性规划示例 : 使 ...

最新文章

  1. 面试:那些问哭你的Redis分布式锁!
  2. zcmu1716(思维)
  3. 史上最严重的忘拿钥匙事件 | 今日最佳
  4. 一次失败的项目经理招聘经验
  5. 利用光学流跟踪关键点---30
  6. 如何解决无法显示隐藏文件文件夹
  7. OneNote中到底能放多少种东西?
  8. JavaScript随机数的应用
  9. 运筹说 第4期|掌握运筹学软件,走遍天下都不怕
  10. 分享:无版权图片素材免费下载网站
  11. Nginx学习使用记录
  12. 大屏可视化之适配和布局
  13. 个人免签码支付源码+监控APP 实测搭建成功
  14. SLAM学习 | 世界坐标系转经纬度误差分析
  15. Rockchip平台DDR调试排查手段
  16. python 新浪邮箱发送邮件
  17. SerialFeature
  18. A constrained Eigenvalue Problem翻译
  19. LENOVO ThinkServer RD630 服务器
  20. 如何开发股票软件401

热门文章

  1. Debian/Ubuntu - 解决Root用户不能远程连接服务器的问题
  2. 基于node.js的express使用mysql语句在插入数据时防重插入
  3. 华为VLAN聚合原理与实验
  4. Linux 重定向与连接符详解
  5. docker容器中的网络原理(单机模式下的容器网络)
  6. 20180312顺序查找
  7. Django 查询表的几种方式
  8. 威胁情报工具:更快?更聪明?
  9. 简单实用的Android ORM框架TigerDB
  10. 整理的部分Java和C#不同点