实验二无约束最优化.docx
6页实验无约束最优化【实验目的】1. 了解无约束最优化方法的一些基本概念2. 熟悉掌握用相关的命令来求解无约束最优化问题实验内容】把题目和相应的完整命令写在实验报告上1:无约束最优化问题实际上是什么问题?求这类问题的最优解 的基本思路是什么?2:求f (x)二ex - 5x在区间[1,2]内的极小值点和极小值3:已知 f (x「x2,x3) = x: 3sin x2 - 1) 求f(Xi,x2, x3)在点(1,-1,0)附近的极小值;(2) 求f(X1,X2,X3)在点(1,- 1,0附近的极小值点和极小值,要 求优化算法用大范围优化算法,搜索方向用拟牛顿法的DFP公式相关知识说明】无约束最优化是指在没有约束条件下,求多变量实值函数极 值无约束最优化问题的数学表达式为min f (x),必(x1, x2A ,xn) Rn一般f为非线性函数,x是n维实变量,实际上这是一个多元函数无 条件极值问题由于求极大值问题,可以用添加负号的方式转化为求极 小值问 题,因此通常只讨论求极小值问题应该注意的是,极值问题 的解,即极值点,都是局部最优解,全局最优解只 能从局部最 优解的比较中得到如何求解无约束最优化问题的最优解呢?一般是 采用迭代法,即先选择一个初始点,再寻找该点处的下降方向(我们称为搜索方向),在该方向上求极小点,得到一个新的点,然后在新点处再寻找下降方向和在该方向上的求极小点,……,如此下去,最终得我们先来看求一元函数 y=f(x)在 [x1,x2]内的极小值的命令:x=fminbnd('fun',x1,x2)说明:其中'fun'是函数f(x)的表达式,当然也可以是关于f(x)的函数M-文件名。
返回值x是极小值点现在我们来回答问题 1问题1:求f(x)二 2jxsinx在区间[0,6]内的极小值点和极小 值.命令如下f='2*exp(-x)*sin(x)';x=fminbnd(f,0,6) %极小值点fval=2*exp(-x)*sin(x) %对应 x 的极小值大家得到的结果是什么呢?这些是一元函数求极值,那么怎么求多元函数的极值呢?可以用下面的最简形式的命令:x=fminunc('fun',xO)如果还必须满足更苛刻的要求,可以用下面的命令[x,options]=fminunc('fun',xO,options)说明:(1)返回值中,x是极小值点如果需要相应的极小值, 可以用fval=fun(x)即可2) 这里'fun'必须是事先定义的函数 M-文件,M-文件的(3) x0是迭代初值问题 2:已知 f (x「x2) = 4x; x ; - x3x2o(1) f(Xi,X2)在点(1,2)附近的极小值;⑵求f (xi5X2)在点(1,2)附近的极小值点和极小值,要求要求用大 型优化算法,搜索方向用拟牛顿法的 DFP公式,精度为10巴并给出迭代次数.首先,建立M-文件,文件名取函数名 myfun.mofunction f=myfun(x)f=4*x(1)A2+x(2)A2-x(1)A3*x(2)对于第一问,比较简单,直接应用上面命令的最简形式即可,如下。
x0=[1,2]; %取点(1,2)为迭代初值x=fminunc('myfun',x0);fval=myfun(x)命令如下 x0=[1,2];x对于第二问,首先求出梯度:syms x1 x2;f='4*x1A2+x2A2-xM3*x2 ';J=jacobian(f,[x1,x2])得到梯度向量:J = [ 8*x1-3*x1A2*x2, 2*x2-x1A3]其次,定义目标函数和梯度的m文件myfunl.m: function [y,Gy]=myfun1(x) y=4*x(1)A2+x(2)A2-x(1)A3*x(2); Gy=[8*x (1 ) -3*x (1) A2*x (2), 2*x(2) -x(1) A3];最后,编入命令:x0=[1,2];opt=optimset; % 为了方便将 optimset 返回为 optopt.Display='iter'; % 显示所有迭代过程 opt.Tolx=1e-6;opt.TolFun=1e-6; %设置自变量和因变量的容量opt.HessUpdate='dfp'; % 设置搜索方向opt.GradObj=' on:opt.LargeScale=' on:[x,fval,exitflag,output]=fmi nun c ('myfu n1',xO,opt)大家分别运行上面的命令,看看相应的答案是什么?类似fminunc,我们还有一个命令fminsearch,用法几乎一样, 与fminunc不同的仅有两点:(1)fminsearch使用的优化方法是单纯形法。
2) 'fun'可以是函数f (x)的表达式, 当然也可以是关于f (x)的函数M-文件名另外大家可以思考Rosebrock函数f (x1, x2)二 100 (x2 - x: ) 2 (V x1) 2试用不同算法(搜索方向和步长搜索)求最优极小值点和极 小值初 值为(-1.2,2)参看:ppt : Matlab优化工具箱使用方法)! !。





