最优化方法课程设计.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最优化方法
课程设计报告
2016 年6 月14 日
摘要
最优化理论和方法日益受到重视,已经渗透到生产、管理、商业、军事、决策等各个领域,而最优化模型与方法广泛应用于工业、农业、交通运输、商业、国防、建筑、通信、政府机关等各个部门及各个领域。

伴随着计算机技术的高速发展,最优化理论与方法的迅速进步为解决实际最优化问题的软件也在飞速发展。

其中,MATLAB^件已经成为最优化领域应用最广的软件之一。

有了MATLA这个强大的计算平台,既可以利用MATLA优化工具箱(OptimizationToolbox )中的函数,又可以通过算法变成实现相应的最优化计算。

关键词:优化、线性规划,黄金分割法、最速下降法、MATLA、B 算法
Abstract
Optimization theory and methods and more attention, have penetrated into the production, management, business, military, decision-making and other fields, and optimization models and methods widely used in industry, agriculture, transportation, commerce, defense, construction, students, government various departments and agencies and other fields. With the rapid development of computer technology, optimization theory and methods for the rapid progress of the optimization problem to solve practical software is also developing rapidly. Which, MATLAB software has become the most optimization software is one of the most widely used. With this powerful computing platform MATLAB,either using MATLAB optimization toolbox (OptimizationToolbox) in the function, but also can achieve the appropriate algorithm to optimize into the calculation.
Key words: Optimization、Golden section method、steepest descent method、MATLAB、algorithm
第一章单纯形算法的基本思想与原理
1.1单纯形算法的基本思路
单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。

因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。

如果问题无最优解也可用此法判别。

求解步骤:
(1)确定初始基可行解
①从线性规划标准形的系数矩阵中能直接找出m个线性独立的单位向量;
②对约束条件全为“ <=”连接的LP,化为标准形,左端添加松弛变量后即形成一个单位子矩阵;
③约束条件中含有“ <=”或“=”连接的方程,在插入剩余变量后找不到单位矩阵,则必须采用“人造基”法,也称“人工变量”法。

