第7讲 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)

线性规划问题的标准形式

将约束条件由弱约束变为强约束,将不等式组变为了方程组,降低了求解的难度。

对于一般的线性规划问题,容易得到:

目标函数max⁡(min⁡)z=c1x1+c2x2+⋯+cnxn\quad \max (\min ) z=c_{1} x_{1}+c_{2} x_{2}+\cdots+c_{n} x_{n}max(min)z=c1​x1​+c2​x2​+⋯+cn​xn​

约束条件 {a11x1+a12x2+⋯+a1nxn⩽(=,⩾)b1a21x1+a22x2+⋯+a2nxn⩽(=,⩾)b2⋮am1x1+am2x2+⋯+amnxn⩽(=,⩾)bmx1,x2,⋯,xn⩾0}\left\{\begin{array}{c}a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n} \leqslant(=, \geqslant) b_{1} \\ a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n} \leqslant(=, \geqslant) b_{2} \\ \vdots \\ a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n} \leqslant(=, \geqslant) b_{m} \\ x_{1}, \quad x_{2}, \cdots, \quad x_{n} \geqslant 0\end{array}\right\}⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​a11​x1​+a12​x2​+⋯+a1n​xn​⩽(=,⩾)b1​a21​x1​+a22​x2​+⋯+a2n​xn​⩽(=,⩾)b2​⋮am1​x1​+am2​x2​+⋯+amn​xn​⩽(=,⩾)bm​x1​,x2​,⋯,xn​⩾0​⎭⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎫​

通过恒等变形将一般形式化为标准形式,以方便之后的求解。

  1. 目标函数需要化为maxmaxmax。若原本的目标函数是minminmin,则令z′=−zz^{'}=-zz′=−z,然后求maxz′max z^{'}maxz′。
  2. bib_ibi​需要化为>0>0>0。如果bi<0b_i<0bi​<0则不等式两边同时添负号。如果bi=0b_i=0bi​=0则表示出现了退化,一般不会遇到。
  3. 约束条件需要化为===。若原本的约束条件是≤\leq≤,则约束条件变为原本的约束条件减去一个新的非负变量(松弛变量)。若原本的约束条件是≥\geq≥,则约束条件变为原本的约束条件加上一个新的非负变量(剩余变量)。(这一步的目的是将弱约束条件变为强约束条件,便于求解方程,代价是引入了额外的变量,提高了方程的维数。)
  4. 变量需要化为≥0\ge0≥0。若原本的变量是=0=0=0,则直接改为≥0\ge0≥0,但实际上这种情况并不会出现,因为如果变量=0=0=0,那么改变量就不会在目标函数和约束条件中出现。若原本的变量是≤0\le0≤0,则令xi′=−xix_i^{'}=-x_ixi′​=−xi​,并令xi′≥0x_i^{'}\ge0xi′​≥0,同时目标函数和约束条件中进行替换。若原本的变量没有约束(∈\in∈R),则令xi=xi′−xi′′x_i=x_i^{'}-x_i^{''}xi​=xi′​−xi′′​,并令xi′≥0xi′′≥0x_i^{'}\ge0\ x_i^{''}\ge0xi′​≥0 xi′′​≥0,同时目标函数和约束条件中进行替换。
  5. 规范书写目标函数。在形式上调整目标函数,把新引入的变量写回目标函数中。虽然其价值系数为0,但是也要写出来。

线性规划的解的讨论

首先将线性规划问题的标准形式写成矩阵形式。

