线性规划-单纯形法part1

单纯形法part1

运筹学是一门内容广泛的课程,但限于个人水平,我仅向读者讲解线性规划,非线性规划,动态规划部分。首先,我需要梳理一下基础,线性规划一般适用单纯形法求解;非线性规划包括无约束问题,有约束问题,一般做法为将有约束转为无约束;对于离散问题,动态规划更加节省时间。
本篇只讲单纯形法第一部分,希望大家have fun!
单纯形法看一看
在复杂的数学证明下,线性规划问题通常是凸规划,也就是说正常情况下,是能找到最优解的。单纯形法通过添加人工变量的形式,对原问题进行基变换,迭代获得最优解。说实话,以上这句话有点像曾经学习数据库中的“关系数据库是@¥%#&*等”,那就先直接看一个简单的线性规划问题,并初步用单纯形法解决一下。
f1
首先,将原问题转化成标准型,方法是通过添加变量来使得约束转为等式:
f2
对照标准型,进行列表,用于单纯形法迭代计算,新添加的变量称为剩余变量,它们是默认的基。
f3讲一下这里,首先看z的系数,选择最大值对应那一列,再用b分别除以该列得到theta,选择theta最小行,由此锁定x4行和x2列,意义是x2进基,x4出基;重复以上操作,并在每次进出基后通过线性变换确保(基行,基列)值为1,同列的其他值为0。因此,x2进基,x4出基后,线性变换并重新确定基为:

f4计算theta时,对于系数为负数情况,直接写none即可,none不参与比较。由此锁定x3行和x1列,意义是x1进基,x3出基。再重复一次得到:
f5此时,z的系数全小于等于零,迭代结束,即有解为:
f6这是非常基本的单纯形法求解顺序(因为目前还未考虑在可行基内迭代这件事情),希望读者仔细对照例子,观察求解顺序与细节。

猜你喜欢

转载自blog.csdn.net/qq_40943760/article/details/108874307