系统优化设计大作业

发布 2021-05-05 15:53:28 阅读 8168

系统优化设计算法。

指导老师:孙xx

姓名: 李x

学号:02009xxx

日期:2012/11/29

目录。一、 **分割法。

1.1编程原理3

1.2程序源**3

1.3程序框图6

1.4运行结果7

1.5实例考核9

1.6结论9

二、 二次插值法。

2.1编程原理10

2.2程序源**10

2.3程序框图12

2.4运行结果13

2.5实例考核14

2.6结论14

三、 鲍威尔法。

3.1编程原理15

3.2程序源**16

3.3程序框图22

3.4运行结果23

3.5实例考核24

3.6结论26

一、 **分割法。

1.1编程原理。

**分割法的搜索过程是:

1)给出初始搜索区间【a,b】及收敛精度,将赋以0.618

2)按照坐标点计算公式计算a1和a2,并计算其对应的f(a1),f(a2)。

3)根据区间消去原理缩小搜索区间。为了能用原来的坐标点计算公式,需进行区间名称的代换,并在保留区间中计算一个新的试验点及其函数值。

4)检查区间是否缩短到足够小和函数值是否收敛到足够近,如果条件不满足则返回到步骤2。

5)如果条件满足,则取最后两试验点的平均值作为作为极小点的数值近似解。

1.2程序源**。

syms x

disp('请输入函数')

f=input('请输入函数f=')

if isempty(f)

f=x.^2+2*x

enda=input('请输入函数搜索区间的左极限a=')

b=input('请输入函数搜索区间的左极限b=')

error=input('请输入精度[1e-3]error=')

if isempty(error)

error=1e-3

enddisp('正在用**分割法很努力地计算……'

x_end,y_end]=god(f,x,a,b,error)

function [x_end,y_end]=god(f,x,a,b,error)

l=0.618;

x_end=0;

x1=b-l*(b-a);

x2=a+l*(b-a);

y1=subs(f,x,x1);

y2=subs(f,x,x2);

while abs((b-a)./b)>=error||abs((y2-y1)./y2)>=error

if(y1>=y2)

a=x1x1=x2

y1=y2x2=a+l*(b-a)

y2=subs(f,x,x2);

elseb=x2

x2=x1y2=y1

x1=b-l*(b-a)

y1=subs(f,x,x1);

endx_end=(a+b)./2

endx_end=(a+b)./2

y_end=subs(f,x,x_end)

1.3程序框图。

是否。是否。

1.4运行结果。

最终结果与理论解x=-1,y=-1十分接近,可以认为是正确的。

表1.4.1是迭代12次的结果。

可以看出,函数的最优解收敛很快,6次以后的迭代过程中结果变化很小。

表1.4.1

1.5实例考核。

附录一维搜索考核题minf(t)=t2-10t+36

用我所编的搜索程序得到的结果时。

这与理论值t=5 ,f(t)=11吻合地很好,证明了该程序的通用性。

1.6结论。

该**分割法搜索程序很好地完成了一维问题最优解的搜索,并通过实例得到了印证。可以认为,该程序的编写是成功的,可以用来作为解决一维最优解搜索问题的通用方法。

二、二次插值法。

2.1编程原理。

二次插值法又称抛物线法。它是利用y=f(a)在单谷区间中的三点a1f(a2)p(a)=a0+a1a+a2a2

多项式p(a)的极值点ap就是f(a)的极小点的近似解。

因此,首先应该在函数曲线上找到高-低-高三点,然后根据区间消去原理逐渐缩短区间,直到满足精度要求为止。

2.2程序源**。

syms x

disp('请输入函数')

f=input('请输入函数f=')

if isempty(f)

f=sin(x)

enda=input('请输入函数搜索区间的左极限a=')

c=input('请输入函数搜索区间的左极限b=')

error=input('请输入精度[1e-3]error=')

if isempty(error)

error=1e-3

enddisp('正在用二次插值法很努力地计算……'

x_end,y_end]=two(f,x,a,c,error)

function [x_end,y_end]=two(f,x,a,c,error)

b=(a+c)./2;

x_end=b;

while ((c-a)>error)

y1=subs(f,x,a)

y2=subs(f,x,b)

y3=subs(f,x,c)

a1=((b.^2-c.^2)*y1+(c.^2-a.^2)*y2+(a.^2-b.^2)*y3)./a-b)*(b-c)*(c-a))

a2=-(b-c)*y1+(c-a)*y2+(a-b)*y3)./a-b)*(b-c)*(c-a))

x_end=-a1./(2*a2);

if (y2 c=x_end;

elsea=b

b=x_end;

endend

x_endy_end=subs(f,x,x_end)

2.3程序框图。

2.4运行结果。

最终结果与理论解十分接近,可以认为程序是正确的。

2.5实例考核。

附录一维搜索考核题minf(t)=t4-5t3+4t2-6t+60

根据我所编的搜索程序,当收敛精度要求为0.001时得到的结果为。

这与理论值t=3.2796 ,f(t)=22.6590十分接近,证明了上面程序的通用性。

2.6结论。

该二次插值法搜索程序很好地完成了一维问题最优解的搜索,并通过实例得到了印证。可以认为,该程序的编写是成功的,可以用来作为解决一维最优解搜索问题的通用方法。

三、鲍威尔法。

3.1编程原理。

3.1.1基本powell算法步骤。

1) 任选一初始点x0,再选两个线性无关的向量,如坐标轴单位向量e1=[0,1]t、e2=[1,0]t作为初始搜索方向。

2) 从x0出发,顺次沿e1、e2作一维搜索得点,两点连线得一新方向。用代替形成两个线性无关向量,作为下一轮迭代的搜索方向。再从出发,沿作一维搜索得点,作为下一轮迭代的初始点。

机械优化设计大作业

1.题目自拟。多元函数优化问题。2.已知条件。根据具体题目确定。3.作业要求。1 建立优化模型 包括设计变量 目标函数 约束条件 2 程序求解,可以选用c fortran basic等编程语言或matlab maple等工具软件,写出最优解。3 学习本课程的心得体会。不少于 4 用a4纸打印。注意 ...

机械优化设计大作业

一 问题的描述。设计一重量最轻的空心传动轴。空心传动轴的d d分别为轴的外径和内径。轴的长度不得小于3m。轴的材料为45钢,密度为7.8 10 6kg mm,弹性模量e 2 10 5mpa,许用切应力 60mpa。轴所受扭矩为m 1.5 10 6n mm。二 数学模型的建立。1 扭转强度。因为空心传...

机械优化设计大作业

1 体积小 重量轻 结构紧凑 传递功率大 承载能力高 2 传动效率高,工作高 3 传动比大。某行星齿轮减速器主要用于石油钻采设备的减速,其高速轴转速为1300r min 工作环境温度为 20 60 可正 反两向运转。按该减速器最小体积准则,确定行星减速器的主要参数。传动比u 4.64,输入扭矩t 齿...