1、一维优化问题一维优化问题一维优化问题的数学模型为:一维优化问题的数学模型为:21)(minxxxxf 在matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd来实现的。具体的调用格式如下:调用格式1:X=fminbnd(FUN,x1,x2)这种格式的功能是:返回在区间(x1,x2)中函数FUN最小值对应的X值。调用格式2:X,FVAL=fminbnd(FUN,x1,x2)这种格式的功能是:同时返回解x和在点x处的目标函数值。案例n如图,有一块边长为6m的正方形铝板,四角截去相等的边长为x的方块并折转,造一个无盖的箱子,问如何截法(x取何值)才能获得最大容器的箱子,只写出这
2、一优化问题的数学模型。用matlab软件的优化工具箱求解。根据题意,该无盖箱子的长和宽均为6-2x,高为x,取设计变量x根据长方体容积表达式,得:建立约束优化问题数学模型得Matlab程序一:x,xfval=fminbnd(-x*(6-2*x)2,0,3)003.)26(min212xgxgtsxxxfMatlab程序二:首先编写m文件function f=volf(x)f=-(6-2*x)2*x然后,调用fminbnd函数求解X,FVAL=fminbnd(volf,0,3)无约束非线性规划问题无约束非线性规划问题在MATLAB优化工具箱函数中,有以下两个函数用来求解上述问题:fminunc、
3、fminsearchfminunc 调用格式1:X=fminunc(FUN,X0)这种格式的功能是:给定起始点X0,求函数FUN的局部极小点X。其中,X0可以是一个标量、向量或者矩阵。调用格式2:X,FVAL=fminunc(FUN,X0)这种格式的功能是:同时返回解x和在点x处的目标函数值。1.求函数F=sin(x)+3的最小值点。function f=demfun(x)f=sin(x)+3然后,在命令窗口中输入:X=fminunc(demfun,2)得到X=4.7124求函数 的极小点。在命令窗口中 输入X=fminunc(x)5*x(1)2+x(2)2,5;1)x=1.0e-006*-0
4、.7898 -0.070222215xxy2.fminsearchfminsearch使用单纯形法,一种直接搜索的方法。调用格式1:X=fminsearch(FUN,X0)这种格式的功能是:给定起始点X0,求函数FUN的局部极小点X。其中,X0可以是一个标量、向量或者矩阵。调用格式调用格式2 2:X,FVAL=X,FVAL=fminsearch(FUN,X0)(FUN,X0)这种格式的功能是:同时返回解x和在点x处的目标函数值。局限性:(1)应用该函数可能会得到局部最优解。(2)该函数只对实数进行最小化。如果x为复数时,必须将它分为实数部和虚数部。求解函数求解函数 的最小值点。的最小值点。22
5、21321311042xxxxxxy方法一:直接在MATLAB命令窗口中输入:x0,fval=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2,0,0);方法二:在MATLAB的M编辑器中建立函数文件用来保存所要求解最小值的函数:function f=demfun1(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为demfun1.m。然后,在命令窗口中调用该函数,这里有两种调用方式:调用方式一:在命令窗口中输入:x,fval=fminsearch(demfun1,0,0)调用方式二:在命令窗口中输
6、入:x,fval=fminsearch(demfun1,0,0)得到的结果X=1.0016 0.8335Fval=-3.32411.线性规划线性规划约束优化问题约束优化问题f=-7;-5;A=3,2;4,6;0,7;b=90;200;210;lb=zeros(2,1);x,fval=linprog(f,A,b,lb)调用linprog函数2 一般的约束非线性最优化问题一般的约束非线性最优化问题约束非线性最优化是指目标函数和约束函数都是定义在约束非线性最优化是指目标函数和约束函数都是定义在n维欧维欧几里得空间上的实值连续函数,并且至少有一个是非线性的。几里得空间上的实值连续函数,并且至少有一个是
7、非线性的。X=fmincon(fun,x0,A,B,Aeq,Beq,LB,UB,NONLCON)这个函数格式同上,同时,约束中增加由函数NONLCON定义的非线性约束条件,在函数NONLCON的返回值中包含非线性等式约束Ceq(X)=0和非线性不等式C(X)x0=1,10;lb=0,0;ub=20,90;x,fmin=fmincon(fun1,x0,lb,ub)符号表示法fun=-(20-2*x(1)*x(1)*sin(x(2)*pi/180)-x(1)2*sin(x(2)*pi/180)*cos(x(2)*pi/180);x0=1,10;lb=0,0;ub=20,90;xopt,fopt=fminsearch(fun,x0)xopt=6.6667 60.0001fopt=-57.7350