机械优化设计研究生大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]; %组合矩阵