机械优化设计实验报告(浙江理工大学)(共19页).docx
《机械优化设计实验报告(浙江理工大学)(共19页).docx》由会员分享,可在线阅读,更多相关《机械优化设计实验报告(浙江理工大学)(共19页).docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上机械优化设计实验报告班级:XXXX姓名:XX 学号:XXXXXXXXXXX一、 外推法1、 实验原理常用的一维优化方法都是通过逐步缩小极值点所在的搜索区间来求最优解的。一般情况下,我们并不知道一元函数f(X)极大值点所处的大概位置,所以也就不知道极值点所在的具体区域。由于搜索区间范围的确定及大小直接影响着优化方法的收敛速度及计算精度。因此,一维优化的第一步应首先确定一个初始搜索区间,并且在该区间内函数有唯一的极小值存在。该区间越小越好,并且仅存在唯一极小值点。所确定的单股区间应具有如下性质:如果在1,3区间内任取一点2,,123或32f(2)f(3)。由此可知,单股区
2、间有一个共同特点:函数值的变化规律呈现“大-小-大”或“高-低-高”的趋势,在极小值点的左侧,函数值呈严格下降趋势,在极小值点右侧,函数值呈严格上升趋势,这正是单股区间依据。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
3、);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、 总结与
4、讨论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,就可以进行新一轮的比较,如此循
5、环。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-
6、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=); sca
7、nf(%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、 实验原理鲍威尔法多维无约束优化算法 是在无约束优化算法之一,首先选取
8、一组共轭方向,从某个初始点出发,求目标函数在这些方向上的极小值点,然后以该点为新的出发点,重复这一过程直到获得满意解,其优点是不必计算目标函数的梯度就可以在有限步内找到极值点。 鲍威尔法是以共轭方向为基础的收敛较快的直接法之一,是一种十分有效的算法。在无约束方法中许多算法都是以共轭方向作为搜索方向,它们具有许多特点。根据构造共轭方向的原理不同,可以形成不同的共轭方向法。2、 实验工具C-Free 3.5 软件3、 程序调试#include #include #include double objf(double x)/定义目标函数double ff;ff=10*(x0+x1-5)*(x0+x1
9、-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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 优化 设计 实验 报告 浙江 理工大学 19
限制150内