优化设计程序.doc
上传人:王子****青蛙 上传时间:2024-09-10 格式:DOC 页数:10 大小:166KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

优化设计程序.doc

优化设计程序.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《机械优化设计》实验报告班级:机械设计(5)班姓名:林斯宇学号:09011020281目标函数方程式:F=ax^4+bx^3+cx^2+dx+e其中a=1.2,b=-1,c=-1,d=-10,c=181,初始点x0=0,步长h=0.1,收敛精度e=0.00012实验目的:通过上机编程,理解进退法、黄金分割法的原理,了解计算机在优化设计中的应用。3黄金分割法的基本原理一维收索是解函数极小值的方法之一,其解法思想为沿某已知方向求目标函数的极小值点。这种方法的适应面非常广。黄金分割法也是建立在区间削去法则原理基础上的试探方法。黄金分割法是用于一元函数f(x)在给定初始区间[a,b]内搜索极小点α*的一种方法。它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化算法的基础,但它只适用于一维区间上的凸函数[6],即只在单峰区间内才能进行一维寻优,其收敛效率较低。其基本原理是:依照“去劣存优”原则、对称原则、以及等比收缩原则来逐步缩小搜索区间[7]。具体步骤是:在区间[a,b]内取点:a1,a2把[a,b]分为三段。如果f(a1)>f(a2),令a=a1,a1=a2,a2=a+r*(b-a);如果f(a1)<f(a2),令b=a2,a2=a1,a1=b-r*(b-a),如果|(b-a)/b|和|(y1-y2)/y2|都大于收敛精度ε重新开始。因为[a,b]为单峰区间,这样每次可将搜索区间缩小0.618倍或0.382倍,处理后的区间都将包含极小点的区间缩小,然后在保留下来的区间上作同样的处理,如此迭代下去,将使搜索区[a,b]逐步缩小,直到满足预先给定的精度时,即获得一维优化问题的近似最优解。黄金分割法原理如图所示,实验所编程序框图(1)进退法计算框图(2)黄金分割法计算框图5程序源代码6程序#include<math.h>#include<stdio.h>#definef(x)1.2*pow(x,4)+(-1)*pow(x,3)+(-1)*pow(x,2)+(-10)*pow(x,1)+181main(){doubleF1,F2,F3,W,x1,x2,x3,q,a,b,c;intn;n=1;printf("c=");scanf("%lf",&c);printf("a=");scanf("%lf",&a);printf("b=");scanf("%lf",&b);printf("nabx1x2F1F2\n");x1=a+0.382*(b-a);x2=a+0.618*(b-a);F1=f(x1);F2=f(x2);printf("%d%.4lf%.4lf%.4lf%.4lf%.4lf%.4lf\n",n,a,b,x1,x2,F1,F2);n=n+1;do{if(F1>=F2){a=x1;x1=x2;F1=F2;x2=a+0.618*(b-a);F2=f(x2);printf("%d%.4lf%.4lf%.4lf%.4lf%.4lf%.4lf\n",n,a,b,x1,x2,F1,F2);n=n+1;}else{b=x2;x2=x1;F2=F1;x1=b+0.382*(b-a);F1=f(x1);printf("%d%.4lf%.4lf%.4lf%.4lf%.4lf%.4lf\n",n,a,b,x1,x2,F1,F2);n=n+1;}}while((a-b)>=c||(a-b)<=-c);q=(a+b)*0.5;W=f(q);printf("q=%.5lfW=%.5lf\n",q,W);getchar();}运行结果截图: