机械优化设计研究生大作业.doc

上传人:b****3 文档编号:2356238 上传时间:2022-10-29 格式:DOC 页数:12 大小:319.52KB
下载 相关 举报
机械优化设计研究生大作业.doc_第1页
第1页 / 共12页
机械优化设计研究生大作业.doc_第2页
第2页 / 共12页
机械优化设计研究生大作业.doc_第3页
第3页 / 共12页
机械优化设计研究生大作业.doc_第4页
第4页 / 共12页
机械优化设计研究生大作业.doc_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

机械优化设计研究生大作业.doc

《机械优化设计研究生大作业.doc》由会员分享,可在线阅读,更多相关《机械优化设计研究生大作业.doc(12页珍藏版)》请在冰豆网上搜索。

机械优化设计研究生大作业.doc

第一题

1.1题目

求函数f(X)=x14-2x12x2-2x1x2+3x12+4x22+4.5x1-4x2+5的极小值,初始点为X(0)=[-2,2]T,误差ε不大于0.001。

注:

此问题为无约束非线性规划问题的求解。

1.2建立数学模型

Findx1,x2

minf(X)=x14-2x12x2-2x1x2+3x12+4x22+4.5x1-4x2+5

初始点X(0)=[-2,2]T,ε≤0.001

1.3运行结果

迭代值

迭代次数

x1

x2

f

1

-0.50000000000000

-0.58333333333333

8.33333333333333

2

-0.56606217616580

0.37068221070812

3.00457834092293

3

-0.65287432092310

0.39898283419758

2.97857158805445

4

-0.65084893915893

0.40135860990393

2.97849714375511

5

-0.65083910731569

0.40135662524523

2.97849714338108

通过牛顿法迭代5次可得出结果,当x1=-0.65083910731569,x2=0.40135662524523时,目标函数最优值fmin=2.97849714338108,且满足。

1.4迭代曲线

1.5检验结果

用Matlab自带优化程序检验

程序为:

>>x0=[-2,2];

[x,fval]=fminsearch('x

(1)^4-5*x

(1)^2*x

(2)-2*x

(1)*x

(2)+4*x

(1)^2+6*x

(2)^2+4.5*x

(1)-4*x

(2)+5',x0)

x=-0.650866586874660.40137142333985

fval=2.97849714628600

经检验用牛顿法进行迭代优化结果是正确的,优化结果达到精度要求,ε≤0.001。

1.6讨论

(1)由以上迭代曲线可知,牛顿法迭代收敛速度很快,本优化经过迭代3次后目标函数值趋于平稳。

也可采用黄金分割法,变尺度法等其他方法优化。

由于本题比较简单,不必采用变尺度法来优化。

(2)采用Matlab编程解决了求导和计算海森阵比较复杂的难题,编程简单方便。

1.7Matlab源程序

functionZY32

formatlong

symsx1x2%定义符号变量x1,x2

f=x1^4-2*x1^2*x2-5*x1*x2+6*x1^2+7*x2^2+4.5*x1-4*x2+5%定义函数f

df=[diff(f,x1);diff(f,x2)]

%diff(f,x1)用于对函数f中变量x1求偏导

%diff(f,x2)用于对函数f中变量x2求偏导

f1=diff(f,x1,2);%diff(f,x1,2)用于对函数f中变量x1求而二次偏导

f2=diff(diff(f,x1),x2);

%diff(diff(f,x1),x2)用于对函数f中变量下x1,x2求偏导

f3=diff(diff(f,x2),x1);

f4=diff(f,x2,2);%diff(f,x2,2)用于对函数f中变量x2求而二次偏导

ddf=[f1,f2;f3,f4];%求函数f的海森阵

x1=-2;x2=2;

td=eval(df);%计算梯度初值

hs=eval(ddf);%计算海森阵初值

%eval命令用于将符号变量转化为数值变量

i=0;

eps=0.1

whileeps>0.01;

i=i+1;

eps=sqrt(td

(1).^2+td

(2).^2);%求梯度的模

x=[x1;x2]-inv(hs)*td;%记录自变量迭代值

x1=x

(1);

x2=x

(2);

xx(i,:

)=x';%记录迭代过程中间值

td=eval(df);

hs=eval(ddf);

last(i)=eval(f);%记录迭代过程中间值

end

disp('迭代次数');

i

xx=xx

fmin=last

figure

(1)

plot(fmin);%画目标函数变化图

gridon;

holdon;

xlabel('迭代次数');

ylabel('f(x)');

title('f(x)函数迭代值');

figure

(2)

plot(xx(:

1));

gridon;

xlabel('迭代次数');

ylabel('x1迭代值');

title('x1变化图');

figure(3)

plot(xx(:

2));

gridon;

xlabel('迭代次数');

ylabel('x2迭代值');

title('x2变化图');

第二题

2.1数学模型

Findx1,x2

minf(X)=2x12+2x22-4x1-6x2

s.t.g1(X)=x1+5x2-5≤0

g2(X)=2x12-x2≤0

g3(X)=-x1≤0

g4(X)=-x2≤0

初始点X(0)=[0,0.75]T,ε=0.001

2.2优化方法

此问题可规结为强约束问题,此题用罚函数法对在求解强约束非线性优化问题求解。

用功能函数constr可以解决此类问题,本题中目标函数是非线性的,约束是线性的。

2.3优化结果

最小目标函数值f=-5.5039,

自变量取值:

X=[0.6589,0.8682]T

验证优化结果正确。

2.4Matlab源程序

在commandwindow输入question2,然后回车即行;

Functionquestions2.m

funf='f=x

(1)^2+4*x

(2)^2-7*x

(1)-5*x

(2);%定义目标函数

fung='g=[x

(1)+5*x

(2)-5;2*x

(1)^2-x

(2)];%定义约束条件

