基于MAAB的多变量优化问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB 的多变量
优化问题
小组成员:刘浩李莲喜骆开荣刘晓康学号:S1402W011、7 S1402W014、3 S1402M0005、S1402W0246
MATLAB 在多变量优化问题的应用
【摘要】实际生活中我们有许多地方需要用到数学中的一些最值运算,而有些问题我们无法进行计算,因此就有了优化设计理论这门学科,优化理论是一门实践
性很强的学科,广泛应用于生产管理、军事指挥和科学试验等各种领域,为了更好的学习这门课程,为我们所用,MATLAB 优化工具箱提供了对各种优化问题的一个完整的解决方案,可用于解决工程中的最优化问题,包括非线性方程求解、极小值问题、最小二乘问题等。
一、问题的提出
MATLAB 具有强大的科学计算与视化功能、简单易用、开放式的可扩展环境,编写简单,编程效率高,易学易懂,将MATLAB 应用到解决最优化问题的模块中学习,利用客观、视图、计算等功能对最优化问题模块做出最简洁有效的解答。
二、在多变量优化问题的应用
1.问题一:运用MATLAB 软件编写多变量优化问题求解
采用的算法:牛顿法
程序框图:
目标函数图形:
MATLAB 程序:
clear
x=-10:0.5:10;
y=x;
[X,Y]=meshgrid(x,y);
Z=(X-4)A2+(Y+2)A2+1;
surf(X,Y,Z)
syms t s;
f=(t-4)A2+(s+2)A2+1;
[x,mf]=minNT(f,[-1 5],[t s])
function [x,minf]=minNT(f,x0,var,eps)
format long;
if nargin==3
eps=1.0e-6;
end
tol=1;
x0=transpose(x0);
while tol>eps
gradf =-jacobian(f,var); jacf=jacobian(gradf,var); v=Funval(gradf,var,x0);
tol=norm(v); pv=Funval(jacf,var,x0); p=-inv(pv)*transpose(v); x1=x0+p;
x0=x1;
end x=x1;
minf=Funval(f,var,x);
format short;
function fv = Funval(f,varvec,varval) var = findsym(f);
varc = findsym(varvec);
s1 = length(var);
s2 = length(varc);
m =floor((s1-1)/3+1);
varv = zeros(1,m);
if s1~= s2
for i=0: ((s1-1)/3)
k = findstr(varc,var(3*i+1));
index = (k-1)/3;
varv(i+1) = varval(index+1); end
fv = subs(f,var,varv);
else
fv = subs(f,varvec,varval);
end
运行结果:x*=[4, -2] f (x*)=1 2.问题二:运用MATLAB 软件编写多变量优化问题求解采用的算法:修正牛顿法
目标函数图形:
MATLAB 程序:
clc clear
x0=[-1 5]';
[x,val,k]=revisenm( 'fun','gfun','Hess,'x0) x=-10:0.5:10; % 生成函数图形y=x;
[X,Y]=meshgrid(x,y);
Z=X.A3+(X-4).A2+(Y+2).A2+1;
surf(X,Y,Z)
function f=fun(x) f=x(1)A3+(x(1)-4)A2+(x(2)+2)A2+1;
function g=gfun(x) g=[3*(x(1)A2)+2*(x(1)-4),2*(x(2)+2)]';
function He=Hess(x) n=length(x);
He=zeros(n,n);
He=[6*x(1)+2, 0;
0, 2 ];
function [x,val,k]=revisenm(fun,gfun,Hess,x0) n=length(x0); maxk=150;
rho=0.55;sigma=0.4; tau=0.0;
k=0; epsilon=1e-5; while (k gk=feval(gfun,x0); % 计算梯度muk=norm(gk)A(1+tau); Gk=feval(Hess,xO); % 计算Hesse车Ak=Gk+muk*eye(n); dk=-Ak\gk; %解方程组Gk*dk=-gk, 计算搜索方向 if(norm(gk) m=O; mk=O; while(m<20) %用Armijo搜索求步长 if(feval(fun,xO+rhoAm*dk) end m=m+1; end x0=x0+rhoAmk*dk; k=k+1; end x=x0; val=feval(fun,x); 运行结果:x*=[1.3333, -2] f (x*)=10.4815 三、结论 MATLAB 的应用范围非常广,除了在优化问题中的应用之外,它还包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。扩展了MATLAB 环境。以解决这些应用领域内特定类型的问题。可以看出通过以上两个例子,对优化问题做出了合理的解决。 四、心得 经过几周的优化理论与设计课程的学习,发现忘记了一些基本的优化知识,而后对这方面的知识进行加深,优化算法在今后的学习和论文撰写中将会常常用到。本门课程学习到了一些常用算法、EXCEL 优化以及MATLAB 优化等,通过小组成员的讨论和分工合作,完成了两份大作业,总之,本次课程收获很多,意义颇深,同时感谢徐老师和张老师细心教导,对您的感激千言万语也无法表达,对您的祝福百十万年也不会改变-- 老师,祝您万事如意!