机械优化设计方案课本中编程实例.doc

机械优化设计方案课本中编程实例.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机械优化设计方案课本中编程实例

燕山大学 机械优化设计论文 专业: 12机械工程 班级: 工学部1班 学号: 姓名: 2012年 12月 05日 摘 要: 机械优化设计是将最优化原理和计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法。机械优化设计包括建立优化设计问题的数学模型和选择恰当的优化方法与程序两方面的内容。由于机械优化设计是应用数学方法寻求机械设计的最优方案,所以首先要根据实际的机械设计问题建立相应的数学模型,即用数学形式来描述实际设计问题。在建立数学模型时,需要用专业知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。机械优化设计问题的数学模型可以是解析式,实验数据或经验公式。虽然它们给出的形式不同,但都是反应设计变量之间的数量关系的。MATLAB是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。本文用MATLAB来解决机械设计中的几个常见的问题。 关键词:MATLAB ;优化;机械设计;软件 1 引 言 近年来发展起来的计算机辅助设计,在引入优化设计方法后,使得在设计过程中既能够不断选择设计参数并评选出最优设计方案,又可以加快设计速度,缩短设计周期。在科学技术发展要求机械产品更新日益缩短的今天,把优化设计方法与计算机辅助设计结合起来,使设计过程完全自动化,已成为设计方法的一个重要趋势。 2 采用MATLAB软件进行优化设计 2.1.问题描述: 求的最优解 2.1.1规划模型的建立: 目标函数 约束条件 无约束 2.1.2对应的程序: clc clear syms t f=t^2-10*t+36; x1=0; h=2; f1=subs(f,x1); x2=x1+h; f2=subs(f,x2); f3=f2-1; t=1; if (f1-f2)0 while f3f2 f3=subs(f,x2+t*h); t=t+1; end x3=x2+(t-1)*h; else f3=f2;f2=f1;t=1;f1=f2-1;x3=x2;x2=x1; while f1f2 f1=subs(f,x2-t*h); t=t+1; end x1=x2-(t-1)*h; end a=x1; b=x3; e=1e-05; k=0.618; a1=b-k*(b-a); a2=a+k*(b-a); f1=subs(f,a1); f2=subs(f,a2); c=(b-a)/2; while ce if f1f2 a=a1;a1=a2; a2=a+k*(b-a); f1=f2; f2=subs(f,a2); t_min=a2; f_min=f2; else b=a2;a2=a1; a1=b-k*(b-a); f2=f1; f1=subs(f,a1); t_min=a1; f_min=f1; end c=(b-a)/2; end t_min f_min 2.1.3运行结果 2.1.4 程序基本原理 此程序运用的是黄金分割法,黄金分割法适用于〔a,b〕区间上的任何单谷函数求极小值问题。黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间〔a,b〕内插入两点并计算其函数值,将区间分成三段。应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间无限缩小,从而得到极小点的数值近似解。 可以通过最少的试验次数,找到“最佳点” 初始条件: 约束条件 无约束 2.2.2对应的程序: syms t1 t2 f=(t1^2+12*t2-1)^2+(49*t1+49*t2+84*t1+2324*t2-681)^2;x0=[1;1] b=symvar(f); n=size(b,2);g=cell(n,1);G=cell(n,n);H0=eye(n,n); for i=1:n g{i,1}=diff(f,b(i)); end for i=1:n %产生海塞矩阵 for j=1:n G{j,i}=diff(g{i},b(j)); end end g0=subs(g,b,x0);

文档评论(0)

phltaotao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档