模型解的术语
可行解:满足所有约束条件的解
非可行解:至少一个约束条件不被满足的解
可行域:所有可行解的集合
最优解:目标函数取得最有价值的可行解
顶点可行解(CPF):位于可行域顶点的解

顶点可行解与最优解的关系:考虑任意具有可行解与有界可行域的线性规划问题,一定具有顶点可行解和至少一个最优解,而且,最优的顶点可行解一定是最优解;因此,若一个问题恰有一个最优解,它一定是顶点可行解,若一个问题有多个最优解,其中至少两个一定是顶点可行解

比例性假设:每个活动对于目标函数值Z的贡献与活动级别xj成比例的

可加性假设:线性规划模型中的每个函数(目标函数或者约束函数左边的函数)是各自活动的单独贡献的总和;换句话说,线性函数都是一次函数,不能出现二次函数,若出现二次函数,则那属于非线性函数。

可分割性:在线性规划模型中决策变量可取满足函数和非负性约束的任意值,包括非整数值,故这些变量并不严格要求都是整数值,由于每个决策变量代表了一些活动的级别,假设活动能以小数方式表示

确定性
确定性假设:被赋予线性规划模型的每个参数的值被假设为已知常量。?

第4章 求解线性规划问题——单纯形法
4.1 单纯形法的实质
单纯形法的标准形式:目标函数最大化;所有约束条件以<=连接;所有变量取值为非负的形式;所有的约束右端项bi的值要求为非负

最优性检验:考虑任一个至少拥有一个最优解的线性规划问题,如果一个CPF解没有比它更好(以Z来衡量)的相邻CPF解,则它是最优解

关键的解原理
解原理1:单纯形法只关注CPF解,对于至少有一个最优解的问题来说,找到一个最优解只需找到最好的CPF解
由于可行解个数一般有无限多个,故将需要测试的解个数减至一个很小的有限的数就是一个大大的简化
解原理2:单纯形法是一个迭代算法(一个系统化的求解过程,它重复着一系列固定的我们称之为迭代的步骤,直至得到期望的结果)

解原理3:只要有可能,单纯形法的起始步骤就选择原点(所有决策变量值为0)作为初始CPF解;当有太多决策变量以致不能以图解方式找出初始CPF解时,这个选择可以减少为寻找初始CPF解而需要使用的代数运算步骤
若所有决策变量为非负约束,一般选择原点作为初始CPF解是可能的,因为这些约束边界相交形成原点就是角点解,那么这个解也是CPF解。
解原理4:已知一个CPF解,从计算上说,获取它的相邻CPF解的信息比获取其他CPF解的信息快,因此,在单纯形法迭代,从当前CPF解移向更好的CPF解的计算时,总是选择相邻的CPF解,不考虑其他CPF解;因此,后续直到找出最优解的全部轨迹实际上是沿着可行域的边界的。
解原理5:得到当前CPF解后,单纯形法考察从这个解出发的可行域的每一条边;虽然每条边都指向另一端的相邻CPF解,但单纯形法并不需要费时去计算相邻CPF解,而是仅仅判断沿着这条边界线移动时的Z的增长率;在拥有正的增长率的边界线中,它选择沿着增长率最大的那条边界线移动;当求出这个边界线的另一端的相邻CPF解后,它也是进行最优性检验及下一次迭代的当前CPF解,迭代就完成了。
解原理6:解原理5阐述了单纯形法是如何考察从当前CPF解发出的可行域的每条边的;这种对边界线的考察可以很快得出沿着边界线向另一端的相邻CPF解移动时Z的增长率;Z增长率为正,意味着相邻的CPF解优于当前CPF解;Z增长率为负,意味着相邻的CPF解并不优于当前的CPF解;因此最优性检验就是检查是否有边界线会带给Z正的增长率,若没有,则证明当前的CPF解是最优的。

4.2 构建单纯形法
松弛变量:将不等式约束转化为等价的等式约束(变量的非负约束保留不等式形式,因此它们被单独处理);

