6.3对偶单纯形法
- 格式:ppt
- 大小:423.00 KB
- 文档页数:15


对偶单纯形法的原理和应用
一、原理介绍
对偶单纯形法是线性规划的一种求解方法,通过对原问题的对偶问题进行迭代求解,来达到求解原问题的目的。下面详细介绍对偶单纯形法的原理。
1. 线性规划问题的对偶性
在线性规划问题中,我们常常需要求解最小化或最大化线性目标函数的问题,同时满足一系列线性约束条件。对于这样的问题,可以通过定义对偶问题来求解。
2. 对偶问题的定义
对于原问题的最小化形式,可以定义对偶问题的最大化形式。对于原问题的最大化形式,可以定义对偶问题的最小化形式。对偶问题和原问题之间具有很强的对称性。
3. 对偶单纯形法的基本思想
对偶单纯形法的基本思想是通过迭代求解对偶问题来达到求解原问题的目的。在每一次迭代中,首先确定最优解是否已经找到,如果找到最优解,则结束算法;否则,确定要改进的变量,通过计算改变最变量之前对应的对偶变量的值,然后再进行下一次迭代。
二、应用场景
对偶单纯形法在实际应用中有着广泛的应用场景。下面列举几个典型的应用场景。
1. 生产计划问题
在生产计划问题中,常常需要确定各个生产线的产量,以最小化总成本或最大化总利润。对偶单纯形法可以应用于该问题的求解,通过定义对偶问题,并通过迭代求解对偶问题,来确定生产线的产量。
2. 项目调度问题
在项目调度问题中,需要确定各个项目的开始时间和结束时间,以最小化总工期或最大化资源利用率。对偶单纯形法可以应用于该问题的求解,通过定义对偶问题,并通过迭代求解对偶问题,来确定项目的调度方案。 3. 运输问题
在运输问题中,需要确定各个供应商到各个销售点的运输量,以最小化总运输成本。对偶单纯形法可以应用于该问题的求解,通过定义对偶问题,并通过迭代求解对偶问题,来确定每个供应商和销售点的运输量。
4. 资源分配问题
在资源分配问题中,需要确定各个资源的分配比例,以最大化总效益或最小化总成本。对偶单纯形法可以应用于该问题的求解,通过定义对偶问题,并通过迭代求解对偶问题,来确定资源的分配比例。
16.对偶理论(三)对偶单纯形法
⼉童节快乐呀
这⼀部分我们考虑原问题是标准型的问题,并且介绍对偶单纯形法。
在上⼀节的强对偶定理的证明中,对标准型问题使⽤单纯形法,定义了对偶变量p为pT=cT
BB−1。然后由原问题最优性条件
cT−cT
BB−1A≥0T得到了等价表达的对偶可⾏性条件pTA≤cT。那么我们之前介绍的单纯形法可以看作是在保证原问题可⾏的前提下去寻找
对偶可⾏的解。那么反过来,我们也可以从对偶可⾏的前提下去寻找原问题可⾏的解,这种算法称为对偶算法。在接下来,将介绍对偶单纯
形法。并且说明这个算法事实上求解了对偶问题,更近⼀步,它是从对偶问题的⼀个基本可⾏解移动到另⼀个。
对偶单纯形法
考虑⼀个标准型的线性规划问题,假设矩阵A是⾏满秩(为什么这个假设具有⼀般性,可参考线性规划中的⼏何(三))。记B为基本矩
阵,它包含了矩阵A的m个线性⽆关的列。考虑下表(与之前介绍的单纯形法中的表⼀样)
更详细的有
不过,在这⾥不再要求B−1b是⾮负的,那就说明此时的解是⼀个原问题的基本解但不⼀定是可⾏解。但是,我们要求¯c≥0成⽴,也相当于
pTA≤cT成⽴(具体见上⼀节强对偶定理证明)。 这说明现在有了⼀个对偶问题的可⾏解,并且对偶问题的⽬标函数值为
pTb=cT
BB−1b=cT
Bx
B,这恰好就是上表中的左上⾓元素的相反数。如果不等式B−1b≥0也成⽴,那么这个解也将是⼀个原问题的可⾏解,
并且⽬标函数值相同,这说明我们找到了原问题和对偶问题的最优解。如果不等式B−1b≥0并不成⽴,那么我们将寻找下⼀个基矩阵。
找到满⾜xB(l)<0的l,考虑表中的第l⾏为pivot ⾏(x
B(l)),v
1,⋯,v
n),其中v
i为B−1A
i的第l个元素。对于满⾜vi<0的所有i(如果存在的话),
我们计算⽐率¯c
i/|v
i|,然后记j为这些⽐率中最⼩的那个的下标(为什么这么选呢,后⾯会说),也就是说v
j<0且
¯cj
|v
j|
=min
{i∣vi<0}¯ci
- 1 - 对偶单纯形法例题
单纯形法是一种用于解决规划问题的数学工具,可以用来求解最大化或最小化某个目标函数的模型,而对偶单纯形法就是一种具有代数分解能力的单纯形法。对偶单纯形法可以分解复杂的数学模型,以求出最优解。它的核心思想是将原始模型的约束条件分解为若干个子模型,然后利用单纯形法针对每个子模型求最优解,再将最优解线性组合,在计算过程中,将原始模型变换成多个子模型进行求解,在模型变换时将原模型中的变量变换成对偶变量形成对偶模型,从而达到模型分解的目的,最终得到全局最优解。
现在我们来看一个典型的对偶单纯形法例题:
试求下列定义域的最大值和最小值:
f(x, y) = 2x + 3y
s.t. x, y >= 0
x + 2y <= 8
把这个模型变换成对偶单纯形法的形式:
Max g = 8λ + 0μ
s.t. 2λ + <= 2
3λ + <= 3
λ >= 0
μ >= 0
λ,是最优解的变量, g是目标函数,应于原模型f(x, y) = 2x +
3y。 - 2 - x + 2y <= 8价于2λ + <= 2, 3λ + <= 3。
经过单纯形法求解,最优值g = 8,最优解是λ = 1, = 2。
其实最终的最优解是x = 1, y = 3,此时的最优值为f(x, y) =
2*1 + 3*3 = 11,是原模型的最优值,而对应的最优值g = 8,是对偶单纯形法的最优值。
可以看出,对偶单纯形法的运算过程比原模型更为简单,求解问题的速度更快,而且通过变量的替换,多个原模型也可以转换成统一的对偶单纯形法模型,大大简化了求解问题的过程。
除了上面提到的例题,对偶单纯形法还可以解决更为复杂的数学模型,当约束条件较多时,使用对偶单纯形法可以有效减少计算时间,减轻计算量,比如背包问题、生产线调度问题等。
1. 对偶单纯形法
2. F(x)=3x1+4x2+5x3
X1+2x2+3x3>=5
2x1+2x2+x3>=6
xi>=0
f=[3;4;5];
A=[-1 -2 -3
-2 -2 -1];
b=[-5;-6];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
x =
1.0000
2.0000
0.0000
fval =
11.0000
exitflag =
1
output =
iterations: 8
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
lambda =
ineqlin: [2x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
x, lambda.ineqlin, lambda.lower
x =
1.0000
2.0000
0.0000
ans =
1.0000
1.0000
ans =
0.0000
0.0000
1.0000
2.单纯形法
f(x)=-9x1+-16x2
x1+4x2+x3=80
2x1+3x2+x4=90
xi>=0
f=[-9;-16;0;0];
Aeq=[1 4 1 0
2 3 0 1];
beq=[80;90];
lb=zeros(4,1);
[x,fval,exitflag,output,lambda] = linprog(f,[],[],Aeq,beq,lb)