MATLAB优化函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二次规划 约束极小 (非线性规划) 达到目标问题
s.t. Ax<=b Min F(X) s.t. G(X)<=0 Min r s.t. F(x)-wr<=goal Min max {Fi(x)}
X {Fi(x)}
极小极大问题
s.t. G(x)<=0
2) 优化函数的输入变量
使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:
Aeq( X ) beq
的优化工具箱函数。
它的语法说明如下: [x,fval,exitflag,output,lambda,grad,hession]= fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub, ‘Nlc’,options,P1,P2,…) 其中,输入参数有: x是返回目标函数的最优解; fval是返回目标函数在最优解x点的函数值; exitflag是返回算法的终止标志; output是返回优化算法的信息的一个数据结构; grad是返回目标函数在最优解x点的梯度; hessian是返回目标函数在最优解x点的hessian矩 阵值。
解:1、建立优化设计的 数学模型 2h 管道截面周长 s c sin
由管道截面面积 A ch h 2 cot 64516 得到底边长度关系式 64516 h 2 cot 64516 c h cot h h
将它代入式管道截面周长的关系式中,得到
用Matlab解约束极小值问题 fmincon
fmincon是求解多维约束优化问题
min f ( X ) s.t. : AX b C(X) 0 Ceq(X) 0 Lb X Ub
(线性不等式约束 ) (线性等式约束 ) (非线性等式约束 ) (边界约束) (非线性不等式约束 )
输入参数有:
fun是调用目标函数的函数文件名; x0是初始点;options是设置优化选项参数,包 括有18个元素,用以在计算时控制精度要求、 输出形式、算法选择、迭代次数、梯度等重要 问题。可用空矩阵符号“[ ]”表示它的默认值; P1、P2等是传递给fun的附加参数。
例 已知梯形截面管道的参数是:底边长度为 , 高度为 ,面积 A ,斜边与底边的夹角 64516 m2 m h c 为 .管道内液体的流速与管道截面的周长 的倒 s 数成比例关系 。试按照使液体流速最大确定该 管道的参数。
MATLAB优化工具箱 常用函数的应用
MATLAB优化工具箱(Optimization Toolbox)中 包含有一系列优化算法和模块,可以用于求解约束 线性最小二乘优化、约束非线性或无约束非线性极 小值问题、非线性最小二乘逼近和曲线拟合、非线 性系统方程和复杂结构的大规模优化问题。 处理优化设计问题的分析和计算时,根据优化设计 的数学模型,按照所选用优化工具函数的要求,输 入初始点,与约束条件相应的约束函数和系数矩阵, 将优化工具函数作为 “黑箱”调用,即可获得与 所有条件都相容的优化结果。
运行结果: xmin = 3.9270 xmax = 0.7854
ymin = -0.0279 ymax = 0.6448
2、求解多维无约束优化问题的函数 fminunc
fminunc是基于梯度搜索法实现的优化工具箱函数,它的语 法说明如下: [x,fval,exitflag,output,grad,hessian] =fminunc(@fun,x0,options,P1,P2…) 其中,输出参数有: x是返回目标函数的最优解; fval是返回目标函数在最优解x点的函数值; exitflag是返回算法的终止标志; output是返回优化算法的信息的一个数据结构; grad是返回目标函数在最优解x点的梯度; hessian是返回目标函数在最优解x点的hessian矩阵值。
64516 2h 64516 h 2h s h cot h sin h tan sin
因此,取与管道截面周长有关的两个独立参数 作为设计变量,即
x1 h X x 2
为使液体流速最大,取管道截面周长最小作为 目标函数,即
3) 优化函数的输出变量下表:
变量 x 描 述 由优化函数求得的值.若exitflag>0,则x 为解;否则,x不是最终解,它只是迭代制止 时优化过程的值 解x处的目标函数值 描述退出条件: exitflag>0,表目标函数收敛于解x处 exitflag=0,表已达到函数评价或迭代 的最大次数 exitflag<0,表目标函数不收敛 包含优化结果信息的输出结构. Iterations:迭代次数 Algorithm:所采用的算法 FuncCount:函数评价次数 调用函数 所有优化函数 linprog,quadprog,fgoalattain, fmincon,fminimax,lsqcurvefit, lsqnonlin, fminbnd
输出参数有:
fun是调用目标函数的函数文件名; x0是初始点; 线性不等式约束条件的系数矩阵A和常数向量b; 线性等式约束条件的系数矩阵Aeq和常数向量beq; 设计变量的下界向量Lb和上界向量Ub; ‘Nlc’是定义非线性约束条件的函数名; options是设置优化选项参数; P1、P2等是传递给fun的附加参数。 参数A,b,Aeq,beq,Lb,Ub,options如果没 有定义,可用空矩阵符号“[ ]”代替。
例 1 求 f = 2e
ቤተ መጻሕፍቲ ባይዱ
x
sin x 在 0<x<8 中的最小值与最大值
主程序为wliti1.m: f='2*exp(-x).*sin(x)'; fplot(f,[0,8]); %作图语句 [xmin,ymin]=fminbnd (f, 0,8) f1='-2*exp(-x).*sin(x)'; [xmax,ymax]=fminbnd (f1, 0,8)
x1 2 x1 64516 min f ( X ) x1 tan x2 sin x2
这是一个二维无约束非线性优化问题。
2、编制MATLAB目标函数文件 function f=sc_wysyh(x) a=64516; f=a/x(1)-x(1)/tan(x(2)*pi/180)+2*x(1)/sin(x(2)*pi/180); 编制调用无约束优化工具函数fminunc文件 x0=[25;45]; [x,fval]=fminunc(@sc_wysyh,x0) 程序运行后得到优化结果: x= 192.9983 (梯形截面高度) 60.0000 (梯形截面斜边与底边夹角) fval = 668.5656 (梯形截面周长)
变量 f fun H A,b Aeq,beq vlb,vub X0 x1,x2 options 描 述 线性规划的目标函数f*X 或二次规划的目标函 数X’*H*X+f*X 中线性项的系数向量 非线性优化的目标函数.fun必须为行命令对象 或M文件、嵌入函数、或MEX文件的名称 二次规划的目标函数X’*H*X+f*X 中二次项的系 数矩阵 A矩阵和b向量分别为线性不等式约束: AX b 中的系数矩阵和右端向量 Aeq矩阵和beq向量分别为线性等式约束: Aeq X beq 中的系数矩阵和右端向量 X的下限和上限向量:vlb≤X≤vub 迭代初始点坐标 函数最小化的区间 优化选项参数结构,定义用于优化函数的参数 调用函数 linprog,quadprog fminbnd,fminsearch,fminunc, fmincon,lsqcurvefit,lsqnonlin, fgoalattain,fminimax quadprog linprog,quadprog,fgoalattain, fmincon, fminimax linprog,quadprog,fgoalattain, fmincon, fminimax linprog,quadprog,fgoalattain, fmincon,fminimax,lsqcurvefit, lsqnonlin 除fminbnd外所有优化函数 fminbnd 所有优化函数
3、编制绘制目标函数等值线和曲面图的程序
xx1=linspace(100,300,25); xx2=linspace(30,120,25); [x1,x2]=meshgrid(xx1,xx2); f=64516./x1-x1./tan(x2*pi/180)+2*x1./sin(x2*pi/180); subplot(1,2,1); h=contour(x1,x2,f); % 绘制等高线并标注高程 clabel(h);%等高线高程标志函数 axis([100 300 30 120]) xlabel('高度 h (mm)') ylabel('倾斜角 (度)') title('目标函数等值线') subplot(1,2,2); surfc(x1,x2,f); axis([100 300 30 120 600 1200]) title('目标函数曲面图')
减速器总中心距a 最小的目标函数
x1 x3 (1 x5 ) x2 x4 (1 31.5x5 1 ) f (X ) 2 cos x6
性能约束包括:齿面接触强度条件,齿根弯曲强度条件, 高速级大齿轮与低速轴不干涉条件等。根据齿轮材料与 热处理规范,得到齿面许用接触应力和齿根许用弯曲应 力。根据传递功率和转速,在齿轮强度计算条件中代入 有关数据:高速轴转矩,中间轴转矩,高速轴和低速轴 载荷系数。 边界约束包括:根据传递功率与转速估计高速级和低速 级齿轮副模数的范围;综合考虑传动平稳、轴向力不能 太大、轴齿轮的分度圆直径不能太小与两级传动的大齿 轮浸油深度大致相近等因素,估计两级传动大齿轮的齿 数范围、高速级传动比范围和齿轮副螺旋角范围等。 因此,建立了如下17个不等式约束条件。
fval
exitflag
output
所有优化函数
用Matlab解无约束优化问题
1. 一元函数无约束优化问题: min f(x)
x1 x x2
常用格式如下: (1)x= fminbnd (fun,x1,x2) (2)x= fminbnd (fun,x1,x2 ,options) (3)[x,fval]= fminbnd(...) (4)[x,fval,exitflag]= fminbnd(...) (5)[x,fval,exitflag,output]= fminbnd(...) 其中(3)、(4)、(5)的等式右边可选用(1)或 (2)的等式右边。 函数fminbnd的算法基于黄金分割法和二次插值法,它 要求目标函数必须是连续函数,并可能只给出局部最优解。
1.Matlab优化工具箱简介
1)MATLAB求解优化问题的主要函数
类 型
一元函数极小 无约束极小 线性规划
模 型 Min F(x)s.t.x1<x<x2 Min F(X) Minc X s.t.AX<=b 1 Min xTHx+cTx
2
T
基本函数名 x=fminbnd(‘F’,x1,x2) X=fminunc(‘F’,X0) X=fminsearch(‘F’,X0) X=linprog(c,A,b) X=quadprog(H,c,A,b) X=fmincon(‘FG’,X0) X=fgoalattain(‘F’,x,goal,w) X=fminimax(‘FG’,x0)
例 某二级斜齿圆柱齿轮减速器,高速级输入功 率 P1 6.2KW,转速 n1 1450r / min;总传动比 , a 0.4 齿轮宽度系数 ,齿轮材料和热处理:大齿 i 31.5 轮45号钢正火187~207HB,小齿轮45号钢调质 228~255HB,工作寿命10年以上。要求按照总中 心距 最小来确定齿轮传动方案。 a
解:将涉及总中心距 a 齿轮传动方案的六个独立参数作 为设计变量
X mn1 , mn2 , Z1 , Z3 , i1 , x1 , x2 , x3 , x4 , x5 , x6
T
T
m 式中, n1 , mn 2分别为高速级和低速级齿轮副的模数; Z1 , Z 3分别为高速级和低速级小齿轮齿数; i1 为高速级传动比; 为齿轮副螺旋角。