目前,运用最广的线性规划方法就是著名的单纯形方法。这种方法是G.B.Dantzig在1947年提出的。几十年的实践证明,单纯形方法的确是一种使用方便、行之有效的重要算法。如今,它已经成为线性规划的中心内容。
单纯形法的基本思路是有选择地取(而不是枚举所有的)基本可行解,即是从可行域的一个顶点出发,沿着可行域的边界移到另一个相邻的顶点,要求新顶点的目标函数值不比原目标函数值差,如此迭代,直至找到最优解,或判定问题无界。

线性规划问题及其表示

线性规划问题可表示为如下形式:

变量满足约束条件(8.2)-(8.5)式的一组值称为线性规划问题的一个可行解。
所有可行解构成的集合称为线性规划问题的 可行区域
使目标函数取得极值的可行解称为 最优解
在最优解处目标函数的值称为 最优值
有些情况下可能不存在最优解。
通常有两种情况:
(1)根本没有可行解,即给定的约束条件之间是相互排斥的,可行区域为空集;
(2)目标函数没有极值,也就是说在n 维空间中的某个方向上,目标函数值可以无限增大,而仍满足约束条件,此时目标函数值无界。

例:

这个问题的解为 (x1,x2,x3,x4)=(0,3.5,4.5,1)(x_1,x_2,x_3,x_4) = (0,3.5,4.5,1)最优值为1616。

线性规划基本定理

约束条件(8.2)-(8.5)中nn个约束以等号满足的可行解称为线性规划问题的基本可行解。
若n>mn>m,则基本可行解中至少有n−mn-m个分量为0,也就是说,基本可行解中最多有m个分量非零。
线性规划基本定理:如果线性规划问题有最优解,则必有一基本可行最优解。
上述定理的重要意义在于,它把一个最优化问题转化为一个组合问题,即在(8.2) -(8.5)式的m+nm+n个约束条件中,确定最优解应满足其中哪n个约束条件的问题。
由此可知,只要对各种不同的组合进行测试,并比较每种情况下的目标函数值,直到找到最优解。
Dantzig于1948年提出了线性规划问题的单纯形算法。
单纯形算法的特点是:
(1)只对约束条件的若干组合进行测试,测试的每一步都使目标函数的值增加;
(2)一般经过不大于mm或nn次迭代就可求得最优解。

约束标准型线性规划问题的单纯形算法

当线性规划问题中没有不等式约束(8.2)和(8.4)式,而只有等式约束(8.3)和变量非负约束(8.5)时,称该线性规划问题具有标准形式。
先考察一类更特殊的标准形式线性规划问题。这一类线性规划问题中,每一个等式约束中,至少有一个变量的系数为正,且这个变量只在该约束中出现。
在每一约束方程中选择一个这样的变量,并以它作为变量求解该约束方程。这样选出来的变量称为左端变量或基本变量,其总数为m个。剩下的n-m个变量称为右端变量或非基本变量。
这一类特殊的标准形式线性规划问题称为约束标准型线性规划问题。
虽然约束标准型线性规划问题非常特殊,但是对于理解线性规划问题的单纯形算法是非常重要的。
任意一个线性规划问题可以转换为约束标准型线性规划问题。

例:

任何约束标准型线性规划问题,只要将所有非基本变量都置为0,从约束方程式中解出满足约束的基本变量的值,可求得一个基本可行解。
单纯形算法的基本思想就是从一个基本可行解出发,进行一系列的基本可行解的变换。
每次变换将一个非基本变量与一个基本变量互调位置,且保持当前的线性规划问题是一个与原问题完全等价的标准线性规划问题。
基本可行解x=(7,0,0,12,0,10)x=(7,0,0,12,0,10)。

单纯形法计算步骤如下:

单纯形算法的第1步:

选出使目标函数增加的非基本变量作为入基变量
查看单纯形表的第1行(也称之为zz行)中标有非基本变量的各列中的值。
选出使目标函数增加的非基本变量作为入基变量。
z行中的正系数非基本变量都满足要求。
在上面单纯形表的z行中只有1列为正,即非基本变量相应的列,其值为3。
选取非基本变量x3x_3作为入基变量。

