线 性 规 划 算 法 详 解

更新时间:2023-04-21 16:47:41 阅读: 评论:0


2023年4月21日发(作者:植物检疫证书)

线性规划算法详解

线性规划

首先什么是线性规划,大致的定义我总结为在线性的目标和约束

中,找出一个最优解。

举个例子:

M1M2两种原料用于生产内外墙涂料,M1日最大可用量24吨,

M2日最大可用量为6吨,外墙涂料每吨需要6M11M2,内墙

涂料每吨需要4M12,吨M2,外墙涂料每吨利润5个单位,内墙涂

料每吨利润4个单位。且市场需求调查数据得出,内墙日需求量不超

过外墙的日需求量+1吨,内墙最大日需求量为2

怎样在这样的各个线性的条件中,得到最优的内外墙生产吨数,

就是我们线性规划算法要做的事情。

设外墙生产x1,内墙生产x2,设利润为z,要得到z的最大

化,也就是最优解,上述条件罗列为公式可得出

6x1+4x2=24

x1+2x2=6

-x1+x2=1

z=5x1+4x2

如何从这个公式中求出最优解?有以下两大方法

我们将上述约束条件画图,y轴为x2x轴为x1,得出如下:

圈红色的部分就是所有的可行解,表示这个区间内都的x1x2能满

足约束条件

对于我们的z函数,其实表示的是一条截距为z斜率为-(5-4)

线性直线,我们要求z最大化的最优解,就是在所有的可行区域内找

到可以满足z曲线截距最大的点。

最后我们发现,可行区域内能让z函数达到最大截距的点就是我

圈出来的那个角点,z再增大的话,就超出可行区域了,所以不满足

要求,所以最终得出最优解为x1=3,x2=1.5

这就是图解法的做法,一个定理就是,线性规划的最优解总是发

生在约束几何平面的角点上,例如上面圈出来的点,先当做是个定理,

我也不知道怎么证明这个定理。

以上就是线性规划的图解法,优点是简单明了,缺点就是当参数

超过3个时,我们很难直观画出一个jihe几何平面来找角点,所以

我们需要下面的另一种解法。

单纯形法

当超过3个参数时,单高中物理摩擦力 纯形法就派上用场了,单纯形法首先要做

的就是把方程化为标准形式:

所有的变量都是非负数

所有的约束都是等式(非负限制除外),且具有非负的右端项

像上述的方程,如果化为标准形式,将会是如下

6x1+4x2+s1=24

x1+2x2+s2=6

-x1+x2+s3=1

x2+s4=2

z=5x1+4x2+0s1+0s2+0s3+0s4

新加入的s1-4表示的是松弛变量(非负)根据大于号小于号来决

定他们的正负号

对于标准化形式,我们设有n个参数,设列举出的约束方程个数

m,当m=n时,方程组就只有唯一的解,当mn时,说明有无穷个可行

解,也就是解是一个区域。

例如y=x+1单独这个约束方程,那么可行解就是这条直线上的所

有点,这个就是m=1,n=2的情况,如果再加上一个方程使得m=2,例

y=-x,则是唯一的解了,解为(-0.5,0.5)

由上面的定理,最优可行解必然出现在几何空间上的角点

几何角点的代数定义

对于一个m*n的方程组,我们另n-m个变量为0,再去在m个方

程中求出其余的m个变量的值,如果有可行解,则这m个变量得出的

点就是这个超几何平面的角点。

例如y=x+1,xy都非负,这里m=1我们就有两种角点情况,一种是

x=0的角点,一种是y=0的角点,画图上便可只管看出。对于超3

的几何面也是如此类推,虽然我不知道如何直观证明,但这就是个定

理。

所以我们线性规划最终我爱劳动作文 zu做的事就是,找出适合的角点,并代入

最优的z方程,哪个得出的z最优,哪个角点就是我们的最优解!

但当参数十分多时,角点的数量就十分庞大,所以我们需要一个

智能的搜索过程,来寻找出最优角点的位置。

进基离基

我们每一次的寻找角点称之为迭代,每一次我们都从原点,也就

是非松弛变量全为0的时候开始

我们称令(n-m)个变量为0的这些变量为非基变量,令其余的m

变量为基变量。

从原点开始,我们计算完z值后,就要选择下一个角点来计算z

