码迷,mamicode.com
首页 > 编程语言 > 详细

线性规划与单纯形算法描述

时间:2015-04-02 15:03:19      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

在满足(2)、(3)式约束条件时求解(1)式最大值的问题称为线性规划问题

线性规划的形式多样,但都可以转化成上述的形式,上面的形式被称为线性规划的标准型

标准型的矩阵形式:

技术分享

同样在满足除(1)式之外所有其他式约束条件时求解(1)式最大值(后面相似的式子也是这样理解,不再作说明)

 

下面引用自算法导论:

考虑下面具有两个变量的线性规划:

技术分享

几何化如下:

技术分享

这个灰色的凸形区域称为可行区域,希望最大化的函数称为目标函数 。技术分享 概念上,我们可在可行区域内每个点上对目标函数技术分享 求值;我们将目标函数在一个特定点上的值称为目标值。我们可以找出一个有最大目标值的点作为最优解。

  在二维中,我们可以通过一个图形化的步骤求最优解。对任意给定的在z,技术分享 上点的集合是斜率为-1的一条直线。z作变量,让 技术分享 在坐标系上的可行区域移动来取得z的最大值,如下图:

技术分享

得到 技术分享 。

  虽然不容易用图形表示超过两个变量的线性规划,但是同样的直觉仍然成立。如同在二维空间一样,因为可行区域是凸的(为什么?),取得最优目标值的点集合必然包含可行区域的一个顶点。类似地,如果有n个变量,每个约束定义了n维空间中的一个半空间。我们称这些半空间的交集形成的可行区域为单纯形。目标函数现在是一个超平面,并且因为它的凸性,一个最优解仍在单纯性的一个顶点上取得。

 

可行区域是凸的证明:

技术分享

设可行区域为S,在S上任取两个点 技术分享 ,有 

技术分享

又由凸集的定义,可知S为凸集。

PS:一个凸区域的直观解释是,该区域的任意两点之间连一条线段,线段上的点也全在该区域中。

 

  单纯形算法以一个线性规划作为输入,输出一个最优解。它从单纯形的某个顶点开始,执行顺序迭代。在每次迭代中,它沿着单纯形的一条边从当前顶点移动到一个目标值不小于(通常是大于)当前顶点的相邻顶点。当达到一个局部的最大值,即存在一个顶点,所有相邻顶点的目标值都小于该顶点的目标值,单纯形算法终止。因为可行区域是凸的,且目标函数是线性的,所以该局部最优实际上是全局最优的。

  虽然我们用几何方法很直观地描述了单纯形算法,但实际上是先将给定的线性规划写成松弛形式,即线性等式的集合。然后从代数角度进行运算。

 

  写博客是很花时间的一件事。。。。以后有空的话会补充单纯形算法实际工作过程与实现方法。

线性规划与单纯形算法描述

标签:

原文地址:http://www.cnblogs.com/shjwudp/p/4386837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!