王树尧老师运筹学课程笔记 07 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)
第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=c1x1+c2x2+⋯+cnxn
约束条件 {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\}⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a11x1+a12x2+⋯+a1nxn⩽(=,⩾)b1a21x1+a22x2+⋯+a2nxn⩽(=,⩾)b2⋮am1x1+am2x2+⋯+amnxn⩽(=,⩾)bmx1,x2,⋯,xn⩾0⎭⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎫
通过恒等变形将一般形式化为标准形式,以方便之后的求解。
- 目标函数需要化为maxmaxmax。若原本的目标函数是minminmin,则令z′=−zz^{'}=-zz′=−z,然后求maxz′max z^{'}maxz′。
- bib_ibi需要化为>0>0>0。如果bi<0b_i<0bi<0则不等式两边同时添负号。如果bi=0b_i=0bi=0则表示出现了退化,一般不会遇到。
- 约束条件需要化为===。若原本的约束条件是≤\leq≤,则约束条件变为原本的约束条件减去一个新的非负变量(松弛变量)。若原本的约束条件是≥\geq≥,则约束条件变为原本的约束条件加上一个新的非负变量(剩余变量)。(这一步的目的是将弱约束条件变为强约束条件,便于求解方程,代价是引入了额外的变量,提高了方程的维数。)
- 变量需要化为≥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,同时目标函数和约束条件中进行替换。
- 规范书写目标函数。在形式上调整目标函数,把新引入的变量写回目标函数中。虽然其价值系数为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⋮am1a12⋮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=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤;b=⎣⎢⎢⎢⎡b1b2⋮bm⎦⎥⎥⎥⎤;C=(c1,c2,⋯,cn); \quad \boldsymbol{C}=\left(c_{1}, c_{2}, \cdots, c_{n}\right);C=(c1,c2,⋯,cn)
线性规划问题可以用矩阵描述为:
maxz=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}⎝⎜⎜⎜⎛a11a21⋮am1⎠⎟⎟⎟⎞x1+⎝⎜⎜⎜⎛a12a22⋮am2⎠⎟⎟⎟⎞x2+⋯+⎝⎜⎜⎜⎛a1ma2m⋮amm⎠⎟⎟⎟⎞xm=⎝⎜⎜⎜⎛b1b2⋮bm⎠⎟⎟⎟⎞−⎝⎜⎜⎜⎛a1,m+1a2,m+1⋮am,m+1⎠⎟⎟⎟⎞xm+1−⋯−⎝⎜⎜⎜⎛a1na2n⋮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 线性规划与单纯形法(标准型、基、基解、基可行解、可行基)相关推荐
- 王树尧老师运筹学课程笔记 06 线性规划与单纯形法(几何意义)
第6讲 线性规划与单纯形法(几何意义) 线性规划的几何意义 图解法 线性规划的维度 变量 可行域维度 图像维度 1 x1x_1x1 1(线段) 1 2 x1.x2x_1.x_2x1.x2 2(平 ...
- 王树尧老师运筹学课程笔记 09 线性规划与单纯形法(单纯形表的应用)
第9讲 线性规划与单纯形法(单纯形表的应用) 单纯形表 举例 见教材P37 2.4 根据检验数σi\sigma_iσi选择进基的变量 对于>0>0>0的σi\sigma_iσi, ...
- 王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)
第10讲 线性规划与单纯形法(关于检测数与退化的讨论) 对单纯形表中一些列的理解 主要注意的是,在如上图所示的单纯形表中,bbb列和填ai,ja_{i,j}ai,j的列中本质上填的应该是B−1bB^ ...
- 西湖大学张岳老师NLP课程笔记1 Introduction
西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接 课程主页 <Natural Language Processing: A Machine Learning Per ...
- vb教材笔记_金文老师VB课程 笔记完整版.pdf
金文老师vb 教程笔记 第一章 vasualbasic 程序开发环境 第一节visualbasic 的启动与退出 . vb 一 启动 的四种方法: 1. 使用 "开始"菜单中的 & ...
- 【运筹学】线性规划数学模型 ( 线性规划求解 | 根据非基变量的解得到基变量解 | 基解 | 基可行解 | 可行基 )
文章目录 一.线性规划求解 二.根据非基变量的解得到基变量解 三.基解 四.基可行解 五.可行基 一.线性规划求解 在上一篇博客 [运筹学]线性规划数学模型 ( 求解基矩阵示例 | 矩阵的可逆性 | ...
- HTML+CSS学习笔记(pink老师前端课程笔记--补档)
开始于2021年8月3日09点59分 课程学习路线:HTML5-> CSS3->H5C3提高->项目拼优购电商网站 仅更新到H5C3提高的C3提高部分(新增选择器),忙于其他事情,暂 ...
- 邓俊辉老师数据结构课程笔记
文章目录 一.绪论 二.向量(查找和排序) 2.1知识点 2.2课后习题 三.列表 3.2 课后习题 四.栈与队列 五.二叉树 六.图 七.二叉搜索树 八.高级搜索树 一.绪论 1.复杂度分析的主要方 ...
- 施磊老师 C++ 课程笔记--自己记录用
文章目录 01 02 new 和 malloc 引用和指针区别 const C和C++中const的区别? const和一级.多级指针的结合 inline 函数和普通函数的区别 函数重载 c++为什么 ...
- 侯捷老师c++课程笔记 (面向对象高级编程7)
1动态绑定与静态绑定 把B的对象b强转为A类,那么调用的A的虚函数还是B的虚函数? 这是通过对象来调用,不是通过指针来调用,所以是静态绑定,用call +函数地址来调用,调用的是A的虚函数 pa-&g ...
最新文章
- RSEM-Ebseq-差异表达分析-无参
- 如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题
- api接口rsa加密
- 线程间通讯机制(提高篇)——深入浅出实现原理
- Linux内核--内核地址空间分布和进程地址空间
- Mercurial hg web server的配置
- CSS每日学习笔记(3)
- linus为什么开源_Linus Torvalds谈个性崇拜,美国最好的开源学校等等
- mysql 带宽测试工具_MySQL自带的性能压力测试工具mysqlslap详解
- 语义分割——上采样插值resize的学习笔记
- mybatis使用char类型字段查询oracle数据库时结果查询不到的问题
- fft 相位谱_数值积分——使用FFT来降低计算量
- 山特UPS电源注意事项
- python 水位流量关系曲线_水位流量关系曲线的绘制方法_张红艳
- redis的数据库通知(notify-keyspace-events)
- JSF Chapter11
- 微信订阅号申请流程及准备材料
- 加密U盘专业加密芯片方案
- 洛谷-P1314-聪明的质检员
- 芝麻代理、豌豆代理、品易代理……市面上那么多HTTP代理,要怎么挑?
热门文章
- Modbus家族之 RTU
- 用iPad编写C/C++代码(计算机考研党也能用iPad写算法题)
- 重要更新丨完成前端重构,KubeOperator开源容器平台v3.7.0发布
- 国际网页短信平台通道源码搭建软件后台定制-移讯云短信系统
- 计算机一级在线模拟试题,全国计算机等级考试一级模拟试题(一)
- React中使用jsoneditor
- mysql有rollup函数,Mysql,Oracle使用rollup函数完成行列统计
- m7405d粉盒清零方法_联想打印机多功能一体机硒鼓清零方法汇总
- Macbook用Terminal启动Matlab
- 高中会考计算机网络技术试题,高中信息技术会考练习复习试题及答案