6.运筹学复刻 之其他单纯形法+灵敏度分析


单纯形法

单纯形法罗列

普通单纯形法
	从一个基本可行解开始,迭代到最优可行解
对偶单纯形法
    从一个最优不可行解开始,迭代到最优可行解
广义单纯形法
    从一个不最优不可行的解,迭代到最优可行解

1.普通单纯形法:
最简单款,前面讲的很详细

2.对偶单纯形法:
标准形式:
max Z = CTX
(最优性条件:C <= 0)
AX <= b

or

min Z = CTX
(最优性条件:C >=0)
AX <= b

解释,必须 AX <= b的原因:
为了可以通过引入 松弛变量 直接获得 初始基本不可行解
例如 X + Y = 1,标准化后得到两个:
X + Y <= 1
-X - Y<= -1
此时因为第二个式子不满足 b>=0,所以是不可行解
最优性条件:
1.极大值问题,我们单纯形表的最优性判断:Z行系数为非负数,即C<=0
2.极小值问题,我们单纯形表的最优性判断:Z行系数为非正数,即C>=0

化标准型的方法:引入冗余人工约束

对于目标函数中,不满足最优性的系数,添加冗余人工约束来描述:

eg. max Z = 2X1 - X2 + X3,由最优性条件,C <= 0
所以对于:X1,X3添加约束:

X1 + X3 <= M(因为M很大,所以这是一个冗余约束,对原先解空间没有影响)

此时考虑因为Z中有不满足最优的系数,所以依旧不满足最优的要求,此刻进行依次迭代即可:

1.选择(max)Z行最负的作为入基变量
2.选择人工约束中的人工变量为出基变量
解释:
因为我们添加的 人工约束 是针对 Z行系数不满足的 变量,
所以 人工约束中的松弛变量的对应行 只有 对应 Z行系数负的 那一列 有值 1,其余为 0
例如上例中,假设 X1 +X3 +X7 = M,则X7对应行系数:1 0 1 0 ...

所以我们选择 Z行系数 - 最负的值×【X7】,我们让最小的加上X变成了0,
其余负的都加上了X,所以必定是非负

到此完成了用对偶单纯形法解决问题的初始化。

迭代过程:

1.选离基变量:取值最负的基变量(最不可行的)

2.选进基变量:针对离基变量那一行系数,只选择系数为负数的列,
  Z行系数/对应系数,选择最小的,为进基变量
如果不存在系数为负数,则无可行解

3.持续迭代,当所有b>=0后,答案为最终解

3.广义单纯形法:混合普通单纯形法+对偶单纯形法
标准型:
max/min Z = CTX
AX <= b
X >= 0,b,c无条件

AX<=b 目的还是可以轻松地通过松弛变量找到初始解,此时这个解既不可行,又不最优

意味着:对max:最后一列有小于0,Z行有小于0

解题:
1.恢复可行:对偶单纯形法
2.恢复最优:普通单纯形法



后最优分析(灵敏度分析)

目的:在模型参数、模型结构变化时,通过简便方法得到新的解
1.b变化
B:初始基变量在最终表中对应的系数
XBnew= B-1b
Znew = CTXnew


发布了108 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/k_x_k_baoqian/article/details/101726016