极大极小对偶理论分析.docx
《极大极小对偶理论分析.docx》由会员分享,可在线阅读,更多相关《极大极小对偶理论分析.docx(16页珍藏版)》请在冰豆网上搜索。
极大极小对偶理论分析
编号:
_
《最优化方法》
课程设计
题目:
极大极小对偶理论分析
院系:
专业:
姓名学号:
指导教师:
日期:
2014年01月02日
摘要
在极大极小对偶理论中,我们寻求原问题和对偶问题之间的求解,对偶单纯形法是非常重要的一种解法。
本文主要介绍的对偶单纯形法,对偶单纯形法算法结构简单,容易使用matlab编程实现。
在本次实验中,我首先分析对偶单纯形法,了解对偶单纯形法解对偶问题的步骤,进行实例求解,再运用对偶单纯形法的思路编写代码,进行matlab实例求解,加以分析,总结。
进行算法比较。
我把对偶单纯形法与单纯形法进行比较,先了解单纯形法解决问题的步骤,和实例求解过程,再编写代码,进行实例分析,最后和对偶单纯形法进行比较。
通过比较,我发现单纯形法是从原始问题的一个可行解通过迭代转到另一个可行解,直到检验数满足最优性条件为止。
对偶单纯形法则是从满足对偶可行性条件出发通过迭代逐步搜索原始问题的最优解。
在迭代过程中始终保持基解的对偶可行性,而使不可行性逐步消失。
关键词:
极大极小;对偶单纯形法;单纯形法;
Abstract
InMinimaxdualitytheory,weseekbetweentheoriginalproblemandthedualproblemofsolvingthedualsimplexmethodisaveryimportantonesolution.Thispaperdescribesthedualsimplexmethod,dualsimplexmethodalgorithmstructureissimple,easytousematlabprogramming.
Inthisexperiment,Ifirstanalysisofthedualsimplexmethod,understandingofthedualsimplexmethodforsolvingthedualprobleminstepsandexamplestosolve,andthenapplytotheideaofdualsimplexmethodofwritingcode,conductmatlabexamplessolvedanalyze,summarize.
Foralgorithmcomparison.Iputthedualsimplexmethodarecomparedwiththesimplexmethod,thefirststeptounderstandthesimplexmethodtosolvetheproblemsolvingprocessandexamples,andthenwritecodetoanalyzeanexample,lastanddualsimplexmethodforcomparison.
Bycomparison,Ifoundthesimplexmethodisfeasibletotheoriginalproblemfromoneiterationtoanotherfeasiblesolutionbysolution,untilthenumberoftestoptimalityconditionissatisfied.Dualsimplexruleofthumbistosatisfythedualfeasibilityconditionsfromthegradualdepartureoftheoriginalproblemthroughaniterativesearchfortheoptimalsolution.Remaininaniterativeprocessbasedsolutionsfordualfeasibility,leavingtheinfeasibilitygraduallydisappear.
Keywords:
minimax;Dualsimplexmethod;simplexmethod;
1、引言1
2、极大极小对偶理论的描述1
2.1对偶问题的描述1
2.2对偶问题的性质2
2.3对偶单纯形法3
3、数值实验4
3.1代码实现4
3.2算法测试5
3.3结果分析7
4、算法比较7
4.1单纯形法7
4.2算法实现7
4.3算法测试9
4.4算法比较10
5、总结10
5.1总结概括10
5.2个人感言11
6、参考文献11
1、引言
在计算对偶问题的各种算法中,对偶单纯形法(DualSimplexMethod)和单纯形法(SimplexMethod)是非常重要的两种。
1954年美国数学家C.莱姆基提出对偶单纯形法。
单纯形法是从原始问题的一个可行解通过迭代转到另一个可行解,直到检验数满足最优性条件为止。
对偶单纯形法则是从满足对偶可行性条件出发通过迭代逐步搜索原始问题的最优解。
在迭代过程中始终保持基解的对偶可行性,而使不可行性逐步消失。
设原始问题为
,则其对偶问题(DualProblem)为
。
在原来的单纯形表中进行迭代时,前提要求右端项
(基可行解),迭代过程中在
列中得到的是原问题的基可行解,在检验数行得到的是对偶问题的基解。
当检验数行也是对偶问题的基可行解时,原问题与对偶问题都得到最优解。
可知,对偶单纯形法原理:
根据对偶问题的对称性,保持对偶问题的解是基可行解,即
,同时取消对解答列元素非负的限制,在原问题非可行解的基础上,通过逐步迭代得到基可行解,这样就得到了最优解。
2、极大极小对偶理论的描述
2.1对偶的描述
一、对偶问题的提出
现有甲乙两种原材料生产A,B两种产品,所需的原料,甲乙两种原料的可供量,以及生产A,B两种产品可得的单位利润见表。
问如何安排生产资源使得总利润最大?
解:
设生产A为
单位,生产B为
单位,则线性规划问题为:
s.t.
另一方面,假设另一公司想把资源买过来,它至少应付出多大代价才能使原来公司放弃生产,出让资源?
解:
设甲资源的出让单价为
乙资源的出让单价为
s.t.
二、对称形式下对偶问题的一般形式
定义:
变量均为非负约束的情况下,约束条件在目标函数取极大值时均取“≤”号;当目标函数求极小值时均取“≥”号,称此线性规划问题具有对称形式
结论:
对偶问题的对偶就是原始问题。
两个问题中的任一个都可以作为原始问题,另一个就是它的对偶问题。
2.2对偶问题的性质
单纯形法是从原始问题的一个可行解通过迭代转到另一个可行解,直到检验数满足最优性条件为止。
对偶单纯形法则是从满足对偶可行性条件出发通过迭代逐步搜索原始问题的最优解。
在迭代过程中始终保持基解的对偶可行性,而使不可行性逐步消失。
考虑如下对偶问题:
原始问题对偶问题
1.弱对偶性
推论:
(1)原问题任一可行解的目标函数是其对偶问题目标函数值的下界;反之对偶问题任一可行解的目标函数是其原问题目标函数的上界。
(2)如原问题有可行解且目标函数值无界,则其对偶问题无可行解;反之对偶问题有可行解且目标函数无界,则原问题无可行解。
(对偶问题无可行解时,其原问题无界解或无可行解。
(3)若原问题有可行解而其对偶问题无可行解时,原问题目标函数无界。
(4)若对偶问题有可行解而其原问题无可行解时,对偶问题目标函数无界。
2.最优性
3.强对偶性(对偶性定理)
若原问题和对偶问题均具有可行解,则二者均具有最优解,且它们的最优解的目标值相等。
4.互补松弛定理
在线性规划的最优解中如果对应某一约束条件的对偶变量的值为非零,遮盖月初条件去严格等式;反之如果约束条件取严格不等式则其对偶变量一定为零。
2.3对偶单纯形法
对偶单纯形法适用的情况:
设有问题:
又设B是其一个基,当非基变量都为0时,可以得到XB=B-1b。
若在B-1b中至少有一个负分量,并且在单纯形表的检验数行中的检验数都为非正,这种情况就可以用对偶单纯形法来进行求解。
对偶单纯形法的计算步骤:
step1.确定初始解
求初时基可行解,列出初始单纯性表(一般取松弛变量为基变量);若所有检验数
≤0,且所有的基变量值均≥0,则此解为线性规划问题的最优解;若存在基变量的值≤0,则问题还没有达到最优解,则进行如下计算;
step2.改进
选择换出变量:
假设选取
为换出变量;
选择换入变量:
假设
为换入变量;
step3.迭代使得
=1,其余
为0。
3、数值实验
3.1代码实现
对偶单纯形法
M文件
function[ x, z] = dsimplex( A0 , b0 , c0)
[m,n] = size(A0) ;
p = n + 1:
n + m;
nb = n + m + 1;
Ab = [-A0,eye(m),-b0];
c = [c0,zeros(1,m)];
w = -c;
iter = 0;
[br,r] = min(Ab(:
nb));
while( br< 0)
iter = iter + 1;
ar = Ab(r,:
) ;xs = inf;f1ag = 0;
for i = 1:
n
if ar(i)<0
t = w(i)/ar(i);
if t xs = t;s = i;
end
end
end
if xs == inf
flag = inf; break;
end
p(r) = s;Ab(r,:
) = Ab(r,:
)/Ab(r,s);
for i = 1:
m
if i~= r
Ab(i,:
)=Ab(i,:
)-Ab(i,s)*Ab(r,:
);
end
end
w = w-w(s)*Ab(r,1:
n+m);
[br,r] = min(Ab(:
nb));
end
x = zeros(m+n,1);
for i = 1:
m
x(p(i)) = Ab(i,nb);
end
z = c*x;
x = x(1:
n);
3.2算法测试
min=8*x1+10*x2+7*x3+6*x4+11*x5+9*x6
12*x1+9*x2+25*x3+20*x4+17*x5+13*x6>=60;
35*x1+42*x2+18*x3+31*x4+56*x5+49*x6>=150;
37*x1+53*x2+28*x3+24*x4+29*x5+20*x6>=125;
其中x>0,x<=1
回答
解法1:
调用linprog
f = [8;10;7;6;11;9];
lb = zeros(6,1);
ub = ones(6,1);
Aeq1 = [12 9 25 20 17 13];
Aeq2 = [35 42 18 31 56 49];
Aeq3 = [37 53 28 24 29 20];
Aeq = [-Aeq1;-Aeq2;-Aeq3];
beq = [-60;-150;-125];
[x,fval] = linprog(f,[],[],Aeq,beq,lb,ub)
结果为 :
x =
1.0000
0.6227
0.3435
1.0000
0.0476
1.0000
fval = 32.1546
解法2:
对偶单纯形法
1 将3.1代码保存为M文件;
2 再在命令窗口输入:
f = [8;10;7;6;11;9];
lb = zeros(6,1);
ub = ones(6,1);
Aeq1 = [12 9 25 20 17 13];
Aeq2 = [35 42 18 31 56 49];
Aeq3 = [37 53 28 24 29 20];
Aeq4 = eye(6);
Aeq = [-Aeq1;-Aeq2;-Aeq3;Aeq4];
beq = [-60;-150;-125;ub];
A = Aeq;
c0 = f';A0 = -A;b0 = -beq;
[x,z] = dsimplex(A0,b0,c0)
结果为 :
x =
1.0000
0.6227
0.3435
1.0000
0.0476
1.0000
z = 32.1546
3.3结果分析
调用linprog或使用对偶单纯形法的M文件都可以得到最优解。
4、算法比较
4.1单纯形法
单纯形法,求解线性规划问题的通用方法。
单纯形是美国数学家G.B.丹齐克于1947年首先提出来的。
它的理论根据是:
线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。
顶点所对应的可行解称为基本可行解。
单纯形法的基本思想是:
先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。
因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。
如果问题无最优解也可用此法判别。
单纯形法计算步骤
step1将所给问题化为标准形式
step2找一个初始可行基,求出典式和检验数
step3求
step4如果
则该基可行解就是最优解停止;否则转step5;
step5如果
,则问题无最优解,停止;否则转step6
step6求
step7以
替代
得到一个新的基,转step2;
4.2算法实现
function[x,f]=DCmin(c,A,b,AR,y0,d)
%x:
最优解
%f:
目标函数最优值
%c:
目标函数系数向量
%A:
系数矩阵
%b:
m维列向量
%AR:
松弛变量系数矩阵
%y0:
基矩阵初始向量
%d:
补充向量(非目标系数向量,为一零向量)
N=10000;
B=[A,AR,b];
[m,n]=size(B);
C=[c,d];
y=y0;
x=zeros(1,length(c));
fork=1:
N
k;
z=B(:
end);%右端
forj=1:
n-1
t(j)=y*B(:
j)-C(j);%检验数
end
t;
f=y*z;
%%========选取主元==========%%
%---------选取主列---------%
[alpha,q]=max(t);
q;
W(k)=q;%x下标矩阵
%-------------------------%
%--------选取主元----------%
forp=1:
m
ifB(p,q)<=0
r(p)=N;
elser(p)=z(p)/B(p,q);
end
end
[beta,p]=min(r);
p;
y(p)=C(q);
%-------------------------%
%%==========================%%
B(p,:
)=B(p,:
)/B(p,q);
fori=1:
m
ifi~=p
B(i,:
)=B(i,:
)-B(p,:
)*B(i,q);
end
end
ifmax(t)<=0
break;
end
B;
end
%++++++++++++++++++++++++++++++++++++++%
Z=B(:
end);
iflength(x(W))~=length(Z)
x=char('NONE');
f=char('NONE');
disp('不存在有限最优解');
elsex(W)=Z';
end
4.3算法测试
用单纯形方法解下列问题
引进松弛变量x
x
问题标准化:
(i)输出命令:
>>c=[1-21];A=[11-21;2-140;-12-40];b=[10;8;4];AR=[00;10;01];y0=[000];d=[000];
>>[x,f]=DCmin(c,A,b,AR,y0,d)
(ii)运行结果:
B=
11-210010
2-140108
-12-40014
k=
1
t=
-12-1000
f=
0
B=
1.5000001.00000-0.50008.0000
1.500002.000001.00000.500010.0000
-0.50001.0000-2.0000000.50002.0000
k=
2
t=
00300-1
f=
-4
B=
1.5000001.00000-0.50008.0000
0.750001.000000.50000.25005.0000
1.00001.0000001.00001.000012.0000
k=
3
t=
-2.2500000-1.5000-1.7500
f=
-19
x=
0125
f=
-19
4.4算法比较
单纯形法是是保证
≥0,通过转轴,使得检验数
≥0来求得最优解,而使用对偶单纯形法的前提是
≥0,通过转轴,使得达到
≥0。
二者都是
≥0,
≥0同时满足时达到最优。
在灵敏度分析时,对
的灵敏度分析用单纯形法来考察,因为此时
变动导致检验数变动。
而
的变动则是用到对偶单纯形法来求解检验。
5、总结
5.1总结概括
求解最优问题是一个艰难而具有挑战性的过程,最优化方法是近几十年形成的一门运用数学方法研究各种系统的优化途径及方案,为决策者提供科学决策的依据的学科,它涵盖了无约束最优化问题、凸集与凸函数、等式约束最优化问题和不等式约束最优化问题等知识点。
本次课程设计,我通过老师的点拨以及激烈的讨论,对该门课程中的对偶问题进行了一定程度地了解和研究。
过程中,我们运用对偶单纯形法进行处理。
我们从理论的来源、推导过程出发进行深入。
美国数学家C.莱姆基提出对偶单纯形法。
单纯形法是从原始问题的一个可行解通过迭代转到另一个可行解,直到检验数满足最优性条件为止。
对偶单纯形法则是从满足对偶可行性条件出发通过迭代逐步搜索原始问题的最优解。
在迭代过程中始终保持基解的对偶可行性,而使不可行性逐步消失。
之后,我们还实现了MATLAB程序实现的效果。
我们对问题进行数值求解时,采用了大量的数据实例进行验证、对比,并且选择了较有代表性的几例编入我们的课程设计论文当中。
最后,我们还将该方法与处理单纯形法在算法和程序上的进行了比较,更进一步地加深了对它的理解也提高了处理该问题的水平能力。
5.2个人感言
通过本次试验,我学会了应该怎么从一个问题出发,对该问题进行研究:
首先要对问题有一个大概的了解,通过查阅资料,对问题有了深入了解,然后确定问题的研究方向,以及要研究方向所需要进行的工作,然后一步步去完成,如:
在研究对偶单纯形法的时侯,我了解到,对偶单纯形法的适用范围很广,其算法也有很多研究方向。
结合所学知识,确定了研究方向,进行深入研究,通过分工合作,完成本次课程设计。
对偶单纯形法与单纯形法的算法比较,了解两个算法后,进行实例分析得出两者区别。
6、参考文献:
[1].最优化理论与算法[M].北京:
清华大学出版社,2005.
(注:
本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)