单纯形算法的第2步:

选取离基变量。
在单纯形表中考察由第1步选出的入基变量所相应的列。
在一个基本变量变为负值之前,入基变量可以增到多大。

如果入基变量所在的列与基本变量所在行交叉处的表元素为负数,那么该元素将不受任何限制,相应的基本变量只会越变越大。
如果入基变量所在列的所有元素都是负值,则目标函数无界,已经得到了问题的无界解。
如果选出的列中有一个或多个元素为正数,要弄清是哪个数限制了入基变量值的增加。
受限的增加量可以用入基变量所在列的元素(称为主元素)来除主元素所在行的“常数列”(最左边的列)中元素而得到。所得到数值越小说明受到限制越多。
应该选取受到限制最多的基本变量作为离基变量,才能保证将入基变量与离基变量互调位置后,仍满足约束条件。
上例中,惟一的一个值为正的z行元素是3,它所在列中有2个正元素,即4和3。
min{124,103}=4min\{{12\over 4},{10\over 3}\}=4,应该选取x4x_4为离基变量;
入基变量x3取值为3。

单纯形算法的第3步:

转轴变换。
转轴变换的目的是将入基变量与离基变量互调位置。
给入基变量一个增值,使之成为基本变量;
修改离基变量,让入基变量所在列中,离基变量所在行的元素值减为零,而使之成为非基本变量。

解离基变量所相应的方程,将入基变量x3x_3用离基变量x4x_4表示为x1−12x2+14x4=3x_1-\frac{1}{2}x_2+\frac{1}{4}x_4=3

再将其代入其他基本变量和所在的行中消去x3x_3,

x1+52x2+14x4+2x5=10x6−52x2−34x4+8x5=1

x_1+\frac{5}{2}x_2+\frac{1}{4}x_4+2x_5=10\\ x_6-\frac{5}{2}x_2-\frac{3}{4}x_4+8x_5=1

代入目标函数得到z=9+12x2−34x4−2x5z=9+\frac{1}{2}x_2-\frac{3}{4}x_4-2x_5
形成新单纯形表

单纯形算法的第4步:

转回并重复第1步,进一步改进目标函数值。
不断重复上述过程,直到z行的所有非基本变量系数都变成负值为止。这表明目标函数不可能再增加了。
在上面的单纯形表中,惟一的值为正的z行元素是非基本变量x2x_2相应的列,其值为121\over 2。
因此,选取非基本变量x2x_2作为入基变量。
它所在列中有惟一的正元素525\over 2,即基本变量x1x_1相应行的元素。
因此,选取x1x_1为离基变量。
再经步骤3的转轴变换得到新单纯形表。

新单纯形表z行的所有非基本变量系数都变成负值,求解过程结束。
整个问题的解可以从最后一张单纯形表的常数列中读出。
目标函数的最大值为11;
最优解为:x∗=(0,4,5,0,0,11)x^*=(0,4,5,0,0,11)。

例子

上述方法严格按照步骤,虽然思路清晰,但过程冗长,不方便操作。下面用表格形式的单纯形方法来解上题。

在引进松弛变量,并将问题转化成标准形式后,建立初始单纯形表:


上述题目求解的是目标函数的min,下面再分享一道求解目标函数max的情况。两种情况极其类似,只是在判别式选择上的差异。