如果当前解中某个松弛变量等于0,则该解点位于对应约束条件的约束边界线上;如果值大于0,则该解点在约束边界可行的一侧;如果值小于0,该解点在约束边界不可行的一侧。
扩展解:原始变量(决策变量)取值再加入相应的松弛变量取值后形成的解
基本解:一个扩展后的角点解
角点解(及基本解)既可以是可行解也可以是非可行解;它有以下定义:
基本可行解(BF解)是扩展的CPF解
基本解和角点解(或者BF解和CPF解)的唯一区别在于是否包含松弛变量;而对任何一个基本解而言,要获得其角点解则仅需通过删除松弛变量就可以得到。

一个基本解有如下性质:

  1. 每个变量都可以作为非基变量或基变量
  2. 基变量个数等于约束条件(现在是方程)的个数;故非基变量个数等于变量总数(决策变量和松弛变量)减去约束条件的个数
  3. 非基变量的值设为0
  4. 基变量的值作为方程组(约束条件的扩展形式)的联立解被求得(这组基变量通常称为‘基‘)
  5. 若基变量满足非负约束,基本解为基本可行(BF)解

当非基变量只有一个不同时,两个BF解相邻;这意味着基变量除了一个不同外其余也是相同的,虽然其数值可能不同。
因此,从当前BF解转到另一个相邻的BF解时,围绕着把一个变量从非基变量转变为基变量来进行,反过来对另一个也一样。

4.3 单纯形法的代数


最优性检验
单纯形法步骤1:
在单纯形法每一次迭代中,步骤1的目的是要选择一个非基变量,让它的值从0开始增加(同时调整基变量的值来满足方程组的约束);从0开始增加这个非基变量的值将其转变为下一个BF解中的基变量;故这个变量称为当前迭代的入基变量

最小比值试算:试算的目的是决定当入基变量增加时,哪个基变量最先减到0;若某个约束方程中的入基变量系数为0或为负值时,我们可以立即划去该方程中的基变量,因为当入基变量增加时,该基变量不会随着减少。?
步骤2:
单纯形法迭代的步骤2是通过==计算最小比值找出随着入基变量增加首先减少到0的基变量;==这个基变量为0意味着在下一个BF解中它变成了非基变量;因此这个变量被称为当前迭代的出基变量
步骤3:
步骤3目的是把方程组转换为对当前BF解进行最优性检验和下次迭代时更为方便的形式(高斯消元法的常态形)

入基变量的相持
每次迭代会选择方程0中拥有绝对值最大的负系数的非基变量作为入基变量;若假设两个或者更多的非基变量有相同最大值(绝对值)的负系数,这时就出现了相持(ex: Z-3x1 -3x2 =0),那么此时可任选一个作为入基变量,不管相持变量如何选择,最终都会得到最优解。

出基变量的相持——退化
在步骤2 中,若在选择出基变量时,出现两个或者多个基变量相持,则可能会导致单纯形法陷入一个循环,周期性的循环同一组解而非朝着最优解方向增加Z
方法:尽管这种周期性循环在理论上可能,但实际生活却极少发生;若发生循环,我们可通过改变出基变量跳出循环;另外,也有一些特定法则可突破相持,故这种循环总能避免。

无出基变量——Z无界
在步骤2中,还可能出现一个结果,即没有变量能成为出基变量的条件;当入基变量无限增加,而不会造成当前任何一个基变量为负值时,就会出现这种情况;此时说明Z无界,从而停止计算。

多个最优解
当两个或多个解的任意加权平均得到的解,当权数项为非负且之和为1时,被称为解的凸组合(convex combination)

任意一个有多个最优解(且可行域有界)的线性规划问题至少有两个最优的CPF解(角点解);每个最优解是这些最优CPF解的凸组合。

两阶段法总结
初始化:通过引入人工变量修改原始问题的约束条件,从而得到人工问题必需且明显的初始BF解0
第一阶段:这个阶段目标是找出原始问题的BF解,因此minZ = sum(人工变量),约束于修改后的限制条件
这个问题的最优解(Z=0)将是原始问题的BF解
第二阶段:这个阶段目标是找到原始问题的最优解,因为人工变量是原始问题的一部分;这些变量现在可以消去了(即它们现在都是0);从第一阶段末得到的BF解出发,应用单纯形法求解原始问题。