A=(a11a12⋯a1n⋮⋮⋮am1am2⋯amn)=(P1,P2,⋯,Pn);O=[00⋮0]\boldsymbol{A}=\left(\begin{array}{cccc}a_{11} & a_{12} & \cdots & a_{1 n} \\ \vdots & \vdots & & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n}\end{array}\right)=\left(\boldsymbol{P}_{1}, \boldsymbol{P}_{2}, \cdots, \boldsymbol{P}_{n}\right) ; \quad \boldsymbol{O}=\left[\begin{array}{c}0 \\ 0 \\ \vdots \\ 0\end{array}\right]A=⎝⎜⎛​a11​⋮am1​​a12​⋮am2​​⋯⋯​a1n​⋮amn​​⎠⎟⎞​=(P1​,P2​,⋯,Pn​);O=⎣⎢⎢⎢⎡​00⋮0​⎦⎥⎥⎥⎤​

X=[x1x2⋮xn];b=[b1b2⋮bm]\boldsymbol{X}=\left[\begin{array}{c}x_{1} \\ x_{2} \\ \vdots \\ x_{n}\end{array}\right] ; \quad \boldsymbol{b}=\left[\begin{array}{c}b_{1} \\ b_{2} \\ \vdots \\ b_{m}\end{array}\right]X=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​;b=⎣⎢⎢⎢⎡​b1​b2​⋮bm​​⎦⎥⎥⎥⎤​;C=(c1,c2,⋯,cn); \quad \boldsymbol{C}=\left(c_{1}, c_{2}, \cdots, c_{n}\right);C=(c1​,c2​,⋯,cn​)

线性规划问题可以用矩阵描述为:

max⁡z=CX\max z=\boldsymbol{C}\boldsymbol{X}maxz=CX
AX=b\boldsymbol{A} \boldsymbol{X}=\boldsymbol{b}AX=b
X⩾0\boldsymbol{X} \geqslant 0X⩾0

可行解

满足约束条件式AX=b\boldsymbol{A} \boldsymbol{X}=\boldsymbol{b}AX=b、X⩾0\boldsymbol{X} \geqslant 0X⩾0的解称为线性规划的可行解,其中使目标函数达到最大值的可行解称为最优解。

设AAA是约束方程组的m×n(m<n)m \times n(m<n)m×n(m<n)维系数矩阵,其秩为mmm。BBB是矩阵AAA中m×mm \times mm×m阶子矩阵,其中BBB的列向量都是线性独立的,且∣B∣=0|B|=0∣B∣=0,则称矩阵BBB是线性规划问题的一个基。

BBB中的PiP_iPi​称为基向量,不在BBB中的PiP_iPi​称为非基向量。假设前mmm个变量的系数列向量是线性独立的,用这些向量构成矩阵BBB,那么约束条件AX=b\boldsymbol{A} \boldsymbol{X}=\boldsymbol{b}AX=b可以写成:

(a11a21⋮am1)x1+(a12a22⋮am2)x2+⋯+(a1ma2m⋮amm)xm=(b1b2⋮bm)−(a1,m+1a2,m+1⋮am,m+1)xm+1−⋯−(a1na2n⋮amn)xn\begin{aligned} &\left(\begin{array}{c}a_{11} \\ a_{21} \\ \vdots \\ a_{m 1}\end{array}\right) x_{1}+\left(\begin{array}{c}a_{12} \\ a_{22} \\ \vdots \\ a_{m 2}\end{array}\right) x_{2}+\cdots+\left(\begin{array}{c}a_{1 m} \\ a_{2 m} \\ \vdots \\ a_{m m}\end{array}\right) x_{m}=\left(\begin{array}{c}b_{1} \\ b_{2} \\ \vdots \\ b_{m}\end{array}\right)-\left(\begin{array}{c}a_{1, m+1} \\ a_{2, m+1} \\ \vdots \\ a_{m, m+1}\end{array}\right) x_{m+1}-\cdots-\left(\begin{array}{c}a_{1 n} \\ a_{2 n} \\ \vdots \\ a_{m n}\end{array}\right) x_{n} \end{aligned}​⎝⎜⎜⎜⎛​a11​a21​⋮am1​​⎠⎟⎟⎟⎞​x1​+⎝⎜⎜⎜⎛​a12​a22​⋮am2​​⎠⎟⎟⎟⎞​x2​+⋯+⎝⎜⎜⎜⎛​a1m​a2m​⋮amm​​⎠⎟⎟⎟⎞​xm​=⎝⎜⎜⎜⎛​b1​b2​⋮bm​​⎠⎟⎟⎟⎞​−⎝⎜⎜⎜⎛​a1,m+1​a2,m+1​⋮am,m+1​​⎠⎟⎟⎟⎞​xm+1​−⋯−⎝⎜⎜⎜⎛​a1n​a2n​⋮amn​​⎠⎟⎟⎟⎞​xn​​

