线性规划——单纯形法

  • 线性规划(Linear Programming)
    • 概念
    • 标准形式
  • 单纯形法(Simplex Method)
  • 单纯形法的思路总结
    • 整体过程
    • 约化问题
    • 最优解判定
    • 迭代过程
  • 其它情况
    • 退化解
    • 没有初始可行解的情况
    • 修正单纯形法
    • 单纯形法的计算复杂度
  • 参考文献

线性规划(Linear Programming)

概念

目标函数是线性的,约束条件是线性等式或不等式,每个变量都取实数值.

标准形式

minimize cTxsubject to Ax=bx≥0\begin{array}{ll} \text { minimize } & c^{\mathrm{T}} x \\ \text { subject to } & A x=b \\ & x \geq 0 \end{array} minimize  subject to ​cTxAx=bx≥0​
其中b∈Rm,A∈Rm×n,c∈Rn,x∈Rnb \in \mathbb{R}^{m}, A \in \mathbb{R}^{m \times n}, c \in \mathbb{R}^{n}, x \in \mathbb{R}^{n}b∈Rm,A∈Rm×n,c∈Rn,x∈Rn.

  1. 线性标准型的一般形式化为标准型的方法:添加松弛变量;有自由变量的时候,使用消元或者变量替换的形式.
  2. 标准型是为了便于理论分析和算法设计,任何满足线性规划要求的均可转换成标准型,如极小化绝对值的和、极小化逐段线性凸函数等特殊线性形式.

单纯形法(Simplex Method)

高中数学教材已经介绍过简单线性规划的解法了:图解法。但是在变量大于二维时,图解法就很不直观。
单纯形法利用了线性规划的基本定理,即只要穷举多个基本可行解,就一定能找到最优解。它是一种搜索机制,即从一个初始可行解出发,不断迭代到相邻的可行解,同时让目标函数下降。

单纯形法的思路总结

整体过程

迭代求解,不断下降目标值。在几何上可以看成从一个顶点开始,沿着多面体的边行走到下一个使目标函数下降的另一个顶点。

约化问题

标准形式
minimize cTxsubject to Ax=bx≥0\begin{array}{ll} \text { minimize } & c^{\mathrm{T}} x \\ \text { subject to } & A x=b \\ & x \geq 0 \end{array} minimize  subject to ​cTxAx=bx≥0​
用非基变量代替基变量,可以将原始问题约化到


二者是等价问题,其中r被称作费用系数.
该等价问题被化为,以非基变量作为目标函数,约束为基变量的不等式组及非零约束。原来的Ax=bAx=bAx=b已经隐含到目标函数中了.

最优解判定

由约化问题可以看出,只要费用系数r均大于0,可以轻易看出最优解就是非基变量全取0的形式.

迭代过程

若费用系数r有小于0的,那说明对应的非基变量可以不断上升使目标函数下降。但是因为约束的存在,非基变量又不能无限地增加。所以我们可以贪婪地使x增加到约束的边界xq⩽min⁡{yi0yiq:yiq>0,i=1,2,⋯,m}x_{q} \leqslant \min \left\{\frac{y_{i 0}}{y_{i q}}: y_{i q}>0, i=1,2, \cdots, m\right\}xq​⩽min{yiq​yi0​​:yiq​>0,i=1,2,⋯,m},到达边界后,肯定会有非零的基变量会变成0(因为非基变量和基变量有个表达式关系),这时候就会发生进基出基的操作,ypqy_{pq}ypq​就是转轴元.

其它情况

退化解

如果采用最小费用系数进基的情况,可能会产生循环的情况,意味着迭代若干步后又回到了最初的解。这时解决方案可以有摄动法、Bland法则. 一般程序中会专门写对付循环机制的代码.

没有初始可行解的情况

对于Ax⩽b,x⩾0A x \leqslant b, x \geqslant 0Ax⩽b,x⩾0且其中b⩾0b \geqslant 0b⩾0的情况,可以直接构造可行解。但是一般情况,难以看出可行解,这时使用两阶段法.
先构造Ax=b,x⩾0A x=b, \quad x \geqslant 0Ax=b,x⩾0让b⩾0b \geqslant 0b⩾0,然后考虑辅助问题:

y是人工变量. x=0,y=bx=0, y=bx=0,y=b自动构成基本可行解。第一阶段同样使用单纯形法构造出基本可行解,转轴时不用考虑费用系数,且当基变量的系数均为0时可以去除冗余方程。

修正单纯形法

寻优过程中仅一小部分列发生转轴,没有显式用到的列很多,对这些列的计算有些浪费. 当m比n小得多时,修正单纯形法可以节省开销。

修正单纯形表如下:

