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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一题1.1 题目

求函数f(X)=x

14-2x

1

2x

2

-2x

1

x

2

+3x

1

2+4x

2

2+4.5x

1

-4x

2

+5的极小值,初始点为

X(0)=[-2,2]T,误差ε不大于0.001。

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

1.2 建立数学模型

Find x

1 , x

2

min f(X)=x

14-2x

1

2x

2

-2x

1

x

2

+3x

1

2+4x

2

2+4.5x

1

-4x

2

+5

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

1.3 运行结果

代值

迭代次

x1 x2 f

1 -0.500 -0.58333333333333 8.33333333333333

2 -0.566 0.372 3.293

3 -0.65287432092310 0.39898283419758 2.97857158805445

4 -0.653 0.43 2.97849714375511

5 -0.659 0.43 2.97849714338108

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

ξ≤。

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.656 0.45

fval =2.97849714628600

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

0.001。

1.6 讨论

(1)由以上迭代曲线可知,牛顿法迭代收敛速度很快,本优化经过迭代3次后目标函数值趋于平稳。也可采用黄金分割法,变尺度法等其他方法优化。由于本题比较简单,不必采用变尺度法来优化。

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

1.7 Matlab源程序

function ZY32

format long

syms x1 x2 %定义符号变量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

while eps>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); % 画目标函数变化图

grid on;

hold on;

xlabel('迭代次数');

ylabel('f(x)');

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

figure(2)

plot(xx(:,1));

grid on;

xlabel('迭代次数');

ylabel('x1迭代值');

title('x1变化图');

figure(3)

plot(xx(:,2));

grid on;

xlabel('迭代次数');

ylabel('x2迭代值');

title('x2变化图');

第二题2.1 数学模型

Find x

1 , x

2

min f (X)=2x

12+2x

2

2-4x

1

-6x

2

s.t. g

1(X)=x

1

+5x

2

-5≤0

g 2(X)=2x

1

2-x

2

≤0

g 3(X)=-x

1

≤0

g 4(X)=-x

2

≤0

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

2.2 优化方法

此问题可规结为强约束问题,此题用罚函数法对在求解强约束非线性优化问题求解。用功能函数constr可以解决此类问题,本题中目标函数是非线性的,约束是线性的。

2.3 优化结果

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

自变量取值:X =[0.6589, 0.8682]T

验证优化结果正确。

2.4 Matlab 源程序

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

Function questions2.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=[funf fung]; %组合矩阵

相关文档
最新文档