funi=[funffung];%组合矩阵

x0=[0,0];%初值;

options=1;%显示过程

vlb=[00];%下边界x;

vub=[];%无上边界;

[x,options]=constr(funi,x0,options,vlb,vub)

2.5计算结果

迭代次数

目标值f

自变量x1

自变量x1

约束g1

约束g2

约束g3

约束g4

1

1

0

1

0

-1

0

-1

2

-1.0000

-0.0000

1.0000

-1.0000e-008

-1.0000

1.0000e-008

-1

3

-1.0000

0

1.0000

-5.0000e-008

-1.0000

0

-1.0000

4

-10

5

0

0

50

-5

0

5

-12.7500

2.5000

0.5000

0

12

-2.5000

-0.5000

6

-8.6875

1.2500

0.7500

0

2.3750

-1.2500

-0.7500

7

-8.6875

1.2500

0.7500

-1.0000e-008

2.3750

-1.2500

-0.7500

8

-8.6875

1.2500

0.7500

-5.0000e-008

2.3750

-1.2500

-0.7500

9

-5.9365

0.7152

0.4511

-2.0293

0.5720

-0.7152

-0.4511

10

-5.5164

0.6609

0.8678

0

0.0059

-0.6609

-0.8678

11

-5.5164

0.6609

0.8678

1.0000e-008

0.0059

-0.6609

-0.8678

12

-5.5164

0.6609

0.8678

5.0000e-008

0.0059

-0.6609

-0.8678

13

-5.5039

0.6589

0.8682

0

8.5830e-006

-0.6589

-0.8682

14

-5.5039

0.6589

0.8682

1.0000e-008

8.6094e-006

-0.6589

-0.8682

15

-5.5039

0.6589

0.8682

-5.0000e-008

8.5930e-006

-0.6589

-0.8682

16

-5.5039

0.6589

0.8682

0

1.8429e-011

-0.6589

-0.8682

17

-5.5039

0.6589

0.8682

8.2958e-007

2.1864e-006

-0.6589

-0.8682

18

-5.5039

0.6589

0.8682

4.7634e-005

-9.5269e-006

-0.6589

-0.8682

19

-5.5039

0.6589

0.8682

-8.8818e-016

-1.1102e-016

-0.6589

-0.8682

20

-5.4905

0.6565

0.8682

-0.0024

-0.0062

-0.6565

-0.8682

21

-5.5044

0.6589

0.8680

-0.0013

2.6130e-004

-0.6589

-0.8680

22

-5.5039

0.6589

0.8682

-1.0000e-004

0.0000

-0.6589

-0.8682

2.6迭代曲线

2.7讨论

(1)利用Matlab优化工具箱里边的功能函数condtr来优化求解目标函数f,能很快实现优化,达到目标,方便快捷。

(2)由图可见迭代五次达到最低端,10次后趋于平稳。

(3)优化结果满足精度要求ε<0.001。

(4)可见Matlab很容易对目标实现优化,对编程人员要求不高。

只要知道如何使用命令。

第三题

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1