那么就需要迭代,选择一个基变量进行离基操作,并选择一个非基变

量代替它,进行进基操作,从而得到下一个角点来计算z

对于如何选择进基变量和离基变量,我们遵照如下条件

最优条件确定进基变量,在z方程上,选择一个能让z最可能往

最优方向发展的变量进基,例如max z=3x1+5x2x2的系数更高,x2

非基(即非0)的话更能使z趋于最大化。

可行性条件确定离基变量,找出约束最小的那个进行离基,因为

超过最小约束表明有约束不满足了,所以不能再往外扩展了。(具体

操作是进行最小非负比计算,后面会继续讲)

通过这两个条件,我们就可以不用暴力穷举出所有的角点进行z

计算,大大减少了计算量,最后直到无最优条件可选了,再迭代时z

反而会适得其反时,最优解已经得到了,求解完成。

高斯-若尔当行运算

上面讲述的只是单纯形法的思路,具体的计算步骤就是高斯-若尔

当行计算

回到上面的原料公式:

6x1+4x2+s1=24

x1+2x2+s2=6

-x1+x2+s3=1

x2+s4=2

z=5x1+4x2+0s1+0s2+0s3+0s4

由于最初我们从原点开始,所以基变量是s1-4,我们把基变量写

在左侧则为

s1=24-6x1-4x2

s2=6-x1-2x2

s3=1-x2+x1

s4=2-x2

右边的系数为非基变量,左边为基变量,因为非基变量为0,所

以左边的基变量的解值就是右边的常系数,世界最大的地震 也就是截距

x1的系数为5 最能达到z最大化 ?x1s1的方程中系数为-6,s1

行的解值-进基变量系数的非负比最小(24-6 这里为了明显显示基变

量,所以把一些参数挪到了右边,挪到左边过来就是6而不是-6,这

个比值代表了新的角点的截距),所以选择x1进基,s1出基

假设我们错误的选择了s2离基,那么xi新角点上,x1的值就是

6,x1等于6超过了约束,因为24-6*60,而s1是非负的,所以必

须选择最小非负比进行离基。

s1离基,x1进基 其实就是把右边的变量挪到左边以达到左边

全基,右边全非基,也就是用x1去替代s1s1也替代x1,以得出

x1=4-(1-6)s1-(2-3)x2

s2=2+(1-6)x1-(4-3)x2

s3=5-(1-6)s1-(5-3)x2

s4=2-x2

这就是我们手动完成的一次进基出基操作,现在基变量在左边为

x1s2-4,解分别为4,2,5,2,剩下的为非基变量,我们可以就此解

出新的z

这是我们手算的进基离基,当参数非常庞大的时候,手算十分蛋

疼,所以我们需要得出一个规律,然后可以进行编程让计算机运算。

这个运算规律就叫高斯-若尔当行运算

首先要把各个参数转到一个矩阵里,换位标准形式的原料公式的

矩阵如下,一个规律是z行基本变量系数均为0

z不属于基变量 但为了方便表示还是写在了一起

高斯若尔当行运算规则,根据这个矩阵,选出进基离基变量后

进基变量所在列为枢纽列,离基变量所在行为枢纽行,行列交叉

位置为枢纽元素,例如我上面标蓝色的6

对于迭代后的新枢纽行的计算规则为:在基列中,以进基变量替换

离基变量,新的枢纽行=当前枢纽行-枢纽元素

其他所有行,包括Z行的计算规则为,新的行=当前行-当前行

枢纽列的系数*新的枢纽行

其实这只是对我们刚才的手算的一个推导整理,上述矩阵进行一

次迭代后如下

对比我们刚手算的迭代 你可以看到规律

x1=4-(1-6)s1-(2-3)x2

s2=2+(1-6)x1-(4-3)x2

s3=5-(1-6)s1-(5-3)x2

s4=2-x2

一直不停循环迭代 直到没有最优条件时,z就是最优解,基变量

的值,也就是解,在最后的最优解中,松弛变量如果大于0,说明该

-源是充足的,如果等于0说明该资-源是匮乏的

至此我们的线性规划代数解法就完成了绝大部分

特殊情况

上面讲述的是一到三年级的古诗 基本通用的线性规划解法,但存在一些特殊情况需

要特殊处理