(2)最优性检验及解的判别准则
①最优性判定准则
②多重最优解判定准则
③无界最优解判定准则
(3)换基迭代
①确定换入变量
②确定换出变量
③枢运算(旋转运算)
1.2
求出一个初始基本可行解
判断得到基本可行解是否最优纟占束杏创
胡^—
1.3用matlab编写源程序
Function] x,f]=zuiyouhua(A,b,c)
Size(A)=[m, n];
i=n+1: n+m;
N=1: n;
B=eye(m,m);
xb=b';
xn=zeros(m,1);
f1=0;
w=zeros(1,m);
z=-c;
flag=1;
while(1)
[a,k]=max(z);
If a<=0
flag=0;
break
else
y=i nv(B)*A(:,k)
if y<=0
flag=0;
fprintf( '不存在最优解’)
break
end
t=fi nd(y>0);
[a,rl]=mi n(bl(t)/y(t)) r=t(rl);
i(:,k)=k
B(:,k)=A(:,k); cb=C(:,i); xb=i nv(B)*b; b0=xb;
x=zeros(1, n+m) x(:,i)=xb '
f=cb*xb z=cb* in v(B)*A-C; end
end
1.4单纯形算法应用举例线性规划问题:
min f (x) =0.1x「0.3x2 0.9x3 0% 1.1x5 0.2x6 0.8x7 1.4x8
"2论+x2+X3 +X4 3100
2x2+x3+3x s +2沧+X7 K100
St+x3+3x4+2x e +3x7+4X8 启100
X i X2,X3, X4,X5, X6, X7,X8
在matlab的命令窗口输入:
A=[2,1,1,1,0,0,0,0;021,0,3,2,1,0;1,0,1,3,0,2,3,4];
b二[100,100,100]'
c=[0.1,0.3,0.9,0,1.1,0.2,0.8,1.4];
[x,f]=zuiyouhua(A,b,c)
Matlab输出内容:
x=10 50 0 30 0 0 0 0
f=-16
第二章黄金分割法的基本思想与原理
2.1黄金分割法的基本思路
黄金分割法适用于[b,a]区间上的任何单股函数求极小值问题,对函数除要求“单峰”外不做其他要求,甚至可以不连续。

因此,这种方法的适应面非常广。

黄金分割法也是建立在区间消去法原理基础上的试探方法,即在搜索区间[a,b]内适当插入两点a1,a2,并计算其函数值。

a1,a2,将区间分成三段,应用函数的单峰性质,通过函数值大小的比较,删去其中一段,是搜索区间得以缩小。

然后再在保留下来的区间上作同样的处理,如此迭代下去,是搜索区间无限缩小,从而得到极小点的数值近似解。

2.2算法流程图
2.3用matlab编写源程序
a=input('请输入初始区间下端点:\na='); b=input('请输入初始区间上端点:\nb='); e=input('请输入计算精度:\ne=');
t=b-a;
while t>e
a仁a+0.382*(b-a);
a2=a+0.618*(b-a);
f1= questio n2(a1);
f2=questio n2(a2);
if f1<f2
b=a2;
else
a=a1;
end
t=b-a;
end
X1=(b+a)/2;
F仁questio n2(X1);
fprintf('最优解为:\nX 1=%8.6f,\nF1=%8.6f,X1,F1);
2.4黄金分割法应用举例
自定义函数:
fun cti on y=koko(x)
y=x*(x+2);
运行结果:
请输入初始区间下端点:
a=-3
请输入初始区间上端点:
b=5
请输入计算精度:
e=0.3
最优解为:
X仁-0.973876,
F仁-0.999318
第三章最速下降法的基本思想与原理
3.1最速下降法的基本思路
、. k k
最速下降法的基本思想是:从当前点x出发,取函数f(x)在点x处下降最快的方向
k
作为我们的搜索方向p .由f (x)的Taylor展式知
f (x k) - f (x k tp k) = f (x k)T p k o(|| tp k II )
略去t的高阶无穷小项不计,可见取p k= -if(x k)时,函数值下降得最多。

于是,我们可以构造出最速下降法的迭代步骤。

解无约束问题的的最速下降法计算步骤
第1步选取初始点x0,给定终止误差;0,令k > 0 ;
第2步计算 1 f(x k),若八f(x k)||_ :k
:,停止迭代•输出x •否则进行第三步;
第3步取p k=「小(x k);
第4步进行一维搜索,求t k,使得
f(x k t k P k Hmnin f(x k tp k)
令x k勺=x k t k p k, k^k 1,转第2步。

由以上计算步骤可知,最速下降法迭代终止时,求得的是目标函数驻点的一个近似点。

3.2算法流程图
3.3 用matlab 编写源程序function [R,n]=steel(x0,y0,eps) syms x;
syms y; f=(x-2)A2+(y-4)A2; v=[x,y];
j=jacobian(f,v); T=[subs(j(1),x,x0),subs(j(2),y,y0)];
temp=sqrt((T(1))A2+(T(2))A2); x1=x0;y1=y0;
n=0;
syms kk;
while (temp>eps)
d=-T;
f1=x1+kk*d(1);
f2=y1+kk*d(2); fT=[subs(j(1),x,f1),subs(j(2),y,f2)]; fun=sqrt((fT(1))A2+(fT(2))A2);
Mini=Gold(fun,0,1,0.00001); x0=x1+Mini*d(1);y0=y1+Mini*d(2);
T=[subs(j(1),x,x0),subs(j(2),y,y0)]; temp=sqrt((T(1))A2+(T(2))A2);
x1=x0;y1=y0; n=n+1;
end
R=[xO,yO]%调用黄金分割法:
function Mini=Gold(f,a0,b0,eps) syms x;format long;
syms kk;
u=aO+O.382*(bO-aO);
v=aO+O.618*(bO-aO);
k=O;
a=aO;b=bO; array(k+1,1)=a;array(k+1,2)=b;
while((b-a)/(bO-aO)>=eps)
Fu=subs(f,kk,u);
Fv=subs(f,kk,v); if(Fu<=Fv)
b=v;
v=u; u=a+O.382*(b-a);
k=k+1;
else %if(Fu>Fv)
a=u;
u=v; v=a+0.618*(b-a);
k=k+1;
end array(k+1,1)=a;array(k+1,2)=b;
end
Mini=(a+b)/2;
3.4 最速下降法应用举例
函数f=(x-2)A2+(y-4)A2;
在命令窗口输入[R,n]=steel(0,1,0.00001) 运行结果如下:
R =
1.999999999982811 3.999999999974216
R =
1.999999999982811 3.999999999974216
n =
2
第四章惩罚函数法的基本思想与原理
4.1 惩罚函数法的基本思路罚函数法求解带约束的非线形规划问题的基本思想是:利用问题的目标函数和约束函数构造出带参数的所谓增广目标函数,把约束非线形规划问题转化为一系列无约束非线形规划问题来求解。

增广目标函数由两个部分构成,一部分是原问题的目标函数,另一部分是由约束函数构造出的“惩罚”项,“惩罚”项的作用是对“违规”的点进行“惩罚” 。

罚函数法主要有两种形式。

一种称为外部罚函数法,或称外点法,这种方法的迭代点一般在可行域的外部移动,随着迭代次数的增加,“惩罚”的力度也越来越大,从而迫使迭代点向可行域靠近;另一种成为内部罚函数法,或称内点法,它从满足约束条件的可行域的内点开始迭代,并对企图穿越可行域边界的点予以“惩罚” ,当迭代点越接近边界,“惩罚”就越大,从而保证迭代点的可行性。

4.2 算法流程图
4.3用matlab编写源程序
global lamada % 主程序main2.m,惩罚数方法x0 = [1 1]; lamada = 2;
c = 10;
e = 1e-5;
k = 1;
while Iamada*q4_fu n2p(x0) >= e
x0 = fmin search('q4_fu n2min ',x0);
lamada = c*lamada;
k = k+1;
end
disp(' 最优解'),disp(x0)
K
function r = q4_fun2p(x)
% 罚项函数
r = ((x(1)-1)A3-x (2)*x(2))A2;
function r = q4_fun2min(x)
% 辅助函数
global lamada
r = x(1)A2+x(2)A2+lamada*q4_fu n2p(x);
4.4 惩罚函数法应用举例求解非线性规划问题:min (x1A2+x2A2) S.t. (x1-1)A3-x2A2=0 运行结果如下:最优解
1.000128150991651 -0.000001450717792 k =
33
第五章总结
通过这次课程设计,我又重新学习了一遍最优化方法,加深了对单纯形法、0.618 法,最速下降法以及罚函数的认识与理解。

通过用MATLAB来编写程序,也重新学习并掌握了函
数的编程格式。

在此次课程设计中我也学到了很多,真正做到了理论和实践相结合,锻炼了自己处理实际问题的能力,也认识到了自己的不足。

参考文献
1]赵瑞安,吴方.非线性最优化理论和方法. 北京: 高等教育出版社,1900
2]袁亚湘,孙文瑜. 最优化理论与方法. 北京:科学出版社,1997。

相关文档
最新文档