机械优化设计实例(附带程序和算法框图)Word下载.docx

上传人:wj 文档编号:8153611 上传时间:2023-05-10 格式:DOCX 页数:7 大小:96.37KB
下载 相关 举报
机械优化设计实例(附带程序和算法框图)Word下载.docx_第1页
第1页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第2页
第2页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第3页
第3页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第4页
第4页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第5页
第5页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第6页
第6页 / 共7页
机械优化设计实例(附带程序和算法框图)Word下载.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机械优化设计实例(附带程序和算法框图)Word下载.docx

《机械优化设计实例(附带程序和算法框图)Word下载.docx》由会员分享,可在线阅读,更多相关《机械优化设计实例(附带程序和算法框图)Word下载.docx(7页珍藏版)》请在冰点文库上搜索。

机械优化设计实例(附带程序和算法框图)Word下载.docx

g3(X)=-(3-2X)≤0

三、求解问题选择的优化算法

此问题的求解属于一维优化问题,所选择的优化算法为黄金分割法。

四、外推法确定最优解的搜索区间

用外推法确定函数S(X)=4X2-14X+12的初始搜索区间。

设初始点α0=0,初始步长h=1。

α0=0,S0=S(α0)=12;

α1=α0+h=0+1=1,S1=S(α1)=2;

比较S0和S1,因为S1<

S0,故正向搜索:

h=2h=2x1=2,α2=α1+h=1+2=3,S2=6;

比较S1和S2,因为S2>

S1,此时已经形成S0>

S1<

S2的局面,故搜索区间可定为[a,b]=[1,3]。

五、算法框图

开始

输入a=1,b=3,ε=0.00

α1=b-0.618(b-a);

α2=a+0.618(b-a)

-

S1=S(α1);

S2=S(α2);

S2?

Y N

S1=S(α1)

α2=a+0.618(b-a);

S2=S(α2);

a=α1;

α1=α2;

S1=S2

b=α2;

α2=α1;

S2=S1;

▏a-b▏≦ε?

Y N

α*=0.5(a+b);

S*=S(α*)

Y

结束

六、算法程序

#include<

math.h>

stdio.h>

doubleobfunc(doublex)

{

doubleff;

ff=4*X*X-14*X+12;

return(ff);

}

voidjts(doublex0,doubleh0,doubles[],intn,doublea[],doubleb[])

inti;

doublex[3],h,f1,f2,f3;

h=h0;

for(i=0;

i<

n;

i++)

x[0]=x0;

f1=obfunc(x[0]);

i++)x[1]=x[0]+h*s[i];

f2=obfunc(x[1]);

if(f2>

=f1)

{

h=-h0;

for(i=0;

x[2]=x[0];

f3=f1;

{

x[0]=x[1];

x[1]=x[2];

}

f1=f2;

f2=f3;

for(;

;

h=2.0*h;

for(i=0;

x[2]=x[1]+h*s[i];

f3=obfunc(x[2]);

if(f2<

f3)

break;

else

{

for(i=0;

{

x[0]=x[1];

x[1]=x[2];

}

f1=f2;

f2=f3;

}

}

if(h<

0)

for(i=0;

{

a[i]=x[2];

b[i]=x[0];

else

a[i]=x[0];

b[i]=x[2];

printf("

%4d"

n);

}

doublegold(doublea[],doubleb[],doubleeps,intn,doublexx)

doublef1,f2,ff,q,w;

doublex[3];

x[0]=a[i]+0.618*(b[i]-a[i]);

x[1]=a[i]+0.382*(b[i]-a[i]);

f1=obfunc(x[0]);

f2=obfunc(x[1]);

do

if(f1>

f2)

for(i=0;

{b[i]=x[0];

x[0]=x[1];

}

f1=f2;

i++)

x[1]=a[i]+0.382*(b[i]-a[i]);

f2=obfunc(x[1]);

}

else

{for(i=0;

{

a[i]=x[1];

x[1]=x[0];

}

f2=f1;

x[0]=a[i]+0.618*(b[i]-a[i]);

f1=obfunc(x[0]);

q=0;

for(i=0;

i++)

q=q+(b[i]-a[i])*(b[i]-a[i]);

w=sqrt(q);

}while(w>

eps);

for(i=0;

xx=0.5*(a[i]+b[i]);

ff=obfunc(xx);

printf("

xx=ff=%5.2f,,,,%5.2f"

xx,ff);

return(ff);

voidmain()

{

intn=1;

doublea[1],b[1],xx;

doubles[]={1},x0=0;

doubleeps1=0.001,h0=0.1;

jts(x0,h0,s,n,a,b);

gold(a,b,eps1,n,xx);

七、程序运行结果与分析

(1)程序运行结果(截屏)

(2)结果分析、

对与函数S(X)=(4-2X)(3-2X)=4X2-14X+12,令

S'

(X)=8X-14=0可解的X=1.75,说明程序运行结果正确。

八、心得与体会

通过对问题的求解让我更好的理解了黄金分割法的思想和外推法求搜索区间的方法,而这些也巩固了我的课堂所学。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2