现若令上式的非基变量xm+1=xm+2=⋯=xn=0x_{m+1}=x_{m+2}=\cdots=x_{n}=0xm+1​=xm+2​=⋯=xn​=0,这时变量的个数等于线性方程的个 数。用高斯消去法,可以求出一个解X=(x1,x2,⋯,xm,0,⋯,0)T\boldsymbol{X}=\left(x_{1}, x_{2}, \cdots, x_{m}, 0, \cdots, 0\right)^{\mathrm{T}}X=(x1​,x2​,⋯,xm​,0,⋯,0)T,将这个解称为基解(注意基解是nnn维的,而不是mmm维的。)。由此可见有一个基就可以求出一个基解。

基可行解

满足非负条件约束X⩾0\boldsymbol{X} \geqslant 0X⩾0的基解称为基可行解。

可行基

可行解对应的基称为可行基。

基解和基可行解的几何意义

基解的几何意义是:强约束方程的交点。

基可行解的几何意义是:强约束方程的交点(基解),并且是可行域中的点。(换言之即可行域的顶点。)

此处读者可以自行举一个例子,并在图中画出来,然后在图中找出可行解、基可行解、基解和非可行解分别是哪一部分。

基解、可行解和基可行解的关系

上述几种解之间的包含关系可以用下图表示:

由基可行解求最优解

综上所述,找出所有的基,然后得到所有的基可行解,其对应的函数值中最大的就是最优解。当然,这种方法属于枚举法,而在之后的学习中可以通过一定的顺序比较基可行解对应的函数值,也就是单纯形法,这样就可以用比较少的对比次数找出最优解。

总结

为了方便寻找可行解,需要先把线性规划问题化为标准型,主要需要对目标函数、自由项、弱约束条件、自变量进行处理。

对于约束方程组,可以用线性代数的思想进行处理,找到系数矩阵的基,令非基变量为0,可以得到一个由基变量构成的方程组,可以解出唯一解,然后据此得到基解。一个系数矩阵可能有若干个基,每一个基都可以得到一个基解,若基解满足X⩾0\boldsymbol{X} \geqslant 0X⩾0,则该基解还是基可行解,可行解对应的基称为可行基。基可行解对应的函数值中最大的就是最优解。

基可行解的几何意义是可行域的顶点。

可行解和基解的交集为基可行解。

在之后的学习中可以通过一定的顺序比较基可行解对应的函数值,这样就可以用比较少的对比次数找出最优解。

