线性规划算法详解
线性规划
首先什么是线性规划,大致的定义我总结为在线性的目标和约束
中,找出一个最优解。
举个例子:
M1和M2两种原料用于生产内外墙涂料,M1日最大可用量24吨,
M2日最大可用量为6吨,外墙涂料每吨需要6吨M1,1吨M2,内墙
涂料每吨需要4吨M12,吨M2,外墙涂料每吨利润5个单位,内墙涂
料每吨利润4个单位。且市场需求调查数据得出,内墙日需求量不超
过外墙的日需求量+1吨,内墙最大日需求量为2吨
怎样在这样的各个线性的条件中,得到最优的内外墙生产吨数,
就是我们线性规划算法要做的事情。
设外墙生产x1吨,内墙生产x2吨,设利润为z,要得到z的最大
化,也就是最优解,上述条件罗列为公式可得出
6x1+4x2=24
x1+2x2=6
-x1+x2=1
z=5x1+4x2
如何从这个公式中求出最优解?有以下两大方法
我们将上述约束条件画图,y轴为x2,x轴为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+5x2,x2的系数更高,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最大化 ?x1在s1的方程中系数为-6,s1
行的解值-进基变量系数的非负比最小(24-6 这里为了明显显示基变
量,所以把一些参数挪到了右边,挪到左边过来就是6而不是-6,这
个比值代表了新的角点的截距),所以选择x1进基,s1出基
假设我们错误的选择了s2离基,那么xi新角点上,x1的值就是
6,而x1等于6超过了约束,因为24-6*60,而s1是非负的,所以必
须选择最小非负比进行离基。
以s1离基,x1进基 其实就是把右边的变量挪到左边以达到左边
全基,右边全非基,也就是用x1去替代s1,s1也替代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
这就是我们手动完成的一次进基出基操作,现在基变量在左边为
x1和s2-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函数中给
人工变量加一个惩罚系数M,M为无穷大或无穷小(根据z是max还是
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 条评论) |