合肥工业大学《机械优化设计》课程实践报告Word文件下载.docx
- 文档编号:8437935
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:19
- 大小:891.29KB
合肥工业大学《机械优化设计》课程实践报告Word文件下载.docx
《合肥工业大学《机械优化设计》课程实践报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《合肥工业大学《机械优化设计》课程实践报告Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
,则取
为缩短后的区间。
2)若
然后在保留下来的区间上进行同样的处置,如此迭代下去,使搜索区间无限缩小,从而得到极小点的数值近似解。
2、关于0.618法中参数λ=0.618的证明
0.618法要求插入点
,
的位置相对于区间
两端点具有对称性,即
假设
,根据以上公式,得出分割后的区间如下图所示:
进行再次分割时,0.618法要求在保留下来的区间内再插入一点,所形成的区间新三段与原来区间的三段具有相同的比例分布。
假设保留下来的区间为
,区间长度为
。
为了保持相同的比例分布,根据以上公式计算,新插入点
应在
位置上,
在原区间的
位置相当于在保留区间的
位置。
所谓0.618法,就是使整段长与较长段的长度比值等于较长段与较短段长度的比值,即:
通过计算解得
若保留下来的区间为
,根据插入点的对称性,也能推得同样的
值。
3、一维搜索程序作业
0.618法的搜索过程如下:
1)给出初始搜索区间及收敛精度,将λ代入0.618。
2)按坐标点计算公式计算
和
,并计算其对应的函数值。
3)根据区间消去法原理缩短搜索区间。
4)检查区间是否缩短到足够小和函数值是否收敛到足够近,如果条件不满足,则返回第二步。
5)如果条件满足,取最后两实验点的平均值作为极小点的数值近似解。
程序框图如下:
根据以上思路,下面借助C++,运用0.618法求解正弦函数的极小值。
初始区间为
程序代码如下:
//0.618.cpp:
定义控制台应用程序的入口点。
#include"
stdafx.h"
#include<
iostream>
iomanip>
#include<
cmath>
#definePI3.1415926
usingnamespacestd;
floatmain()
{
floata=0,b=2*PI,t;
//t为计算精度
floata1,a2,y1,y2,A,min;
//A为极小点,min为所对应的极小值
floatr=0.618;
intp=0;
//p为迭代次数
cout<
<
"
请输入计算精度,如0.1:
;
cin>
>
t;
a1=b-r*(b-a);
a2=a+r*(b-a);
y1=sin(a1);
y2=sin(a2);
while(abs((b-a)/b)>
=t||abs((y2-y1)/y2)>
=t)
{
if(y1>
=y2)
{
a=a1;
a1=a2;
y1=y2;
a2=a+r*(b-a);
y2=sin(a2);
}
else
b=a2;
a2=a1;
y2=y1;
a1=b-r*(b-a);
y1=sin(a1);
p++;
}
A=(a+b)/2;
min=sin(A);
\n迭代次数为:
p<
endl;
在【0,2π】区间内正弦函数的最小值为:
setprecision(9)<
min<
system("
pause"
);
return0;
}
程序运行结果如下
二、单位矩阵程序作业
Ø
作业要求:
编写生成
阶单位矩阵的程序,要求维数
在程序运行时从键盘输入。
C++程序代码如下:
intmain()
inti,j,n;
inta[200][200];
请输入n*n单位矩阵的阶数(n小于200):
n;
for(i=0;
i<
i++)
for(j=0;
j<
j++)
if(i==j)
a[i][j]=1;
else
a[i][j]=0;
N"
cout.width(3);
cout<
i+1;
\n"
n+1;
cout<
---"
cout.width
(2);
i+1<
:
{
cout.width(3);
cout<
a[i][j];
}
程序运行结果如下:
三、注释最佳再现给定运动规律连杆机构优化设计
问题模型子程序
对给定的最佳再现给定运动规律连杆机构优化设计问题模型子程序(FORTRAN语言)进行必要的注释。
注释结果
连杆机构问题函数子程序
目标函数==============
SUBROUTINEFFX(N,X,FX)/定义目标函数(子函数)FFX/
======================
DIMENSIONX(N)/定义一维数组X/
COMMON/ONE/I1,I2,I3,I4,NFX,I6/开辟公共区域ONE,其中有整型变量I1、I2、I3、I4、I6,实型变量NFX/
NFX=NFX+1
P0=ACOS(((1.0+X
(1))**2-X
(2)**2+25.0)/(10.0*(1.0+X
(1))))
Q0=ACOS(((1.0+X
(1))*+*2-X
(2)**2-25.0)/(10.0*X
(2)))
T=90.0*3.1415926/(180.0*30.0)将输入角30等份
FX=0.0
DO10K=0,30/DO语句实现循环功能,循环初值为0,终值为30/
PI=P0+K*T
QE=Q0+2.0*(PI-P0)**2/(3.0*3.1415926)
D=SQRT(26.0-10.0*COS(PI))
AL=ACOS((D*D+X
(2)*X
(2)-X
(1)*X
(1))/(2.0*D*X
(2)))
BT=ACOS((D*D+24.0)/(10.0*D))
IF(PI.GE.0.0.AND.PI.LT.3.1415926)THEN/IF条件语句:
若PI>
0‘且’PI<
π,则执行件/
QI=3.1415926-AL-BT/THEN块,条件满足选择此句/
ELSE
QI=3.1415926-AL+BT/ELSE块,条件不满足选择此句/
ENDIF/结束IF选择结构/
IF(K.NE.0.OR.k.NE.30)THEN
FX=FX+(QI-QE)**2*T
FX=FX+(QI-QE)**2*T/2.0
ENDIF
10CONTINUE
END/程序停止运行/
不等约束=================
SUBROUTINEGGX(N,KG,X,GX)/计算不等式约束函数子程序GGX/
=========================
DIMENSIONX(N),GX(KG)/一维数组X、GX/
GX
(1)=1.0-X
(1)
GX
(2)=1.0-X
(2)
GX(3)=1.0-5.0
GX(4)=(1.0+X
(1))-(X
(2)+5.0)
GX(5)=(1.0+X
(2))-(X
(1)+5.0)
GX(6)=(1.0+5.0)-(X
(1)+X
(2))
GX(7)=-(1.4142*X
(1)*X
(2)-X
(1)**2-X
(2)**2)-16.0
GX(8)=-(X
(1)**2+X
(2)**2+1.4142*X
(1)*X
(2))+36.0/不等式约束条件GX
(1)、GX
(2)、GX(3)、GX(4)、GX(5)、GX(6)、GX(7)、GX(8)/
END/使程序停止运行/
等式约束=================
SUBROUTINEHHX(N,KH,X,HX)/计算等式约束函数子程序HHX/
DIMENSIONX(N),HX(KH)/定义一维数组X、HX/
X
(1)=X
(1)
四、连杆机构问题+其他工程优化问题
1、连杆机构问题
设计一曲柄连杆摇杆机构,要求曲柄
从
转到
时,摇杆
的转角最佳再现已知的运动规律:
且
为极位角,其传动角允许在
范围内变化。
解:
1、设计变量的确定
已知
,根据余弦定理有:
因此,只有
为独立变量,则设计变量为
2、目标函数的建立
目标函数可根据已知的运动规律与机构实际运动规律之间的偏差最小为指标来建立,先假设在
间进行30等分,则可得目标函数的表达式:
式中:
3、约束条件的确定
曲柄存在的条件:
传动角要求:
4、优化计算结果
运用MATLAB编程求解:
●定义目标函数M文件
functionf=myobj(x)
f=0;
%f为目标函数
Ao=acos(((1+x
(1))^2-x
(2)^2+25)/(10*(1+x
(1))));
%Ao--初始极位角,x
(1)--L2,x
(2)--L3
Bo=acos(((1+x
(1))^2-x
(2)^2-25)/(10*x
(2)));
%Bo--初始位置角
forAi=Ao:
(pi/2)/30:
(Ao+pi/2)
%极位角Ai从Ao开始,分100等分,一直转到Ao+90°
的角度
Bei=Bo+2*(Ai-Ao)^2/(3*pi);
%Bei为理想情况下曲柄每转过一个角度时,摇杆转过的角度
r=sqrt(26-10*cos(Ai));
m=acos((r^2+x
(2)^2-x
(1)^2)/(2*r*x
(2)));
n=acos((r^2+24)/(10*r));
if(Ai>
=0&
&
Ai<
=pi)
Bi=pi-m-n;
else
Bi=pi-m+n;
end
f=f+(Bi-Bei)^2;
%Bi为曲柄每转过一个角度时,摇杆实际转过的角度
end
●定义非线性约束条件M文件
function[c,ceq]=mycon(x)
c=[acos((x
(1)^2+x
(2)^2-36)/(2*x
(1)*x
(2)))-135*(pi/180);
45*(pi/180)-acos((x
(1)^2+x
(2)^2-16)/(2*x
(1)*x
(2)))];
%c为非线性不等式约束(传动角要求)
ceq=[];
%ceq为非线性等式约束(无)
●调用主程序
x0=[6,3];
A=[-10;
0-1;
-1-1;
1-1;
-11];
b=[-1;
-1;
-6;
4;
4];
[x,fval]=fmincon(@myobj,x0,A,b,[],[],[],[],@nonlcon)
通过MATLAB编程求解得到该问题的最优解为
2、其他工程问题:
运装计划:
某航空公司的运输机分前、后舱两部分装运客货,前舱容积为
,最大装载量为
,后舱容积为
今有客货两种,其单位体积及总重量如下表所示,表中还列出两种客货的运输单价。
装载时要求前后舱的载重量保持在
的比例,若货物一次装不完,剩下的货物可随其他客货第二次运出。
试为公司安排一个装货计划,使该次航班的收益最大。
货品
总重量/t
单位体积/(
)
运费/(元/t)
甲
20
200
乙
12
40
300
建立数学模型:
设a、b分别表示装载甲、乙货品的重量,下标1、2分别表示运输机的前、后舱。
根据题意,此问题的目标函数为:
按规定,运输机对装载重量和体积有要求,所以有下列约束条件:
装载货物的总重量不可能超过所需运输的货物总重量,且货物重量不能为负值,故:
同时,运输机要求前、后舱的载重量保持1:
1.5的比例:
转化为MATLAB的数学模型为:
运用MATLAB求解代码如下:
clear,clc
f=[-200;
-200;
-300;
-300];
A=[1100;
0011;
1010;
0101;
200400;
020040];
b=[20;
12;
10;
15;
160;
320];
Aeq=[1.5-11.5-1];
beq=[0];
lb=zeros(4,1);
[x,fval]=linprog(f,A,b,Aeq,beq,lb)
求解结果如下:
结果显示:
当
时,可使该航班的收益最大,最大收益为4400元
五、课程实践心得体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械优化设计 合肥 工业大学 机械 优化 设计 课程 实践 报告