运筹学之线性规划 1.X
线性规划
线性规划问题的标准形式可以写成:
&max~z=\pmb{c}^T\pmb{X} \\
&s.t.\{
\begin{aligned}
&\pmb{A}\pmb{X}=\pmb{b}\\
&\pmb{X}\geqslant0
\end{aligned}
\end{aligned}
\]
,\(\pmb{X}\)是列向量
为什么可以统一为这个标准形式 ?
所有约束都可以写成等式约束是因为在初始决策变量不足的情况下,我们可以加入非负的松弛变量到不等式中,使其变成等式约束。
之所以可以将决策变量约束为非负是因为,决策变量的符号有三种可能
- 首先是非负的,这种情况下我们无需改变
- 第二种情况是决策变量是非正的,那么我们只需用相反的变量取代即可
- 第三种情况是决策变量没有符号要求,那么我们就可以定义两个非负变量进行相减来替代这个没有符号要求的决策变量。
线性规划的解有四种可能:
- 唯一解
- 无穷多解
- 无界解(即目标函数可以在约束条件下达到无穷进而使得无解)
- 无可行解(即不存在满足约束条件的解)
单纯形法
单纯形表
计算步骤(求极大)
(1) 确定一个初始基可行解
(2) 计算非基变量的检验数
判别准则:
- 若所有非基变量检验数都小于或等于零, 则原问题得到最优解
- 当非基变量的检验数至少有一个为零, 原问题有无穷多组最优解, 但其目标函数值相等
- 非基变量的检验数至少有一个大于零, 且某个大于零的检验数所对应的非基变量的系数列向量中没有正数, 则原问题具有无界解
(3) 基变换. 寻找检验数最大的列对应的变量, 将 \(b\) 分别除以这一列上的数得到 \(\theta\) 列, 再选定 \(\theta\) 最小的这一行对应的变量, 用最大的检验数对应的变量替换最小的 \(\theta\) 对应的 \(\boldsymbol{X}_b\) 处的变量
(4) 迭代
初始时, \(\boldsymbol{b}\) 需要大于零
右下角的函数值由 \(\boldsymbol{c}_B^\top\boldsymbol{b}\) 计算得
当算法停止时, \(\boldsymbol{X}_B\) 对应的 \(\boldsymbol{b}\) 取值即为解, 右下角的函数值即为最优函数值
停止算法条件
如果是求极大, 则当非基变量的检验数都小于等于0时停止
如果是求极小, 则当所有非基变量的检验数都大于等于0时停止
大M法
使用条件
当使用单纯形法时发现没有单位子矩阵
操作
通过加入人工变量拼凑单位子矩阵, 再运用单纯形法进行求解
- 当无解或者有解但最优解中至少还有一个人工变量时, 说明原问题无解.
- 当有解且最优解中不含有人工变量时, 其最优解就是原线性规划问题的最优解.
优点
可以直接求解问题
缺点
由于电脑无法输入任意大的数继续进行运算, 所以大M法只能手动运算
两阶段法
操作
- 第一阶段是构造一个目标函数只含有人工变量的辅助问题,再运用单纯形法进行求解.
- 当无解或者有解但目标函数不为零, 说明原问题无解, 终止
- 当有解且其目标函数值为零时, 则得到原问题的一个初始基可行解.
- 第二阶段是对第一阶段得到的单纯形表, 将其表头换位原问题的表头并且重新计算检验数
运筹学之线性规划 1.X的更多相关文章
- MIS(管理信息系统)
MIS 管理信息系统(Management Information System,简称MIS) 是一个以人为主导,利用计算机硬件.软件.网络通信设备以及其他办公设备,进行信息的收集.传输.加工.储存. ...
- 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)
1.线性规划模型: 2.使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://doc ...
- lingo运筹学上机实验指导
<运筹学上机实验指导>分为两个部分,第一部分12学时,是与运筹学理论课上机同步配套的4个实验(线性规划.灵敏度分析.运输问题与指派问题.最短路问题和背包问题)的Excel.LONGO和LI ...
- Excel与Google Sheets中实现线性规划求解
很久没更新过APS系列文章了,这段时间项目工作确实非常紧,所以只能抽点时间学习一下运筹学的入门知识,算是为以后的APS项目积累点基础.看了一些运筹学的书(都是科普级别的)发现原来我目前面对的很多排产. ...
- 无缘诺贝尔奖的George Dantzig——线性规划之父
无缘诺贝尔奖的George Dantzig——线性规划之父 王军强,2012年11月2日 “线性规划之父”的George Dantzig,与“计算机之父”.“博弈论之父”John Von Neuman ...
- 【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现
目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 相关知识点 LP线性规划问题 Linea ...
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...
- java 线性规划 和lingo 比较
model:max=13*A+ 23*B; 5*A + 15*B <480 ; 4*A + 4 *B <160 ; 35* A + 20 *B <1190 ; end Variabl ...
- 对偶理论、拉格朗日对偶问题、LP线性规划对偶性质
Lagrange 对偶问题 定义其的对偶问题: Lagrange函数 考虑线性规划问题 若取集合约束D={x|x≥0},则该线性规划问题的Lagrange函数为 线性规划的对偶问题为: 对偶定理原问题 ...
- 用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能
在管理信息系统的开发过程中,往往会涉及到一些线性规划数学模型,例如资源配置优化.微软的Microsoft.Solver.Foundation是一个数学库,可以很好的对线性规划问题进行求解.关于它的细节 ...
随机推荐
- ansible自动化管理
一图读懂ansible自动化运维 金山文档连接地址:https://www.kdocs.cn/view/l/cheHWG9tTEgN(可查看) __outline__ansible部署及说明参数说明& ...
- pytorch gpu安装cuda11.*
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio cudatoolkit=11.3
- allure+junit5遇到的一些问题
java+junit5+allure 之前引testng,还比较顺利,见上一篇博客,然后testng的注解和junit不一样,感觉junit5更好用一些,所以尝试java+junit5+allure ...
- 072_关于Dataloader导入Record的创建时间及修改时间并允许owner是Inactive
1.在User interface 中 启用 Enable "Set Audit Fields upon Record Creation" and "Update Rec ...
- Python爬取三国演义章节标题和内容(bs4爬取,解决中文乱码)
import os.path import requests from bs4 import BeautifulSoup if __name__ == '__main__': if not os.pa ...
- jmeter接口之json提取器应用
在接口测试中有一个这样的场景:业务接口需要用到登录token:下个接口需要用到前个接口返回值作为参数,该怎么实现? 首先先看下登录.业务接口,本文用的jmeter版本为5.4.1 一.json提取器设 ...
- 【QT】创建动态链接库及使用
创建动态链接库 创建一个项目 选择library的C++库,下一步. 选择共享库,输入动态库的名字,选择创建路径,下一步 选择编译环境,下一步 选择QTCore模块,该模块提供核心的非图形用户接口功能 ...
- 软件工程日报三——创建一个简单app和SDK的介绍
昨天讲安卓studio和gradle等软件和环境都配置成功,今天开始创建第一个app. 一.打开Android studio,创建一个新文件,点击File,选择New Project里面的Empty ...
- JS时间处理,兼容IOS
timeFormatting(val) { let time = val.slice(0, 10) // 兼容IOS time = time.replace(/-/g, '/') let date = ...
- sql语句查询优化
SQL 性能优化 explain 中的 type:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好. consts:单表中最多只有一个匹配行(主键或者唯一索引),在优 ...