执行以ypqy_{pq}ypq​为主轴的转轴运算,即可得与新基对应的数据。

单纯形法的计算复杂度

由Klee-Minty定理,单纯形法的时间复杂度是指数级的.

参考文献

数学规划基础——刘红英

线性规划——单纯形法相关推荐

  1. 【运筹学】线性规划 单纯形法 案例二 ( 第一次迭代 | 矩阵变换 | 检验数计算 | 最优解判定 | 入基变量 | 出基变量 )

    文章目录 一.第一次迭代 : 进行行变换 二.第一次迭代 : 计算检验数 三.第一次迭代 : 最优解判定 四.第一次迭代 : 入基变量 五.第一次迭代 : 出基变量 [运筹学]线性规划 单纯形法 ( ...

  2. 【运筹学】线性规划 单纯形法 阶段总结 ( 初始基可行解 | 判定最优解 | 迭代 | 得到最优解 | 全流程详细解析 ) ★

    文章目录 一.线性规划示例 二.转化标准形式 三.查找初始基可行解 四.初始基可行解的最优解判定 五.第一次迭代 : 入基与出基变量选择 六.第一次迭代 : 方程组同解变换 七.第一次迭代 : 生成新 ...

  3. 线性规划单纯形法python实现与代码详细解读

    线性规划单纯形法python实现与代码详细解读 1 单纯形法(Simplex method) 2 编程思路 3 python实现原理解读 4 python代码 5 后记 1 单纯形法(Simplex ...

  4. 三、线性规划 单纯形法

    1.单纯形法粗略概述 单纯形法可以粗略地概括为"从一种解决方案到另一种解决方案,每次改进,直到达到最佳解决方案".单纯形算法是求解线性规划的经典方法. 今天,我们将讨论如何从一种解 ...

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

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

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

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

  7. 【运筹学】线性规划 单纯形法 ( 原理 | 约定符号 | 目标系数矩阵 C | 目标函数变量矩阵 X | 约束方程常数矩阵 b | 系数矩阵 A | 向量 | 向量符号 | 向量 Pj )

    文章目录 I . 单纯形法 引入 II . 单纯形法 基本原理 III . 线性规划 标准形式 IV . 线性规划 标准形式 普通形式公式 V . 线性规划 标准形式 展开完整形式公式 VI . 线性 ...

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

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

  9. 线性规划单纯形法的matlab程序,线性规划单纯形法的MATLAB实现_数学专业.doc

    摘要:运筹学有着长远的发展历史,并且不断地发展变化出许多分支理论,线性规划是运筹学中专研较早,发展比较快速,对现实社会作用涵盖面广,理论系统趋于成熟的一个重要分支,虽然其只是运筹学的一小部分,但是作用 ...

  10. 线性规划单纯形法python实现

    用python实现线性规划中的单纯形法 例题如下(已是标准形式): maxz=1500x1+1000x2max z=1500x_1+1000x_2maxz=1500x1​+1000x2​ {3x1+2 ...

最新文章

  1. Compute the Greatest Common Divisor of Two Integers using Sieve of Eratosthenes.
  2. Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
  3. Web APi之控制器选择Action方法过程(九)
  4. P4324 [JSOI2016]扭动的回文串
  5. CONVT_NO_NUMBER
  6. 手把手教你将H5游戏打包为手游
  7. P2469-[SDOI2010]星际竞速【费用流】
  8. 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值
  9. 蓝桥杯单片机:13届省赛模拟
  10. html怎么绘制飞线,绘制飞线,echarts迁徙图原理
  11. 三问百度云,ABC如何帮它跑赢马拉松?
  12. h3c等价路由(rip)
  13. dsp java_GitHub - sintrb/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...
  14. 双系统下如何切换到ubantu界面及如何切换到windows界面
  15. bigemap 功能介绍
  16. 微星主板节能模式怎么关闭_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比...
  17. 推荐十五款APP原型设计工具
  18. 在家无聊就重装个系统吧 三分钟教你重装安装系统
  19. 面向Android的开发基于Tensorflow Lite框架深度学习的应用(一)
  20. 学计算机i5九代,九代i5和九代i7区别

热门文章

  1. Linux 系统设置图形界面启动和黑窗口启动
  2. 详解:Java的重载方法与示例
  3. mac安装仿宋GB2312字体
  4. JsBarcode的使用
  5. SQL的连接查询——内连接、左连接、右连接、自连接(重要)
  6. android webview 误删,AndroidWebView内核
  7. 推荐好用的临时邮箱工具,解决注册网站收到的垃圾邮件
  8. 电脑截图怎么转换成文字?学会这个方法,轻松实现
  9. 基于Labview的小波去噪
  10. python编程考试题目大全