资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五节 最优化工具箱,5,.1,最优化工具箱概述,5.2,主要构成函数,5.3 MATLAB,帮助系统,5.1,最优化工具箱概述,最优化工具箱是用于解决最优化问题的一种工具箱,对于当前使用的各种最优化策略问题,都可以得到一个较为合理的解。,在实际应用中,大部分的问题都得不到一个准确的解,但可以得到一定条件下的最优解,来代替准确解应用。,最优化工具箱查看方式:,1,、在命令窗口中输入:,help optima,2,、选择,help,菜单项,MATLAB help,项,打开,MATLAB,帮助,找到,Optimization Toolbox(,最优化工具箱,),5.2,主要函数,linprog,线性规划,quadprog,二次规划,fminunc,无约束非线性规划,fmincon,约束非线性规划,fminimax,最大最小问题,fminbnd,无约束一元函数极小问题,fseminf,半无穷条件下的非线性规划,fsolve,非线性方程求解,lsqnonlin,非线性最小二乘解,lsqnonneg,非负最小二乘解,fgoalattain,目标规划,优化问题:现在有甲,乙两人推销,A,,,B,两种货物,货物单价及利润如下表,问如何销售才能使销售的总利润最高。,总量,(,吨,),原价,(,每吨,),甲,乙,实际价格,(,每吨,),利润,实际价格,(,每吨,),利润,A,10,25,30,5,26,1,B,20,39,43,4,50,11,数学模型:,设甲卖,A,和,B,分别为,x1,和,x2,吨,乙分别卖,x3,和,x4,吨。,线性规划,linprog,线性规划问题:目标函数和,约束函数都是线性函数。,求解问题应化为标准形式:,其中:,f,为系数向量,,x,为变量,A,为不等式约束系数矩阵,b,为不等式约束值,Aeq,为等式约束系数矩阵,beq,为等式约束值,LB,为最优解的下限,UB,为最优解的上限,函数调用格式,(,输入参数,),1,、最简形式:只有不等式约束,:,x=,linprog(f,A,b,),2,、又包含了等式约束,:,x=,linprog(f,A,b,Aeq,beq,),3,、又包括了解的上下限的约束,:,x=,linprog(f,A,b,Aeq,beq,LB,UB,),4,、定义了搜索点初值,x,0:,x=linprog(f,A,b,Aeq,beq,LB,UB,x0),函数调用格式,(,输出参数,),1,、最简形式,只有最优解,x*,输出,x=,linprog(f,A,b,),2,、添加最优值,fval,输出,(,fval,=,f,T,x,*),x,fval,=,linprog(f,A,b,),3,、添加退出参数输出,exitflag,x,fval,exitflag,=,linprog(f,A,b,),exitflag,0,存在并收敛到最优解,exitflag,=0,达到最大迭代次数未收敛,exitflag,0,存在并收敛到最优解,exitflag,=0,达到最大迭代次数未收敛,exitflag,0,存在并收敛到最优解,exitflag,=0,达到最大迭代次数未收敛,exitflag,0,存在并收敛到最优解,exitflag,=0,达到最大迭代次数未收敛,exitflag,0,存在并收敛到最优解,exitflag,=0,达到最大迭代次数未收敛,exitflag,0,没有最优解或算法失败,习题:,试求,f=f1(x)f2(x)f3(x)f4(x)f5(x),的极大极小解,其中:,f1(x)=2x,1,2,+x,2,2,-48x,1,-40 x,2,+304,f2(x)=-x,1,2,-3x,2,2,f3(x)=x,1,+3x,2,-18,f4(x)=,-x,1,-x,2,f5(x)=x,1,+x,2,8,解:,1,、函数:,function f=,myfun(x,),f(1)=2*x(1)2,+x(2)2,48*x(1)-40*x(2),+304,f(2)=-x(1)2,-3*x(2)2,f(3)=x(1),+3*x(2),-18,f(4)=,-x(1)x(2),f(5)=x(1)+x(2),8,2,、,X0=0.1;0.1,x,fval,=fminimax(myfun,x0),x=4.000,4.000,fval,=0.0000-64.0000-2.0000-8.0000-0.0000,其他函数用法:,fminbnd,fminbnd,无约束一元函数极小问题,解决问题:,用法:,x,fval,exitflag,=fminbnd(fun,x1,x2),试求,sin(x)+3,在,3,4,之间的最小值,1,、编辑函数文件,myfun.m,function y=,myfun(x,),y=sin(x)+3;,2,、,x=fminbnd(myfun,3,4),或,x=fminbnd(myfun,3,4),或,x=fminbnd(sin(x)+3,3,4),其他函数用法:,fsolve,fsolve,非线性方程求解,解决问题:,F(x,)=0,用法:,x,fval,exitflag,=fsolve(fun,x0),x,fval,exitflag,=fsolve(fun,x0,p1,p2),其中,p1,p2,为,fun,的附加输入参数。,也可以使用符号运算中的函数,solve,:,如解,sin(x,)+exp(-2*x)=0,syms,x,f=,sin(x,)+exp(-2*x),solve(f,),举例,1,:,试求,sin(x)+3=0,的值,1,、编辑函数文件,myfun.m,function y=,myfun(x,),y=sin(x)+3;,2,、,x=fsolve(myfun,0),起始点为,x0,或,x=fsolve(myfun,0),或,x=fsolve(sin(x)+3,0),举例,2,:,求解方程组,2*x1-x2=exp(-x1),-x1+2*x2=exp(-x2),解法:,1,、编辑函数文件,myfun.m,function f=,myfun(x,),f(1)=2*x(1)-x(2)-exp(-x(1);,f(2)=-x(1)+2*x(2)-exp(-x(2);,2,、,x0=-5 -5,3,、,x,fval,=,fsolve,(myfun,x0),结果:,x=0.5671 0.5671,fval=1.0e-006*-0.4059 -0.4059,举例,3,:,试求解方程,X*X*X=1 2;3 4,的解。,1,、编辑函数文件,myfun.m,function F=,myfun(X,),F=X*X*X-1,2;3,4;,2,、在命令窗口中输入:,x0=1 1;1 1;,x,fval,exitflag,=fsolve(myfun,x0),3,、,x=-0.1291 0.8602;1.2903 1.1612,fval=1.0e-009*-0.1619 0.0775;0.1159 -0.0470,exitflag=1,5.3,最优化工具箱帮助系统,1,、选择,help,菜单项中,MATLAB help,选项,2,、选择,Optimization Toolbox(,最优化工具箱,),3,、选择,function,列表项,选择关心的函数,点击函数会给出函数的详细注释,并给出简单的典型应用实例。,
展开阅读全文