1、合肥工业大学机械优化设计课程实践报告合肥工业大学机械优化设计课程实践研究报告班 级: 学 号: 姓 名: 授课教师: 日 期: 2016年 11 月 7 日 作业要求1、0.618的证明、一维搜索程序作业;2、单位矩阵程序作业;3、注释最佳再现给定运动规律连杆机构优化设计问题模型子程序;4、连杆机构问题 自行选择小型机械设计问题或其他工程优化问题;(1)分析优化对象,根据设计问题的要求,选择设计变量,确立约束条件,建立目标函数,建立优化设计的数学模型并编制问题程序;(2)选择适当的优化方法,简述方法原理,进行优化计算;(3)进行结果分析,并加以说明。5、写出课程实践心得体会,附列程序文本。一、
2、0.618的证明、一维搜索程序作业1、0.618法的基本思想“0.618法”,又称为黄金分割法,是常用的一种一维搜索试探方法,适用于区间上的任何单调函数求极小值问题。0.618法是建立在区间消去法原理基础上的试探方法,即在搜索区间内适当插入两点、,且,如下图所示。通过比较函数值与的大小,应用函数的单调性,可得出以下两种情况:1)若,则取为缩短后的区间。2)若,则取为缩短后的区间。然后在保留下来的区间上进行同样的处置,如此迭代下去,使搜索区间无限缩小,从而得到极小点的数值近似解。2、关于0.618法中参数0.618的证明 0.618法要求插入点,的位置相对于区间两端点具有对称性,即假设,根据以上
3、公式,得出分割后的区间如下图所示:进行再次分割时,0.618法要求在保留下来的区间内再插入一点,所形成的区间新三段与原来区间的三段具有相同的比例分布。假设保留下来的区间为,区间长度为。为了保持相同的比例分布,根据以上公式计算,新插入点应在位置上,在原区间的位置相当于在保留区间的位置。所谓0.618法,就是使整段长与较长段的长度比值等于较长段与较短段长度的比值,即:通过计算解得。 若保留下来的区间为,根据插入点的对称性,也能推得同样的值。3、一维搜索程序作业0.618法的搜索过程如下:1)给出初始搜索区间及收敛精度,将代入0.618。2)按坐标点计算公式计算和,并计算其对应的函数值。3)根据区间
4、消去法原理缩短搜索区间。4)检查区间是否缩短到足够小和函数值是否收敛到足够近,如果条件不满足,则返回第二步。5)如果条件满足,取最后两实验点的平均值作为极小点的数值近似解。程序框图如下:根据以上思路,下面借助C+,运用0.618法求解正弦函数的极小值。初始区间为程序代码如下:/ 0.618.cpp : 定义控制台应用程序的入口点。#include stdafx.h#include#include#include #define PI 3.1415926using namespace std;float main() float a=0,b=2*PI,t; /t为计算精度 float a1,a2
5、,y1,y2,A,min; /A为极小点,min为所对应的极小值 float r=0.618; int p=0; /p为迭代次数 coutt; 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); co
6、utn迭代次数为: pendl; cout在【0,2】区间内正弦函数的最小值为:setprecision(9) minendl; system(pause); return 0;程序运行结果如下二、单位矩阵程序作业作业要求:编写生成阶单位矩阵的程序,要求维数在程序运行时从键盘输入。C+程序代码如下:#include stdafx.h#includeusing namespace std;int main() int i,j,n; int a200200; coutn; for(i=0;in;i+) for(j=0;jn;j+) if(i=j) aij=1; else aij=0; cout N
7、 ; for(i=0;in;i+) cout.width(3); couti+1; coutn; for(i=0;in+1;i+) cout-; coutn; for(i=0;in;i+) cout.width(2); couti+1:; for(j=0;jn;j+) cout.width(3); coutaij; cout0 且 PI=0 & Ai=pi) Bi=pi-m-n; else Bi=pi-m+n; endf=f+(Bi-Bei)2; %Bi为曲柄每转过一个角度时,摇杆实际转过的角度end定义非线性约束条件M文件functionc,ceq=mycon(x) c=acos(x(1)2
8、+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=-1 0;0 -1;-1 -1;1 -1;-1 1;b=-1;-1;-6;4;4;x,fval=fmincon(myobj,x0,A,b,nonlcon)程序运行结果如下:通过MATLAB编程求解得到该问题的最优解为 2、其他工程问题:运装计划:某航空公司的运输机分前、后舱两部分装运客货,前舱容积为,最大装载量为,后舱容积为
9、,最大装载量为。今有客货两种,其单位体积及总重量如下表所示,表中还列出两种客货的运输单价。装载时要求前后舱的载重量保持在的比例,若货物一次装不完,剩下的货物可随其他客货第二次运出。试为公司安排一个装货计划,使该次航班的收益最大。货品总重量/t单位体积/()运费/(元/t)甲2020200乙1240300建立数学模型:设a、b分别表示装载甲、乙货品的重量,下标1、2分别表示运输机的前、后舱。根据题意,此问题的目标函数为:按规定,运输机对装载重量和体积有要求,所以有下列约束条件:装载货物的总重量不可能超过所需运输的货物总重量,且货物重量不能为负值,故:同时,运输机要求前、后舱的载重量保持1:1.5的比例:转化为MATLAB的数学模型为:运用MATLAB求解代码如下:clear,clcf=-200;-200;-300;-300;A=1 1 0 0;0 0 1 1;1 0 1 0;0 1 0 1;20 0 40 0;0 20 0 40;b=20;12;10;15;160;320;Aeq=1.5 -1 1.5 -1;beq=0;lb=zeros(4,1);x,fval=linprog(f,A,b,Aeq,beq,lb)求解结果如下:结果显示:当时,可使该航班的收益最大,最大收益为4400元五、课程实践心得体会
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1