




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机械优化设计实验报告班级:XXXX姓名:XX 学号:XXXXXXXXXXX一、 外推法1、 实验原理常用的一维优化方法都是通过逐步缩小极值点所在的搜索区间来求最优解的。一般情况下,我们并不知道一元函数f(X)极大值点所处的大概位置,所以也就不知道极值点所在的具体区域。由于搜索区间范围的确定及大小直接影响着优化方法的收敛速度及计算精度。因此,一维优化的第一步应首先确定一个初始搜索区间,并且在该区间内函数有唯一的极小值存在。该区间越小越好,并且仅存在唯一极小值点。所确定的单股区间应具有如下性质:如果在1,3区间内任取一点2,,123或32f(2)f(3)。由此可知,单股区间有一个共同特点:函数值的变化规律呈现“大-小-大”或“高-低-高”的趋势,在极小值点的左侧,函数值呈严格下降趋势,在极小值点右侧,函数值呈严格上升趋势,这正是单股区间依据。2、 实验工具C-Free3.5软件3、 程序调试#include#include#define f(x) 3*x*x-8*x+9 /定义函数int main()double a0,a1,a2,a3,f1,f2,f3,h;printf(“a0=”,a0); /单谷区间起始点scanf(“%lf”,&a0);printf(“h=”,h); /起始的步长scanf(“%lf”,&h);a1=a0;a2=a1+h;f1=f(a0);f2=f(a2);if(f1f2) /判断函数值的大小,确定下降方向 a3=a2+h; f3=f(a3);else h=-h; a3=a1; f3=f1; a1=a2; f1=f2; a2=a3; f2=f3; a3=a2+h; f3=f(a3);while(f3=f2) /当不满足上述比较时,说明下降方向反向,继续进行判断 h=2*h; a1=a2; f1=f2; a2=a3; f2=f3; a3=a2+h; f3=f(a3);printf(“a1=%lf,a3=%lfn”,a1,a3);printf(“a1,a3=%lf,%lfn”,a1,a3); /输出区间4、 调试结果5、 总结与讨论1) 当写成void main时会出现如下警告改成int main警告消失。二、 黄金分割法1、 实验原理在外推法确定了单股区间1,3的基础上去其中对称两点2,4,且满足2=3-3-14=1+(3-1)式中,位01的缩小系数。计算点2,4的函数值,记f2=f(2),f4=f(4),并比较他们的大小,可能存在如下三种情况:(1)f2f4:此时必有极小值点2,3,应舍去区间1,2,保留的区间长度为l,缩小后的新区间为2,3;(3)f2=f4:此时必有极小值点2,4,应舍去区间1,2或4,3。经过比较取舍后,缩小后所得的新区建长度均为l,将区间端点重新命名为1,3,就可以进行新一轮的比较,如此循环。2、 实验工具C-Free 3.5软件3、 程序调试#include#include#define f(x) 3*x*x-8*x+9#define v 0.618 /黄金分割点int main() float a0,a1,a2,a3,a4,f0,f1,f2,f3,f4,b; /b收敛精度 puts(单谷区间 a1=); scanf(%f,&a1); puts(单谷区间 a3=); scanf(%f,&a3); puts(收敛精度 b=); scanf(%.4f,b); a2=a3-v*(a3-a1); f2=f(a2); a4=a1+v*(a3-a1); f4=f(a4); do /do-while循环,知道满足条件退出循环 if(f2f4) /判断函数值大小,缩小比较区间 a1=a2; a2=a4; f2=f4; a4=a1+v*(a3-a1); f4=f(a4); else a3=a4; a4=a2; f4=f2; a2=a3-v*(a3-a1); f2=f(a2); while(abs(a3-a1)b); a0=(a3+a1)/2; f0=f(a0); printf(a0=%lfn,a0); /输出结果 printf(f0=%lfn,f0);4、 调试结果5、 总结与讨论1) 要选择合适的循环嵌套语句,实现循环的同时判断;2) 在执行puts(单谷区间 a1=); scanf(%f,&a1); puts(单谷区间 a3=); scanf(%f,&a3); puts(收敛精度 b=); scanf(%.4f,b);语句时,注意在最后一个scanf语句约束输入的位数,如在前面输入约束,puts(单谷区间 a1=); scanf(%.4f,&a1); puts(单谷区间 a3=); scanf(%.4f,&a3); puts(收敛精度 b=); scanf(%.4f,b);如会出现程序如下错误:如不输入约束,函数由于float的精度位数太高,会陷入死循环,导致程序崩溃。如图所示:三、 鲍威尔法1、 实验原理鲍威尔法多维无约束优化算法 是在无约束优化算法之一,首先选取一组共轭方向,从某个初始点出发,求目标函数在这些方向上的极小值点,然后以该点为新的出发点,重复这一过程直到获得满意解,其优点是不必计算目标函数的梯度就可以在有限步内找到极值点。 鲍威尔法是以共轭方向为基础的收敛较快的直接法之一,是一种十分有效的算法。在无约束方法中许多算法都是以共轭方向作为搜索方向,它们具有许多特点。根据构造共轭方向的原理不同,可以形成不同的共轭方向法。2、 实验工具C-Free 3.5 软件3、 程序调试#include #include #include double objf(double x)/定义目标函数double ff;ff=10*(x0+x1-5)*(x0+x1-5)+(x0-x1)*(x0-x1);return(ff); /返回函数值void jtf(double x0 ,double h0,double s ,int n,double a ,double b )int i; double *x3,h,f1,f2,f3; for (i=0;i3;i+) xi=(double *)malloc(n*sizeof(double); h=h0; for(i=0;in;i+)*(x0+i)=x0i; f1=objf(x0); for(i=0;i=f1) h= -h0; for (i=0;in;i+)*(x2+i)=*(x0+i); f3=f1; for(i=0;in;i+) *(x0+i)= *(x1+i);*(x1+i)= *(x2+i); f1=f2; f2=f3;for(;)h=2. *h;for(i=0;in;i+) *(x2+i)=* (x1+i) +h*si;f3= objf(x2);if(f2f3) break;else for(i=0;in;i+) *(x0+i)= *(x1+i);*(x1+i)= *(x2+i); f1=f2; f2=f3; if(h0. )for(i=0;in;i+) ai=*(x2+i); bi=*(x0+i); else for(i=0;in;i+) ai=*(x0+i); bi=*(x2+i); for(i=0;i3;i+) free(xi);double gold(double a,double b,double eps,int n,double xx)int i;double f1,f2,*x2,ff,q,w;for(i=0;i2;i+)xi=(double*)malloc (n*sizeof(double);for(i=0;if2)for(i=0;in;i+)bi=*(x0+i);*(x0+i)=*(x1+i);f1=f2;for(i=0;in;i+)*(x1+i)=ai+0.382*(bi-ai);f2=objf(x1);elsefor(i=0;in;i+)ai=*(x1+i);*(x1+i)=*(x0+i);f2=f1;for(i=0;in;i+)*(x0+i)=ai+0.618*(bi-ai);f1=objf(x0);q=0;for(i=0;ieps);for(i=0;in;i+)xxi=0.5*(ai+bi);ff=objf(xx);for(i=0;i2;i+)free(xi);return(ff);double oneoptim(double x0,double s,double h0,double epsg,int n,double x) double *a,*b,ff; a=(double *)malloc(n*sizeof(double); b=(double *)malloc(n*sizeof(double); jtf(x0,h0,s,n,a,b); ff=gold(a,b,epsg,n,x); free(a); free(b); return(ff);double powell(double p,double h0,double eps,double epsg,int n,double x) int i,j,m; double *xx4,*ss,*s; double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d; ss=(double *)malloc(n*(n+1)*sizeof(double); s=(double *)malloc(n*sizeof(double); for (i=0;in;i+) for (j=0;j=n;j+) *(ss+i*(n+1)+j)=0; *(ss+i*(n+1)+i)=1; for (i=0;i4;i+) xxi=(double *)malloc(n*sizeof(double); for (i=0;in;i+) *(xx0+i)=pi; for(;) for (i=0;in;i+) *(xx1+i)=*(xx0+i); xi=*(xx1+i); f0=f1=objf(x); dlt=-1; for (j=0;jn;j+) for (i=0;idlt) dlt=df; m=j; sdx=0.; for (i=0;in;i+) sdx=sdx+fabs(xi-(*(xx1+i); if(sdxeps) free(ss); free(s); for (i=0;i4;i+) free(xxi); return(f); for (i=0;in;i+) *(xx2+i)=xi; f2=f; for (i=0;in;i+) *(xx3+i)=2.*(*(xx2+i)-(*(xx1+i); xi=*(xx3+i); fx=objf(x); f3=fx; q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt); d=0.5*dlt*(f1-f3)*(f1-f3); if(f3f1)|(qd) if(f2=f3) for (i=0;in;i+) *(xx0+i)=*(xx2+i); else for (i=0;in;i+) *(xx0+i)=*(xx3+i); else for (i=0;in;i+) *(ss+(i+1)*(n+1)=xi-(*(xx1+i); *(s+i)=*(ss+(i+1)*(n+1); f=oneoptim(xx0,s,h0,epsg,n,x); for(i=0;in;i+) *(xx0+i)=xi; for (j=m+1;j=n;j+) for (i=0;in;i+) *(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j); int main() /主函数 double p=1,1; double ff,x2; ff=powell(p,0.3,0.001,0.0001,2,x); printf(输出最优点及其目标函数值:n); printf(x0=%.4f,x1=%.4f,ff=%.4fn,x0,x1,ff);4、 调试结果5、 总结与讨论1) 鲍威尔法用C语言来编写存在很大的难度,由于C语言没有专属的矩阵运算和求导运算算法,所以又给编写鲍威尔法增加了很大难度,需要先定义矩阵的运算函数和求导的运算函数。因此,鲍威尔法编写的难点集中在了函数的编写,其主函数并不难。2) 有程序框图可得鲍威尔法的基本算法结构如下:dodo循环体While(判别式);If(判别式) 表达式1elseif(判别式) 表达式2else 语句while(判别式);机械优化设计问题1、 问题描述现有一单级渐开线直齿圆柱齿轮减速器,其输入功率N=280kW,输入转矩n1=980r/min,传动比i=5。小齿轮为实体结构,大齿轮为腹板式结构(带有四个减轻孔),两齿轮各部分尺寸的符号如图所示:原用常规设计方法的设计结果为:齿宽B=B2=13cm,小齿轮齿数z1=21,模数m0.8cm,l1=42cm,ds1=12cm,ds2=16cm。先要求在保证承载能力的条件下,通过优选上述有关参数,使减速器的体积达到最小。2、 建立目标函数减速器的体积主要取决于内部零件的尺寸大小,在齿轮和轴的结构尺寸确定之后,箱体的尺寸将随之确定,因此将齿轮和轴的总体积达到最小作为优化目标。减速器内部有两个齿轮和两根轴,为了简化计算,将轴视为光轴,则有V=VS1+VS2+Vg1+Vg2 =4ds12l1+l2+4ds22l1+l2+4d12-ds12+4d22-ds22-4D22-D12B2-C-4(4d02C)式中:V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔医学技术专业教学标准(高等职业教育专科)2025修订
- 2025年中国菠萝深加工行业市场运行现状及投资战略研究报告
- 2.6 营销问题及平均变化率问题与一元二次方程 教学设计 -2024-2025学年北师大版数学九年级上册
- 中国MicroLED 行业市场深度调查及发展前景研究预测报告
- 2025年 中式烹调师中级考试练习试题附答案
- 2025-2030年中国恒温循环器项目投资可行性研究分析报告
- 郏县君正商贸有限公司新建加油站安全设施施工情况报告-图文
- 2025年 赤峰市巴林左旗招聘社区工作者考试试题附答案
- 2025年 巴彦淖尔市公安局招聘警务辅助人员笔试试题附答案
- 中国压缩机制冷饮水机行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 2024年河南省兰考县教育局公开招聘试题含答案分析
- 2025年北京市高考英语试卷真题(含答案解析)
- 招商运营笔试题目及答案
- 湟水河河湟新区段北岸防洪生态综合治理项目 社会稳定风险评估报告
- JG/T 272-2010预制高强混凝土薄壁钢管桩
- JG/T 266-2011泡沫混凝土
- 杂屋转让合同协议书
- 国际压力性损伤-溃疡预防和治疗临床指南(2025年版)解读课件
- 模具工厂MES项目技术方案
- 货梯使用安全培训
- 船舶建造项目管理-全面剖析
评论
0/150
提交评论