




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机械优化设计 上机报告 姓 名: 邓小芬 学 号: 2008500303 学 院: 机械工程学院 班 级: 08机设一班 指导老师: 龚曙光 完成时间: 2011年12月8日 黄金分割法1、数学模型为:f(x)=x2-5x+9的最优解。设置初始点为:x0=0,初始步长h=1,取迭代精度e=0.352、采用的优化方法简介 黄金分割法适用于(a,b)区间 上的任何单谷函数求极小值问题。对函数除要求“单谷”外不作其他要求,甚至可以不连续。因此,这种方法的适应相当广。黄金分割方法也是建立在区间消去法原理基础上的试探方法,即经搜索区间(a,b)内适当插入两点x1,x2并计算其函数值。x1,x2将区间分成三段。应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后再在保留下来的区间上作同样的处置,如此迭代下去,使搜索区间无限缩小,从而得到极小点的数值近似解。黄金分割法能使相邻两次都具有相同的缩短率0.618,故黄金分割法又称作0.618法。3、程序:#include stdio.h#include math.h#include conio.h#include#define e 0.35#define tt 1float function(float x) float y; y=pow(x,2)-5*x+9; return(y); void searching(float a3,float f3)float h=tt,a1,f1,ia,i; a0=0; f0=function(a0); for(i=0;i+) a1=a0+h; f1=function(a1); if(f1=e) h=-h;a0=a1;f0=f1; else if(ia=1) return; h=h/2;ia=1; for(i=0;i+) a2=a1+h; f2=function(a2); if(f2f1) break; h=2*h; a0=a1;f0=f1; a1=a2;f1=f2; if(a0a2) a1=a0;f1=f0; a0=a2;f0=f2; a2=a1;f2=f1; return;void main() time_t lt; float function(float x); float a13,f13,a4,f4; float F1,F2,m,n,xx; searching(a1,f1); a0=a10;f0=f10; a3=a12;f3=f12; while(fabs(a0-a3)e) m=a3-0.618*(a3-a0); n=a0+0.618*(a3-a0); F1=function(m); F2=function(n); if(F1F2) a3=n; else a0=m; xx=(a0+a3)/2; printf(F1=%16.12f F2=%16.12f a0=%16.12f a3=%16.12fn xx=%16.12fn,F1,F2,a0,a3,xx); lt=time(NULL); printf(ctime(<); getch(); 运行结果如下图所示:无约束问题:梯度法算 f(x1,x2)= X1+2*X2-3*X1-2*X1X2的无约束极值,初始点x0=1,1。梯度法是一种古老的优化算法,它的迭代方向是由负梯度构成的,也称最速下降法。梯度法每次迭代都是沿迭代点函数值下降最快的方向搜索,其搜索路线很曲折,收敛速度较慢。梯度法迭代过程中前后迭代向量为正交,故迭代过程是呈直角锯齿形路线曲折走向目标函数的极小点X*。所谓“最速下降”只指函数在迭代点的局部特性,对于目标函数的等值线是同心圆或是同心椭圆且初始点选在其对称轴上,则只要进行一次搜索即达到全域极小点。程序:#include#include#include#include#include#define tt 0.01#define ff 1.0e-6#define ac 1.0e-6#define ad 1.0e-6#define n 2double ia;double fny(double *x) double x1=x0,x2=x1;double f;f=x1*x1+2*x2*x2-3*x1-2*x1*x2;return f;double * iterate(double *x,double a,double *s)double *x1;int i;x1=(double *)malloc(n*sizeof(double);for(i=0;in;i+) x1i=xi+a*si;return x1;double func(double *x,double a,double *s)double *x1;double f;x1=iterate(x,a,s);f=fny(x1);return f;void finding(double a3,double f3,double *xk,double *s)double t=tt;int i;double a1,f1;a0=0;f0=func(xk,a0,s);for(i=0;i+) a1=a0+t; f1=func(xk,a1,s); if(f1=ad) t=-t; a0=a1;f0=f1; else if(ia=1) return; /*break */ t=t/2;ia=1; for(i=0;i+) a2=a1+t; f2=func(xk,a2,s); if(f2f1) break; t=2*t; a0=a1;f0=f1; a1=a2;f1=f2;if(a0a2) a1=a0; f1=f0; a0=a2; f0=f2; a2=a1; f2=f1;return;double lagrange(double *xk,double *ft,double *s) int i;double a3,f3;double b,c,d,aa;finding(a,f,xk,s);for(i=0;i+) if(ia=1) aa=a1; *ft=f1; break; d=(pow(a0,2)-pow(a2,2)*(a0-a1)-(pow(a0,2)-pow(a1,2)*(a0-a2); if(fabs(d)=0) break; c=(f0-f2)*(a0-a1)-(f0-f1)*(a0-a2)/d; if(fabs(c)=0) break; b=(f0-f1)-c*(pow(a0,2)-pow(a1,2)/(a0-a1); aa=-b/(2*c); *ft=func(xk,aa,s); if(fabs(aa-a1)f1) aa=a1;break; if(aaa1) if(*ftf1) a2=aa;f2=*ft; else if(*ftf1) a0=aa;f0=*ft; else if(*ftf1) *ft=f1;aa=a1;return aa;double *gradient(double *xk)double *g,f1,f2,q;int i;g=(double*)malloc(n*sizeof(double); f1=fny(xk); for(i=0;in;i+)q=ff; xki=xki+q; f2=fny(xk); gi=(f2-f1)/q; xki=xki-q; return g;double * bfgs(double *xk)double un,vn,hnn,dxn,dgn,sn;double aa,ib;double *ft,*xk1,*g1,*g2,*xx,*x0=xk;double fi;int i,j,k;ft=(double *)malloc(sizeof(double);xk1=(double *)malloc(n*sizeof(double);for(i=0;in;i+) si=0; for(j=0;jn;j+) hij=0; if(j=i) hij=1; g1=gradient(xk); fi=fny(xk); x0=xk; for(k=0;kn;k+) ib=0; if(ia=1) xx=xk; break; ib=0; for(i=0;in;i+) si=0; for(i=0;in;i+) for(j=0;jn;j+) si+= -hij*g1j; aa=lagrange(xk,ft,s); xk1=iterate(xk,aa,s); g2=gradient(xk1); for(i=0;i=ac)&(fabs(g2i-g1i)=ac) ib=ib+1; if(ib=0) xx=xk1; break; fi=*ft; if(k=n-1) int j; xk=xk1; for(i=0;in;i+) for(j=0;jn;j+) hij=0; if(j=i) hij=1; g1=g2; k=-1; else int j; double a1=0,a2=0; for(i=0;in;i+) dgi=g2i-g1i; dxi=xk1i-xki; for(i=0;in;i+) int j; ui=0;vi=0; for(j=0;jn;j+) ui=ui+dgj*hji; vi=vi+dgj*hij; for(j=0;jn;j+) a1+=dxj*dgj; a2+=vj*dgj; if(fabs(a1)!=0) a2=1+a2/a1; for(i=0;in;i+) for(j=0;jfi) *ft=fi; xx=xk; xk=x0; return xx;void main () time_t lt; int k; double *xx,f; double xkn=1,1; xx=bfgs(xk); f=fny(xx); printf(nnThe Optimal Design Result Is:n); for(k=0;k=0; x1=0; 25-x1的平方-x2的平方=0;#include #include #include#define EP 0.0001#define E 0.001#define fori for(i=0;i=1;i+)int i;float f(float *p)float y;y=3*p0-pow(p1,2)-10;return(y);int cons(float *q)int n;if(pow(q0,2)+pow(q1,2)-25=0)&(q1=0) n=1;else n=0;return(n);void paixu(float *p1,float *p2,float *p3)float f1,f2,f3;float L2,M2,H2;f1=f(p1);f2=f(p2);f3=f(p3);fori Hi=p1i;Mi=p2i;Li=p3i;if(f1f2) if(f2f3)fori Mi=p3i;Li=p2i; elsefori Hi=p3i;Mi=p1i;Li=p2i; else if(f2f3) fori Hi=p2i;Mi=p1i;Li=p3i; else fori Hi=p2i;Mi=p3i;Li=p1i;fori p1i=Hi;p2i=Mi;p3i=Li;float r()float rr;do rr=rand();while(rr=0);rr=rr/32767;return(rr);main()time_t lt;float x12=2,1,x22=4,1,x32=3,3;float XC2,XR2,A2,B2;float H=1.3,FH,FR,FC,FL,cha,min,S;int tf,tf1,tf2,j=1;do do paixu(x1,x2,x3); /* fori printf(n X1%d is %f,X2%d is %f,X3%d is %f.,i,x1i,i,x2i,i,x3i); */ fori XCi=(x2i+x3i)/2; /* fori printf(n XC%d is %f.,i,XCi); */ tf1=cons(XC); if(tf1=0) FC=f(XC); FL=f(x3); if(FLFC) fori Ai=x3i;Bi=XCi; else fori Ai=XCi;Bi=x3i; do S=r();x1i=Ai+S*(Bi-Ai);tf2=cons(x1); while(tf2=0); do S=r();x2i=Ai+S*(Bi-Ai);tf2=cons(x2); while(tf2=0); do S=r();x3i=Ai+S*(Bi-Ai);tf2=cons(x3); while(tf2=0); while(tf1=0); fori XRi=XCi+H*(XCi-x1i); /* fori pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京石景山区招聘社区工作者62人考前自测高频考点模拟试题及一套完整答案详解
- 2025福建三明市教育局华东师范大学附属三明中学招聘紧缺急需专业工作人员18人考前自测高频考点模拟试题及答案详解(有一套)
- 辽宁省朝阳市多校2024-2025学年高一下学期6月联合考试地理试卷(解析版)
- 一次勇敢的挑战记事类作文9篇
- 2025年宝鸡千阳县中医医院招聘(15人)考前自测高频考点模拟试题及1套参考答案详解
- 2025广西贵港市公安局招聘警务辅助人员50人模拟试卷及答案详解(名师系列)
- 2025年嘉兴市秀洲区教育体育局所属事业单位公开选聘工作人员2人考前自测高频考点模拟试题及1套完整答案详解
- 2025广西贺州市人民医院招聘残障人士人员考前自测高频考点模拟试题及答案详解1套
- 多功能客户服务响应系统
- 一次春游活动日记(11篇)
- DB4405-T 303-2023 狮头鹅屠宰操作规程
- 经合组织成员国
- 浅谈如何做好危化品安全管控工作
- 人工智能技术及应用习题答案题库
- 县中医院妇科重点专科建设汇报
- 坚持人民至上 工会研讨发言
- 美学原理全套教学课件
- 期末复习(课件)新思维英语四年级上册
- 子宫脱垂试题及答案
- GB/T 90.1-2023紧固件验收检查
- 中国政治思想史复习资料
评论
0/150
提交评论