单纯形法 -- 求解线性规划相关推荐

  1. 单纯形法求解线性规划

    目录 一.单纯形法简介 1.  是什么 2.  求解思想 3.  求解步骤 二. 手算求解 三.python实现求解 参考资料 一.单纯形法简介 1.  是什么 单纯形法是求解线性规划问题最常用.最有 ...

  2. 计算:单纯形法求解线性规划问题

    用单纯形法求解线性规划问题 对于标准型为最小值的单纯形法 单纯形表格具有的特点 中心部位具有单位子块 右列元素非负 单位子块对应的底行元素为0 底行其他元素非负(标准型为最大值时,要求底行元素非正数) ...

  3. matlab实现单纯型法解线性规划_【运筹学教程】求解线性规划问题的单纯形法

    这是本公众号的第①篇文章 主要讲述运筹学中求解线性规划问题的单纯形方法:单纯形法是运筹学中求解线性规划问题的主要方法,其他一些求解大规模优化问题的算法,如列生成算法等,都是在该算法的基础上发展而来的. ...

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

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

  5. 【运筹与优化】单纯形法解线性规划问题(matlab实现)

    文章目录 单纯形法步骤: 1.将线性规划问题化为标准形式 2.列出单纯形表 3.进行最优性检验 4.从一个基可行解转换到另一个目标值更大的基可行解,列出新的单纯形表 5.重复3.4直到计算结束为止 举 ...

  6. 用Python求解线性规划问题

    线性规划简介及数学模型表示线性规划简介一个典型的线性规划问题线性规划模型的三要素线性规划模型的数学表示图解法和单纯形法图解法单纯形法使用python求解简单线性规划模型编程思路求解案例例1:使用sci ...

  7. 线性规划与单纯形法(线性规划、单纯形法、单纯形表、人工变量法)

    线性规划与单纯形法 文章目录 线性规划与单纯形法 概念.建模.标准型 标准型.基.基解.基可行解.可行基 单纯形法 单纯形表的应用 关于检验数和退化的讨论 人工变量法之"大M法" ...

  8. 【运筹学】对偶理论 : 互补松弛定理应用 ( 原问题与对偶问题标准形式 | 已知原问题最优解求对偶问题最优解 | 使用单纯形法求解 | 使用互补松弛定理公式一求解 | 互补松弛定理公式二无效 ) ★★

    文章目录 一.原问题与对偶问题标准形式 二.互补松弛定理 三.已知原问题最优解求对偶问题最优解 四.使用单纯形法求解 五.使用互补松弛定理公式一求解 六.使用互补松弛定理公式二求解 ( 无效方法 ) ...

  9. 【运筹学】线性规划 人工变量法 阶段总结 ( 使用 人工变量法 求解 线性规划 全过程详细解析 ) ★

    文章目录 一.人工变量法案例 二.线性规划标准型 三.添加人工变量 四.初始单纯形表 五.初始单纯形表 : 计算非基变量检验数 六.初始单纯形表 : 最优解判定 七.初始单纯形表 : 选择入基变量 八 ...

最新文章

  1. 4月CISSP中文机考备考经验
  2. 【数据可视化应用】绘制极坐标(附Python代码)
  3. webService学习5:Eclipse的TCP/IP工具
  4. html调用deeplink,如何优雅地从浏览器打开本地应用deeplink
  5. 微信正则表达式 iOS
  6. windows10下安装pytorch并导入pycharm
  7. html 段前空格_前端 -- HTML
  8. 利用MindManager,制作简易的漏斗图
  9. These dependencies were not found:问题
  10. 易语言取MySQL错误代码,易语言中“取错误码”命令详解
  11. 微信开发者工具之WXS和简单组件
  12. jsonrpc java_jsonrpc环境搭建和简单实例
  13. ifix 读写mysql_[转载]vb6读取ifix实时数据库和历史数据库
  14. 利用百度图像处理API接口实现人脸融合
  15. python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值
  16. mac 锤子android助手,如何在Mac上管理安卓手机 锤子SmartFinder教程
  17. 青柚文案:水果店青柚推广文案,水果青柚广告文案
  18. 在线Json格式化、在线格式化Json代码、Json代码美化器、Json在线压缩、Json \uxxxx格式解码
  19. 什么是报表工具?和 EXCEL 有什么区别?
  20. 14-网关实战:网关层整合 Swagger 聚合API文档

热门文章

  1. 04.HC_SR04超声波测距
  2. 似然函数的意义与极大似然估计
  3. 【毕业设计/Matlab系列】基于K-L变换的图像压缩matlab实现
  4. python3爬虫模拟登录_python3爬虫——模拟登录丁香园并提取信息
  5. python大学教程 吕云翔 pdf_大学实用计算机英语教程
  6. 快速制作BT3 u盘
  7. CRM系统促进企业高效管理
  8. win7安装vc6 sp5的MDAC问题解决办法
  9. 数学建模模型6——Kmeans算法【数据型】
  10. 计算机android开题报告,计算机本开题报告.docx