机械优化设计实例(附带程序和算法框图)Word下载.docx
《机械优化设计实例(附带程序和算法框图)Word下载.docx》由会员分享,可在线阅读,更多相关《机械优化设计实例(附带程序和算法框图)Word下载.docx(7页珍藏版)》请在冰点文库上搜索。
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,说明程序运行结果正确。
八、心得与体会
通过对问题的求解让我更好的理解了黄金分割法的思想和外推法求搜索区间的方法,而这些也巩固了我的课堂所学。