两阶段法优于大M法的是只在第一阶段用乘数因子,而在第二阶段去掉人工变量(大M法可通过赋予M一个极大的值把乘数和加项结合起来,但这会产生数据不可靠现象);因此计算机程序通常用两阶段法。

无可行解
如果原始问题无可行解,大M法和两阶段法的第一阶段得到的解中至少有一个人工变量值大于0,否则它们均等于0.

允许为负的变量
大多数原始问题中,决策变量为负值可能毫无意义,故在构建线性规划模型时需要包括非负的约束
允许为负的有界变量
考虑一个允许有负值约束且满足约束xj>=Lj(Lj是一个负常数)的决策变量,可通过变量转换把这个约束条件转化为非负约束

Ex:

允许为负的无界变量
若在模型中xj无下界约束,则需要另一种方法:整个模型xj被两个非负变量的差

所代替。
Ex:

4.7 优化后分析

再优化
再优化方法相对从头开始重新求解方式的一个最大优点就是修改后模型的最优解可能更靠近原先模型的最优解,而不是靠近比照常规运用单纯形法构建的初始BF解;因此假设模型修改适度,那么进行再优化只需几次迭代就可以了,而不需要从头开始进行上百次,上千次的运算。

灵敏度分析:围绕一次改变一个初始模型种的参数来考察它对最优解的影响
参数线性规划:系统研究几个参数在某个范围内同时变化时最优解的变化情况

4.9 求解线性规划问题的内点算法
内点算法:通常被称为障碍算法;从搜索的角度看,所找的试验解都是内点,每个约束边界都被作为障碍看待。

一个算法的表现有两个因素:
 每次迭代的平均计算时间
 迭代次数

内点算法远比单纯形法复杂,它的每次迭代都需要相当大的运算量去找出一个试验解,因此,内点算法每次迭代计算时间是单纯形法的几倍;因此,对小规模问题,内点算法需要的总计算时间要比用单纯形法长几倍。
然而,内点算法的优点在于解大型问题需要的迭代次数并不比小型问题多;与之相反,单纯形法在解大型问题时,迭代次数也将随之增长,故在解大型问题上,内点算法常常比单纯形法快。

对大型问题,两种算法迭代次数有如此大差异的原因是因为所走的路线不同
 每次迭代中,单纯形法沿着可行域边界从当前CPF解移至相邻的CPF解;而大型问题又天文数字般的CPF解,因此到达最优解需经过相当多的步数
 内点算法则避开所有这些而直接通过可行域指向最优解的内点,这是因为约束条件的增加带来可行域更多的约束边界,但对通过可行域内部的路径上的试验解个数几乎没有影响,使得内点算法有可能求解拥有大量约束条件的问题

单纯形法和内点算法的互补角色
单纯形法对一些拥有几千个约束条件和近乎无限多个决策变量的问题来说是最有效的,因此大多数用户仍会继续使用单纯形法解决问题;但是,当约束条件数量进一步增多时,内点算法可能变得更有效;当规模达到上万个约束条件时,内点算法降是唯一有能力解决这种问题的方法。
此外,内点算法在并行处理问题上比单纯形法拥有更大的潜力。

内点算法的缺陷:在优化后分析方面能力的有限性;
内点算法在不断迭代中得到的试验解会越来越接近最优解(CPF解),但绝不会与最优解完全一致;因此,研究者们通过开发程序使得内点算法完成后转向单纯形法,确定出离最后试验解非常接近的CPF解。在找到邻近的BF解后,单纯形法的最优性检验被用来检验是否为实际上的最优解,如果不是,会导入单纯形法迭代而完成从这个BF解向一个最优解转换;一般来说,只需几次迭代就可以了,这是因为内点算法已为我们找到非常靠近最优解的一个点了。