无法直接标准化

当所有约束都是=或者=时,进行标准化直接加上松弛变量即可,

但存在一些既有=又有==的方程时,就会出现个别的方程没有松弛

变量,这时就出现了无法标准化的坏状态。

做法是在没有松弛变量的行里加入人工变量Ri,并在z函数中给

人工变量加一个惩罚系数MM为无穷大或无穷小(根据zmax还是

min决定),使人工变量在一次次迭代后化为0,若化不为0,说明无

解。

这里需要进行两个阶段

第一个阶段

先不求z,而是求min r=人工变量和 若能产生r=0 则这个阶段

产生了基本可行解,人工变量可以直接去掉然后进入第二阶段

第一步min r行的计算,就会遇到z(这里是r)基本变量系

数不为0的情况,会导致z行等式不成立,所以第一步要先进行替换

(假设人工变量有R1 R2两个)

正确r=原始r+(1*R1+1*R2) ? 进行系数化0

最后r=0时,得到的基本解,人工变量必须是非基本解,才能完

全不让他进入第二阶段,万一出现人工变量为基本解但值为0导致得

r=0时,需要再选择一个0基本人工变量进行离基,选择任意一个

非人工非基变量进行进基,直到迭代到所有0人工变量do都被去掉。

第二阶段

开始求z 阶段一最后一步得出的基本变量继续作为阶段二的

基本变量

同样 如果出现z行基本变量系数不为0会导致z行等式不成立,

需要进行系数化0,新行=旧行+(对应非零系数*对应基本变量行)

最后再一次迭代即可进行求z最优解

个人觉得人工变量是比较复杂而且特殊步骤比较多的,我后面会

继续完善例子

两次以上得出z的值是相同的,则为退化现象,退化有时候会产

生死循环的可能,退化的出现意味着至少有一个基变量在下一次迭代

中变为0,基变量出现0会导致最小非负比循环出现(都是0),而且

z的下次迭代继续保持原值。

实际生活的条件约束中,出现一直死循环的情况很少,几乎不会

发生。

无穷多个解

按图解法来看,当z的斜率和某个边界线的斜率相同时,则会出

现一段直线上的点都是最优解,即是无穷多个解

按代数法的思路,就是出现非基变量的系数为0,这种情况下,

这个非基变量可以随意进基但不改变z值,但会改变各个变量系数,

这同样表现出有无限多个解的情况

按图解法来看,就是有个地方没有约束,z可以不断增加或者减

少下去

代数法上的表现是,最小非负比不存在,无法选择离基变量,解

和系数的比值都是0或负数,导致可以无限增大进基变量而不破坏约

束,也就是无界的情况

不可行解

人工变量0

以上是我对线性规划的理解,纯手打,篇幅较大,如果有什么理

解错误或者改进欢迎留言。后续我会继续完善一些例子以便理解和编

写相应的代码实现。

就是上面+上一个东西和减去一个东西。下面+一个东西减去一个

东西。这是为了更好的化简。

RCNN5(参看这篇博客)在速度上有突飞猛进的发展,基本解决

PASCAL

Rle_Encode_P(unsigned char *inbuf,int inSize,unsigned

char *outbuf,int onuBufSize)

--------------------------木瓜的用途 --------------线

-------------------------------------------

DoG金字塔的生成过程就比较简单了,就是由高斯金字塔相邻

的两层相减得到DoG金字塔中的一层,然后依次得到。由高斯金字塔

中每组有s+3s+3层,所以高斯差分金字塔中每组有s+2s+2层。

BP算法可以完成非线性问题,因此具有很大的优势,但是也存在

很大的问题,下面我们就来总结一下:

请大家一定要搞明白字母和下标代表的含义,这是深入理解的前

提,下面开始推倒公式:

首先为异号,即1-1,因此上式可以写为,而约束条件就是,此

时把看做自变量,看做因变量,此时可以写为:,同时两个都满足,

因此约束条件就为上图中的正方形区域内了。

决策树是一种简单但广泛使用的分类器,它通过训练数据构建决

策树,对未知的数据进行分类。决策树的每个内部节点表示在一个属

性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点存放

着一个类标号后背刺痛 。

differential evolution algorithm


本文发布于:2023-04-21 16:47:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/507876.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线性规划法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图