线性规划与整数规划小结
线性规划
1 线性规划问题 以及可行域与基本可行解
(1)一般形式 :
minZminZminZ =C1C_1C1X1X_1X1+ C2C_2C2X2X_2X2+C3C_3C3X3X_3X3+…+CnC_nCnXnX_nXn
a11a_{11}a11x1x_1x1+a12a_{12}a12x2x_2x2+a13a_{13}a13x3x_3x3+…+a1na_{1n}a1nxnx_nxn=b1b1b1
…
am1a_{m1}am1x1x_1x1+am2a_{m2}am2x2x_2x2+…+amna_{mn}amnxnx_nxn>=bmbmbm
xjx_{j}xj>=0 ,jjj=1,2,3…qqq,xjx_{j}xj无限制 ,jjj=qqq…n
(2)标准型是约束方程为等号,所有的变量取非负数。对于非负的约束可以通 过引入剩余变量或者松弛变量变为等式,对于无限制的变量可以转化为两个正的变量相减的形式。将目标函数转化为minminmin 的形式。
(3) 可行解:满足所有的约束条件的向量(x1x2...xnx_{1} x_{2}...x_{n}x1x2...xn)T^TT
可行域 :可行解的集合
最优解 可行域中目标函数最优的可行解
(4)基本可行解与基本定理
分块 ,分为满秩矩阵B ,以及矩阵N ,由AX =b 得到BxBx_{B}xB+NxNx_{N}xN=b
xBx_{B}xB=B−1b−B^{-1}b-B−1b−B−1NxNB^{-1}Nx_{N}B−1NxN
令xN=0x_{N}=0xN=0 ,得到了一组解。
基与基向量:设B是秩为m的约束矩阵的A的一个m阶满秩子方阵,B中的列向量称为基向量
基变量 基向量对应的变量称为基变量,同理称为非基变量
基本可行解 当xBx_{B}xB>=0 时为基本可行解
(最优解一定是可行解,但不一定是基本可行解,也不一定是基本解)
总结
如果基本可行解的个数有限,可以在基本可行解中寻找最优解
2单纯形表法
主要的思路: 先寻找一个基本可行解,判断是不是最优解,如果不是就寻找一个更好的可行解,如此迭代直到找到最优解或者是问题无界。
首先寻找一个基本可行解:
xBx_{B}xB+B−1NxN=B−1bB^{-1}Nx_{N}=B^{-1}bB−1NxN=B−1b
cTx=cBTxB+cNTxNc^{T}x=c^{T}_{B}x_{B}+c^{T}_{N}x_{N}cTx=cBTxB+cNTxN (1)
令B对应的检验数为0,对应的目标函数可以写为cBTB−1b−γTc_{B}^{T}B^{-1}b-\gamma^{T}cBTB−1b−γT
其中γT=(γBT,γNT)\gamma^{T}=(\gamma^{T}_{B},\gamma_{N}^{T})γT=(γBT,γNT)
从以上的式子中看出当γNT\gamma^{T}_{N}γNT中的系数是小于0 是最优的。
所以根据第一个知识点的回顾,首先将问题转化为标准型的问题,将目标函数中基变量的系数变为0,找到一个基本可行解之后判断是不是最优的,方法很简单看目标函数中的非基变量的系数是不是负的,如果不是那么进行迭代。最终得到最优解,或者是无界。
上述的证明中其实就包含了主要的思路。
3两阶段法
当转化为典式后,基变量不好确定时候可以使用添加人工变量的方式找到这个秩。
引入辅助问题 minminmin g=∑i=n+1n+mxig=\sum_{i=n+1}^{n+m}x_{i}g=∑i=n+1n+mxi
s.t.{Ax+xa=bx≥0xa≥0(1)s.t.\begin{cases} Ax+x_{a}=b \\ x \geq 0 \quad x_{a}\geq0 \end{cases}\tag{1} s.t.{Ax+xa=bx≥0xa≥0(1)
对于辅助问题也是有要求最优值的,先给出辅助问题与原问题之间的关系
给出
如果原问题是最优解的话,辅助问题是的最优值是0,反之也是成立的。
求解辅助问题lplplp会得到以下的情况:
(1)问题ggg的最优解是0,并且人工变量是 非基变量,那么对应到原问题就是有最优解的。
(2)辅助问题的最优解>0 原问题是没有基本可行解的,
(3)辅助问题Lp的最优解等于0,但是存在人工变量是基变量,这种需要进一步的判断。
此时假设人工变量xrx_{r}xr是基变量(n+1<r<n+mn+1<r<n+mn+1<r<n+m),只需要考察前n个元素即可。对应的这一行中的元素要么是都是0,要么不全是0, 如果全部是0,那么前n 元素对应的秩不再是m,是m-1,此时可以直接去掉这一行的约束,(系数都是0,这个方程是没有原问题的约束的),如果是不全为0 ,只能是在n 个元素中找个变量成为基变量,此时在对应的行找到一个元素,记为arsa_{rs}ars ,这个元素是可以小于0的,是因为对应的brb_{r}br是必然的为0,现在arsa_{rs}ars作为基变量出现也会是0,综上使用这两种方法终于会找到基本可行解。但是对于原问题不一定是最优解,可能需要使用单纯形表法进一步求解。
4对偶性以及对偶单纯形法
个人还是比较喜欢对偶性法的,根据线性代数的知识对于一个n*m阶的矩阵是可以找到满秩方阵的,但是由于bbb是具有限制的,引入了两阶段法,在这个部分中又引入了对偶形法。
首先引入对偶问题的形式,
mincTxminc^{T}xmincTx
s.t.{Ax=bx≥0(1)s.t.\begin{cases} Ax=b \\ x \geq 0 \quad \end{cases}\tag{1} s.t.{Ax=bx≥0(1)
maxwTbmax\quad w^{T}bmaxwTb
s.t.{wTb≤cTw无限制(2)s.t.\begin{cases} w^{T}b\leq c^{T} \\ w 无限制 \end{cases}\tag{2} s.t.{wTb≤cTw无限制(2)
直接给出结论:通过一个问题的最优解可以得到另一个问题的最优解。
给定一个原问题,可以得到对偶问题。
(1)由约束看变量,约束的符号是≥\geq≥ 对偶问题的符号是≤\leq≤ ,约束的符号是≤\leq≤ ,对偶问题 的符号是≥\geq≥,是等于的话是严格的无限制。
(2)由变量看约束,符号相反
(3)bbb变ccc ,ccc变bbb
原问题与对偶问题的互补松紧性:
(1)如果一个问题的非负变量是正的,那么另外一个的约束 是===
(2) 一个问题的约束是严格的不等式,那么是另一个的变量是等于0
类比单纯形表的方法,得到对偶形法。
对偶单纯形表法是保证检验数为负,bbb由负到正的过程迭代,在选择出基的向量时候,如果brb_{r}br对应的arja_{rj}arj都是≥0\geq0≥0 ,那么没有可行解。
5灵敏度分析
这里这是考虑改变c,bc,bc,b 。
改变c 需要考虑是不是基变量
对于非基的情况较为简单,因为不会涉及到最优解,检验数是变为原来的-新的,之后继续求解。
当是基变量时候: 将单纯形表中对应的第lll个约束乘以c,c^,c,-ccc 加到目标函数中,再令对应的元素为0,就可以得到新的单纯形表,再进一步求解。
改变右端向量bbb的时候,那么最优解要变了。需要先求解以下BBB 的逆矩阵,由上面的内容可以看出是和检验数没有关系的。计算B−1b′B^{-1}b^{'}B−1b′,cBTB−1b′c_{B}^{T}B^{-1}b^{'}cBTB−1b′ ,此时可以使用对偶形法求解问题。
整数规划
引言:
整数规划是对线性规划的特殊的情况,顾名思义,是要求基本可行解都为正整数。有两种方法是合适的。
(1)Gomory 割平面法(以下简称割平面法)
可以这样说整数规划的最优值是小于等于线性规划最优值的,如果线性规划是有最优值的。同理如果线性规划是没有可行解的,那么整数规划是没有可行解的。因此完全可以先求对应的线性规划。
假设bjb_{j}bj不是整数 对应的约束是XB(l)+∑aijxj=bjX_{B(l)}+\sum a_{ij}x_{j}=b_{j}XB(l)+∑aijxj=bj
通过分离整数部分与小数部分得到新的约束,使用对偶单纯形法求解。
(2)分枝定界法
这种方法在求解混整数规划尤为好用。先找最优解,根据是整数将可行域进行划分。假设是p1,p2 求解p1,p2的最优解,重复上面的操作。
小结:
最简单还是图解法,如果直接的图解法困难,尝试对偶的,如果还不行就老老实实计算就可以了。
线性规划与整数规划小结相关推荐
- matlab 线性规划求最大值,MATLAB求解线性规划(含整数规划和01规划)问题.pdf
MATLAB求解线性规划(含整数规划和01规划)问题 MATLAB 求解线性规划(含整数规划和0-1 规划)问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约 束的,变量范围为有 ...
- 线性规划和整数规划求解(lingo\matlab)
注意点 1.Lingo 默认所有变量不为负数,故应先进行定义域自由化. 2.Lingo 只有三种关系运算符:"=".">="以及"<=&q ...
- 第一周:线性规划、整数规划、非线性规划、二次规划
线性规划函数:linprog() 线性规划的标准形式 线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号.为了避免这种形式多样性带来的不方便,matlab规 ...
- java 整数规划_线性规划与整数规划求解速度对比
文章发表于微信公众号[数据魔术师]:线性规划&整数规划求解速度PK线性规划&整数规划求解速度PKmp.weixin.qq.com 相信大家对线性规划和整数规划应该不陌生,在开始今天的 ...
- 数学建模线性规划(整数规划)
线性规划(整数规划) 文章目录 线性规划(整数规划) 概述 数学模型 分类 与松弛线性规划的联系 模型求解方法 分枝定界法 求解步骤 求解细节 对分支定界法的理解 割平面法 求解步骤 0-1变量的使用 ...
- 数模笔记(一):线性规划、整数规划及非线性规划1.0
数模笔记目录 数模笔记(一):线性规划.整数规划及非线性规划 数模笔记(二):层次分析法 数模笔记(三):灰色系统分析方法 数模笔记(四):插值与拟合 数模笔记(五):变异系数法 数模笔记(六):两变 ...
- 【数学建模】(十):Lingo使用:线性规划+非线性规划+整数规划
[数学建模](十):Lingo使用:线性规划+非线性规划+整数规划 线性规划 运输问题 整数规划 非线性规划 线性规划 设x1x_1x1桶牛奶生产A1A_1A1, x2x_2x2桶牛奶生产A2A ...
- matlab中用于离散系统求解的命令,MATLAB求解规划问题(线性规划, 整数规划, 非线性规划)...
文章目录 基础知识 规划问题的数学模型的三个要素 解 线性规划Linear Programing 理论 示例 整数规划 理论 示例 非线性规划 理论 示例 生产实践中,经常会遇到很多资源分配的问题,如 ...
- 数学建模算法与应用学习day1——线性规划问题整数规划问题
以下内容来自司守奎编写的数学建模算法与应用学习,主要是记录自己的学习历程,转载还请标明出处! 一.线性规划 知识点 1.1线性规划问题 1.1.2线性规划解的概念 f = [-2 ; -3 ; 5]; ...
- 运筹学之线性规划与整数规划
1.线性规划 参考<Operations Research>第三章Introduction to Linear Programming 1.1线性规划定义 线性规划问题(LP)包括三个部分 ...
最新文章
- hdu5062 简单题
- Linux 中使用 KVM
- 2018多校1 hdu6298 6300 6308
- 自定义路由匹配和生成
- php ajax 增删改查 分页,Jquery之Ajax_分页及增删改查
- Spring Boot 启动类真的是XXApplication?
- logback的日志文件中出现大量的ESC符号
- 基于C语言的个人信息管理系统
- 20个经典模拟电路(详细图文)
- 转调小程序(练口琴时用的)
- 百度DNS/阿里DNS/114DNS/谷歌DNS/OpenDNS 对比评测
- php soap 加符号报错,php soap错误获取http标头
- linux设置rtc默认时间,RTCTime 设置和使用 详解
- 什么是拓扑结构、拓扑结构图
- 4款黑科技级别的宝藏APP,能够轻松满足你的多种需求,请低调收藏
- 鸡米过河matlab程序,万能解题套路——人,狗,鸡,米过河问题为例
- css3新增动画属性(过度动画 变形动画 关键帧动画)
- codeforces 1328 C. Ternary XOR(贪心)
- 用turtle画一个边长是100的五角星
- 中国银行网上银行新增B2B电子商务功能