当前位置:文档之家› 优化设计程序上课讲义

优化设计程序上课讲义

《机械优化设计》
实验报告
班级:机械设计(5)班姓名:林斯宇
学号:0901102028
1 目标函数方程式:
F=ax A4+bx A3+cx A2+dx+e
其中a=1.2,b=-1,c=-1,d=-10,c=181, 初始点xO=O,步长h=0.1,收敛精度e=0.0001
2 实验目的:通过上机编程,理解进退法、黄金分割法的原理,了解计算机在优化设计中的应用。

3 黄金分割法的基本原理
一维收索是解函数极小值的方法之一,其解法思想为沿某已知方向求目标函数的极小值点。

这种方法的适应面非常广。

黄金分割法也是建立在区间削去法则原理基础上的试探方法。

黄金分割法是用于一元函数
f(x)在给定初始区间[a,b]内搜索极小点a *的一种方法。

它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化算法的基础,但它只适用于一维区间上的凸函数[6],即只在单峰区间内才能进行一维寻优,其收敛效率较低。

其基本原理是:依照“去劣存优”原则、对称原则、以及等比收缩原则来逐步缩小搜索区间⑺。

具体步骤是:在区间[a,b]内取点:al,a2把[a,b]分为三段。

如果f(a1)>f(a2), 令a=a1,a仁a2,a2=a+r*(b-a);如果f(a1)<f(a2),令b=a2, a2=a1,a仁b-r*(b-a),如果 | (b-a)/b | 和丨(y1-y2)/y2 |都大于收敛精度&重新开始。

因为[a,b]为单峰区间,这样每次可将搜索区
间缩小0.618 倍或0.382 倍,处理后的区间都将包含极小点的区间缩小,然后在保留下来的区间上作同样的处理,如此迭代下去,将使搜索区[a,b]逐步缩小,直到满足预先给定的精度
时,即获得一维优化问题的近
rl^a+0.3S2Cb-a)
r2=a+0.618(b-a)
如图Elx2)>f(H)
所UZ新区间为[仏找]也対新区间継
续求新的试点
最优解。

黄金分割法原理如图所示,
4实验所编程序框图
(1 )进退法计算框图
0H3-5 进退算法确定单峰区间的计算植图
结束
(2)黄金分割法计算框图
输出
S 束J
黄金分割法计算框图
5 程序源代码
6 程序
#include<math.h>
#include<stdio.h>
#define
f(x) 1.2*pow(x,4)+(-1)*pow(x,3)+(-1)*pow(x,2)+(-10)*pow(x,1
)+181
main()
{
double F1,F2,F3,W,x1,x2,x3,q,a,b,c;
int n;
n=1;
printf("c=");
scanf("%lf",&c);
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("n a b x1 x2 F1
F2\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 %.4 lf\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 %.4 lf\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 %.4 lf\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=%.5lf W=%.5lf\n",q,W);
getchar();
}
运行结果截图:
E: \C++\CTuYan\bin\fiteip. exe
mi
o
mi
n a b x 1 x2 Fl F2
1 10.0000 0.1000 6.218
2 3.8818 1633. ?9U 341.0882
2 6.2182 0.1000 3.8818 2.4372 341.0832 178.5490
3 3.8818 0.1000 2•惋1.5446 178.5490 166.3134
4 2.4372 0.1000 1.5446 0.9928 166.3134 170.2737
5 2.4372 0.9928 0.4410 1.544
6 176.3546 166.3134 5 0.4410 0.9928 1.5446 0.7820 166.3134 172.5387
7 0.4410 0.7820 0.9123 1.5446 171.1159 166.3134
B 0.9123 0.7820 1.5446 0.8318 166.3134 171.9892
9 0.9123 0.8318 0.8010 1.5446 172.3281 166.3134
10 0.8010 0.8318 1.5446 0.8200 166.3134 172.1184
11 0.8010 0.8200 0.8273 1.5446 172.0385 166.3134
12 0.8273 0.8200 1.5446 0.8228 166.3134 172.0879
13 0.8273 0.8228 0.8211 1.5446 172. l')67 166.3134
14 0.8211 0.8228 1.5446 0.8222 166.3134 172.0951
15 0.8211 0.8222 0.8226 1.5446 172.0906 166.3134
16 0.8226 0.8222 1.5446 0.8223 166.3134 172.0934 q=O. 82236 W=172.09284
Press any key to continue
RQPinyin 半:。

相关主题