王树尧老师运筹学课程笔记 07 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)相关推荐

  1. 王树尧老师运筹学课程笔记 06 线性规划与单纯形法(几何意义)

    第6讲 线性规划与单纯形法(几何意义) 线性规划的几何意义 图解法 线性规划的维度 变量 可行域维度 图像维度 1 x1x_1x1​ 1(线段) 1 2 x1.x2x_1.x_2x1​.x2​ 2(平 ...

  2. 王树尧老师运筹学课程笔记 09 线性规划与单纯形法(单纯形表的应用)

    第9讲 线性规划与单纯形法(单纯形表的应用) 单纯形表 举例 见教材P37 2.4 根据检验数σi\sigma_iσi​选择进基的变量 对于>0>0>0的σi\sigma_iσi​, ...

  3. 王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)

    第10讲 线性规划与单纯形法(关于检测数与退化的讨论) 对单纯形表中一些列的理解 主要注意的是,在如上图所示的单纯形表中,bbb列和填ai,ja_{i,j}ai,j​的列中本质上填的应该是B−1bB^ ...

  4. 西湖大学张岳老师NLP课程笔记1 Introduction

    西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接 课程主页 <Natural Language Processing: A Machine Learning Per ...

  5. vb教材笔记_金文老师VB课程 笔记完整版.pdf

    金文老师vb 教程笔记 第一章 vasualbasic 程序开发环境 第一节visualbasic 的启动与退出 . vb 一 启动 的四种方法: 1. 使用 "开始"菜单中的 & ...

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

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

  7. HTML+CSS学习笔记(pink老师前端课程笔记--补档)

    开始于2021年8月3日09点59分 课程学习路线:HTML5-> CSS3->H5C3提高->项目拼优购电商网站 仅更新到H5C3提高的C3提高部分(新增选择器),忙于其他事情,暂 ...

  8. 邓俊辉老师数据结构课程笔记

    文章目录 一.绪论 二.向量(查找和排序) 2.1知识点 2.2课后习题 三.列表 3.2 课后习题 四.栈与队列 五.二叉树 六.图 七.二叉搜索树 八.高级搜索树 一.绪论 1.复杂度分析的主要方 ...

  9. 施磊老师 C++ 课程笔记--自己记录用

    文章目录 01 02 new 和 malloc 引用和指针区别 const C和C++中const的区别? const和一级.多级指针的结合 inline 函数和普通函数的区别 函数重载 c++为什么 ...

  10. 侯捷老师c++课程笔记 (面向对象高级编程7)

    1动态绑定与静态绑定 把B的对象b强转为A类,那么调用的A的虚函数还是B的虚函数? 这是通过对象来调用,不是通过指针来调用,所以是静态绑定,用call +函数地址来调用,调用的是A的虚函数 pa-&g ...

最新文章

  1. RSEM-Ebseq-差异表达分析-无参
  2. 如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题
  3. api接口rsa加密
  4. 线程间通讯机制(提高篇)——深入浅出实现原理
  5. Linux内核--内核地址空间分布和进程地址空间
  6. Mercurial hg web server的配置
  7. CSS每日学习笔记(3)
  8. linus为什么开源_Linus Torvalds谈个性崇拜,美国最好的开源学校等等
  9. mysql 带宽测试工具_MySQL自带的性能压力测试工具mysqlslap详解
  10. 语义分割——上采样插值resize的学习笔记
  11. mybatis使用char类型字段查询oracle数据库时结果查询不到的问题
  12. fft 相位谱_数值积分——使用FFT来降低计算量
  13. 山特UPS电源注意事项
  14. python 水位流量关系曲线_水位流量关系曲线的绘制方法_张红艳
  15. redis的数据库通知(notify-keyspace-events)
  16. JSF Chapter11
  17. 微信订阅号申请流程及准备材料
  18. 加密U盘专业加密芯片方案
  19. 洛谷-P1314-聪明的质检员
  20. 芝麻代理、豌豆代理、品易代理……市面上那么多HTTP代理,要怎么挑?

热门文章

  1. Modbus家族之 RTU
  2. 用iPad编写C/C++代码(计算机考研党也能用iPad写算法题)
  3. 重要更新丨完成前端重构,KubeOperator开源容器平台v3.7.0发布
  4. 国际网页短信平台通道源码搭建软件后台定制-移讯云短信系统
  5. 计算机一级在线模拟试题,全国计算机等级考试一级模拟试题(一)
  6. React中使用jsoneditor
  7. mysql有rollup函数,Mysql,Oracle使用rollup函数完成行列统计
  8. m7405d粉盒清零方法_联想打印机多功能一体机硒鼓清零方法汇总
  9. Macbook用Terminal启动Matlab
  10. 高中会考计算机网络技术试题,高中信息技术会考练习复习试题及答案