Matlab和机械优化设计ppt课件

上传人:钟*** 文档编号:1552003 上传时间:2019-10-25 格式:PPT 页数:26 大小:2.33MB
返回 下载 相关 举报
Matlab和机械优化设计ppt课件_第1页
第1页 / 共26页
Matlab和机械优化设计ppt课件_第2页
第2页 / 共26页
Matlab和机械优化设计ppt课件_第3页
第3页 / 共26页
点击查看更多>>
资源描述
Matlab优化工具箱的使用,1,MATLAB优化工具箱能求解的优化模型,优化工具箱3.0 (MATLAB 7.0 R14),连续优化,离散优化,无约束优化,非线性 极小 fminunc,非光滑(不可 微)优化 fminsearch,非线性 方程(组) fzero fsolve,全局 优化 暂缺,非线性 最小二乘 lsqnonlin lsqcurvefit,线性规划 linprog,0-1规划 bitprog 一般(暂缺),非线性规划 fmincon fseminf,上下界约束 fminbnd fmincon lsqnonlin lsqcurvefit,约束线性 最小二乘 lsqnonneg lsqlin,约束优化,二次规划 quadprog,多目标优化fgoalattain fminimax,2,无约束优化问题,数学模型: Matlab函数: 对于连续(处处光滑)的函数,使用fminunc 对于不连续的函数,使用fminsearch 一般而言fminunc比fminsearch有更高的寻优效率,因为它利用了梯度信息 两者都不是解决最小化平方和的问题首选方法,对这类问题,推荐使用(lsqnonlin )。,3,无约束优化问题,x,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options) 输入参数: fun: 目标函数,以函数句柄的形式给出。函数句柄的构造: 函数首先用m文件定义好,然后采用下列方式构造函数句柄: fhandle= function_name 如: f_h=sin; f_h=cos 匿名函数的形式(Anonymous function),函数的表达式直接给出: fhandle= (var_list) expression(var_list),如: f_h=(x) sin(x); f_h=(x) cos(x); 采用函数句柄的方式调用函数:把函数的名称用函数句柄直接替换。比如定义: f_h=sin, 则使用sin函数的时候有两种方式: sin(10), f_h(10),返回同样的结果。,4,无约束优化问题,x,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options) 输入参数: x0: 初始点的值。 Options: 提供和函数本身有关的一些细节控制,如采用的算法,是否采用梯度等信息。本身是一个结构数组,其中每一个属性值的改变或设定可用函数optimset完成,如: options = optimset(Display,iter,TolFun,1e-8); options = optimset(optimfun): 返回优化函数“optimfun”所有的options属性的名称和属性值。如: options = optimset(fminunc): 观察结果。Options各个属性的含义请参考帮助文件。,5,无约束优化问题,x,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options) 输出参数: X, fval: 算法终止时函数的最优解和最优值。 exitflag: 整数标志,算法终止的原因,返回值大于0表示找到局部最优点,否则没有找到局部最优点。具体的返回请参照函数“fminunc”的帮助。 Output:Structure containing information about the optimization. The fields of the structure are: iterations: Number of iterations taken; funcCount:Number of function evaluations; algorithm:Algorithm used; Cgiterations:Number of PCG iterations (large-scale algorithm only);stepsize:Final step size taken (medium-scale algorithm only); grad,hessian:最优解X点处的剃度和Hessian矩阵,6,无约束优化问题,x,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options) 例子: 求目标函数 mypeaks的局部最小值。 mypeaks=3*(1-x(:,1).2.*exp(-(x(:,1).2) - (x(:,2)+1).2) . - 10*(x(:,1)/5 - x(:,1).3 - x(:,2).5).*exp(-x(:,1).2-x(:,2).2) . - 1/3*exp(-(x(:,1)+1).2 - x(:,2).2); fminsearch与fminunc有相同的输入和输出参数,但是它使用单纯形法来找到局部最优。 分别用fminsearch和fminunc函数求上述目标函数的极小值点,可发现在利用了梯度信息的时候,迭代的次数大大减小。,7,约束优化问题,1。单变量(标量)、上下界约束优化问题。 x,fval,exitflag,output = fminbnd(fun,x1,x2,options) 目标函数必须是连续的,只能求出局部最优值,所用算法:黄金分割和二次插值方法。 例子: 求函数 f(x)=x(2/3)-(x2+1)(1/3),8,约束优化问题,2。线性规划问题。 x,fval,exitflag,output,lambda = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)它的输出只是最终结果,没有迭代过程。 例:,9,约束优化问题,数学模型: 设计变量: 各个方案切割的套数:x=x1,x2,x3,x4,x5; 目标函数: min f(x)=0.1*x2+0.2*x3+0.3*x4+0.8*x5 约束条件: 总套数限制: x1+2*x2+x4=100 2* x3+2*x4+x5=100 3* x1+x2+2*x3+3*x5=100 0=x1,x2,x3,x4,x5,10,约束优化问题,3。二次规划问题 x,fval,exitflag,output,lambda = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) ;当问题不是严格凸规划问题时,返回局部最小点。,11,约束优化问题,4。非线性约束优化问题 x,fval,exitflag,output,lambda,grad,hessian = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) ; 函数fun以函数句柄的形式或匿名函数的形式给出; Nonlcon:返回等式和不等式约束向量c(x)和ceq(x)的一个函数。如: x= fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon) 其中 mycon 是Matlab函数,其定义如下: function c,ceq = mycon(x) c = . % Compute nonlinear inequalities at x. ceq = . % Compute nonlinear equalities at x.,12,约束优化问题,4。非线性约束优化问题 如果 options = optimset(GradConstr,on),也就是优化过程需要用到非线性约束的梯度信息时,非线性约束函数必须在第3和第4个返回值中返回不等式非线性约束的梯度和等式非线性约束的梯度信息。 function c,ceq,GC,GCeq = mycon(x) c = . % Nonlinear inequalities at x ceq = . % Nonlinear equalities at x if nargout 2 % nonlcon called with 4 outputs GC = . % Gradients of the inequalities GCeq = . % Gradients of the equalities end,13,4. fmincon函数,MATLAB代码: %首先编写目标函数的.m文件: function f = myfun (x) f = -x(1)*x(2)*x(3); x0=10; 10; 10 %起始点 x, fval = fmincon (myfun, x0, A, b),14,4. fmincon函数,MATLAB代码: %首先编写目标函数的.m文件: function f = objfun(x) f = exp(x(1)*(4*x(1)2 + 2*x(2)2 + 4*x(1)*x(2) + 2*x(2) + 1); %编写非线性约束函数的.m文件: function c, ceq = confun(x) c = 1.5 + x(1)*x(2) - x(1) - x(2); -x(1)*x(2) - 10; ceq = ; %求解优化问题: x0 = -1,1; options = optimset(LargeScale,off); x, fval = fmincon(objfun,x0,confun,options),15,4. fmincon函数,目标函数:,H,16,4. fmincon函数,Step1:建立数学模型 设计变量和目标函数:管直径D和支架高度H 约束条件:,17,4. fmincon函数,Step1:建立数学模型 约束条件:,18,4. fmincon函数,Step2:编制程序 目标函数 function f=objfun1(x) f=1.225e-4*x(1)*sqrt(577600.0+x(2)*x(2); 约束函数 function c,ceq=confun1(x) c=19098.59*sqrt(577600.0+x(2)*x(2)/(x(1)*x(2)-700.0; 19098.59*sqrt(577600.0+x(2)*x(2)/(x(1)*x(2)-2.6e5*(x(1)*x(1)+6.25)/(577600.0+x(2)*x(2); ceq=;,x0=1,1 lb=zeros(2,1); ub=Inf*ones(2,1); %ub= x,fval,exitflag,output,lambda,grad,hessian = fmincon(objfun1,x0,lb,ub,confun1),19,多目标优化问题,1.目标规划法 x,fval,attainfactor,exitflag = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub); 函数fun以函数句柄的形式或匿名函数的形式给出,它多个目标函数构成的向量; goal:每个目标函数想要达到的目标,和fun具有相同的维数。 Weight:每个目标函数在优化过程中重要性的体现。当某个目标函数的Weight为正值时,允许函数值大于目标值;当它为负值时,允许函数值小于目标值;如果希望某个目标值尽量接近目标值,在Options中设置“GoalsExactAchieve ”,并让该目标函数作为Fun中的第一个函数。如果希望每一个函数值从目标值有相同百分比的偏差,则设置每一个函数的weight(i)=abs(goal(i);,20,多目标优化问题,1。目标规划法 返回值: Attainfactor:优化点处函数值超过和小于目标函数的个数统计,如果为负,则大部分函数被过估计;否则,大部分函数值小于目标值。 例1:某工厂生产I、II两种产品,有关数据见表1,在原材料有严格限制的条件下,要求产品II的产量不低于产品I,其次是充分利用设备,不加班;再者是利润不小于56元。 Step1:建模: 设计变量:产品I和II的产量 x(1),x(2) 目标函数: 利润:g1=8*x(1)+10*x(2) 56 () 产量:g2=x(2)x(1) 0 () 工时:g3= x(1)+2*x(2) 10 (),21,多目标优化问题,1。目标规划法 约束条件: 原材料限制:2*x(1)+x(2)=0 Step2:对目标函数指定权值: 根据目标函数大于或小于目标的值,确定g1,g2权值大于0, g3权值小于0,权值绝对值的大小应该体现了各个目标函数的重要性。给定: w= 1,0.8,-1; Step3:编程求解: 分析结果可以看出,增加某一个目标的权值,将使得我们得该目标函数朝着我们期望的方向取得最大值(远离goal)。如将目标函数1(利润)得权值从0增加到5000, 目标函数1得值从56变化到大约60, 而同时其他两个目标函数得值朝向期望值靠得越近。即靠近goal. 这一点从规划问题得数学表达式中也可以看出,随着Weight得增加,目标函数被松弛得越多,也就是它越偏离目标值;同时,优化又是最小化gama, gama得减小,必将导致其他目标函数得松弛量得减少(其他目标函数得Weight没变),所以其他目标函数更靠近目标值。,22,多目标优化问题,2。极大极小法 x,fval,maxfval,exitflag,output,lambda = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个需要同时最小化的函数必须在定义目标函数时放在其他函数前面。,23,多目标优化问题,2。极大极小法 x,fval,maxfval,exitflag,output,lambda = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个需要同时最小化的函数必须在定义目标函数时放在其他函数前面。,24,5.fminmax函数,Matlab代码: %首先编写函数簇 fi(x) 的.m文件 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; %然后调用函数fminimax x0=0.1, 0.1; %起始点 x, fval =fminimax(myfun, x0);,25,结束语,优化设计部分的内容到此结束。 作业: 1。每小组完成一个机械优化设计课题。 2。每个人用Matlab编写本课程提到的优化算法一个,并用一个优化问题来检验该算法,绘出迭代收敛的过程,即迭代停止准则函数随迭代次数的变化曲线。,26,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!