线性规划部分概念及重要性质(运筹学导论笔记)相关推荐

  1. 使用python scipy.optimize linprog和lingo线性规划求解最大值,最小值(运筹学学习笔记)

    1. 线性模型 2. 使用python scipy.optimize linprog求解模型最优解: 在这里我们用到scipy中的linprog进行求解,linprog的用法见https://docs ...

  2. 软件工程导论笔记(同步更新)(已结束更新)

    软件工程导论笔记 1.1软件危机 1.2软件工程 1.4软件过程 1.4.1瀑布模型 1.4.2快速原型模型 1.4.3增量模型 1.4.4螺旋模型 1.4.5喷泉模型 1.4.6Rational统一 ...

  3. 人工智能导论笔记——江湖救急版

    人工智能导论笔记--江湖救急版 Powered by DZY 以下部分图片来源于老师课件,仅供学习交流使用,侵权致删! 一.绪论 感觉并无考点,列出提纲 人工智能的基本概念 人工智能的发展简史 人工智 ...

  4. 分布式系统 概念 高可用 高并发 学习笔记

    分布式系统 概念 高可用 高并发 学习笔记 0. 分布式系统基本概念 0.1 背景 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为了用廉价 ...

  5. 计算机科学导论笔记(四)

    目录 六.计算机网络和因特网 6.1 引言 6.1.1 网络 6.1.2 因特网 6.1.3 硬件和软件 6.1.4 协议分层 6.1.5 TCP/IP协议族 6.2 应用层 6.2.1 应用层模式 ...

  6. 认知计算导论笔记——江湖救急版

    认知计算导论笔记--江湖救急版 特别感谢 W&J dalao的支持!以下部分图片源自教师课件,仅供学习交流使用,侵权致删! Lecture 1 - What is Cognitive Comp ...

  7. 【线性代数】矩阵的基本概念和运算性质

    矩阵的基本概念及其意义以及常见的 特殊矩阵 什么是矩阵 m行n列矩阵 方阵 当m=n时,成为方阵 列向量 一行数,即m=1 行向量 一列数,即n=1 两个矩阵相等 1.两个矩阵的行和列都相同 2.对应 ...

  8. 王树尧老师运筹学课程笔记 06 线性规划与单纯形法(几何意义)

    第6讲 线性规划与单纯形法(几何意义) 线性规划的几何意义 图解法 线性规划的维度 变量 可行域维度 图像维度 1 x1x_1x1​ 1(线段) 1 2 x1.x2x_1.x_2x1​.x2​ 2(平 ...

  9. 树 (二叉树)--- (内含树(二叉树)的概念、二叉树性质、遍历(非递归)、习题)永不过时的数据结构

    树的定义: 树是一种非线性的数据结构,它是由有限个(n>=0)节点组成一个具有层次关系的集合. 树最顶端的顶点称为根节点,根节点没有前期节点.(如下A点就被称为根节点) 子树就是整一颗树的其中一 ...

最新文章

  1. CSS3关于过渡效果的问题
  2. 在指定的查找范围内获取DOM元素
  3. php 变量写入数据库,PHP基础/JS变量存入数据库 | 学步园
  4. 【PP主数据】工作中心介绍
  5. BOOST_VMD_ASSERT_IS_ARRAY宏相关的测试程序
  6. 文字常量区和栈区考点
  7. 消息队列面试 - 为什么使用消息队列,消息队列有什么优点和缺点?
  8. 机器学习中树模型算法总结之 决策树(上)
  9. 2019交大计算机考研分数线,上海交大2019考研计算机软件与理论的复式分数..._考研_帮考网...
  10. zookeeper注册中心安装(单机版)
  11. Amobea读写分离
  12. caxa发生文件读写异常_文件和异常
  13. win10下微软office2010卸载
  14. MySQL函数 if 的使用
  15. python处理csv文件计算均值_读取CSV文件,计算平均值并打印所述平均值
  16. Vue实现页面导航实战
  17. 程序员的工资有多高?
  18. html win10虚拟键盘,Win10怎么调出虚拟键盘
  19. 播放视频无声音,视频编码来解决
  20. Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)

热门文章

  1. SGL STL源码剖析——迭代器
  2. 第十三章 指导学习:人机猜拳
  3. 《人月神话》的观点:是与非?
  4. 吐槽解决windows任务栏卡死、无反应
  5. 现在加入蚂蚁还来得及吗?谈谈跳槽的机会成本
  6. [转]一篇关于机会成本的文章
  7. 智能穿戴, 硬件创新空间还有多大?
  8. monthsbetween 在mysql_months_between
  9. mysql between和in_mysql between and、==、in性能实例分析
  10. 学校人力资源管理系统可行性分析