四连杆机构设计
Iter F-count 0 4 point 1 8 2 12 twice 3 16
Infeasible start
2.82 0.669 Hessian modified 2.75 Hessian modified
4 5 6 twice 7 8 9 10 11 12 13 14
20 24 28 32 36 40 44 48 52 56 60
Optimized design for four bar linkage mechanism of crushing machine based on MATLAB
Jason Zhang (Shantou University, Engineering College)
[Abstract] Analyze the model of four bar linkage mechanism and try to satisfy the movement locus that we excepted. With the strong functions of MATLAB, we can calculate and get the best result quickly. Then write a program to simulate the movement locus of the output and examine whether it satisfy our requirement. [Key Words] Linkage, Movement locus , Optimized Design, MATLAB
则偏差为
,
4. 确定约束条件
不等式约束 曲柄摇杆机构各机构的长度应大于零,曲柄a的长度最短,故设计变量的边界约束为
g1 ( x) 1 0 ;
m 1, n 1, l 1
g 2 ( x) 1 l n m 0 ;
g 3 ( x) 1 m l n 0 ;
( xm x0 ) / m 1 / 60 0
( ym y0 ) / m 0.301/ 900
3)设取结点总数m=3
i 1 2 3
xi
1.067 1.500 1.933
y i log xi
0.0283 0.1761 0.2862
i ( xi x0 ) /
2 arctan[(A A2 B 2 C 2 ) /(B C )] 0 ;
期望函数所求得的动件转角为:
, [ l o g x0 ( ) y0 ] / ;
式中:
A sin( 0 ); B cos( 0 ) n ;
C (1 m 2 n 2 l 2 ) /(2m) n c o s( 0 ) / m ;
4.020
30.0 0
( yi y0 ) /
8.430
52.650
55.980
பைடு நூலகம்85.57 0
4)试取初始角 3. 建立目标函数
0 860 , 0 23.50
本问题中, 要求输出角实现预定函数关系, 我们可以取实际输出角于期望输出角的偏差值 之和 来作为目标函数,使其达到最小值。 其中;
有志,有恒,有识,有为
基于 MATLAB 的四连杆机构的优化设计
张笑谭 (汕头大学,工学院)
[摘要] 对平面四连杆机构进行数学建模,要求实现预期的传递函数运动轨迹。利用 MATLAB 强大的运算功能,快速精确地 计算出优化结果。再利用 MATLAB 编写程序检验得出的运动轨迹是否达到期望目标。 [关键词] 连杆、轨迹、优化设计、MATLAB。
g 3 ( x) 1 x3 0 ; g 4 ( x) 1 x1 x2 x3 0 ; g 5 ( x) 1 x2 x1 x3 0 ;
g 6 ( x) 1 x3 x2 x3 0 ;
6. 优化结果
我们将用于求解优化设计数学模型的方法或寻优的方法称为优化计算方法。对于机械优化设计问题, 求解常常需要经过多步迭代,最终收敛得到最优解。利用 MATLAB 进行优化设计,编写目标函数、约束 函数, 再利用 MATLAB 的优化工具箱编写命令文件进行优化设计。 再利用优化结果计算实际运动轨迹 (输 出角-输入角曲线) ,来验证优化结果。 经过matlab进行优化后: End diagnostic information Max Line search Directional First-order f(x) constraint steplength derivative optimality Procedure 986.75 17.5 974.667 975.011 973.091 1.01 0.3404 1.335 1 1 1 -9.82 1.3 -0.359
2. 确定设计变量 在进行曲柄摇杆四连杆机构设计时,首先要确 定支架的设计变量。有机械原理可以知道,四连 杆 机构的独立变量只有 4 杆的杆长,各杆的长度的相 对比例确定,运动规律也就确定。故设计变量应
为各构件的相对长度,取 a/a=1,b/a=l,c/a=m,d/a=n. 所以此设计只有三个设计变量。分别为l,m,n. 1)根据已知条件 x0 1, xm 2 ,可知得 y0 0, ym 0.301 。 2)根据经验或通过试算,试取主、从动件的转角范围分别为 600 ,m 900 ,则自变量和函 数与转角之间的比例尺分别为
1 1 1 1 1 1 1 1 1 1 1
3.14 -0.932 -0.719 3.25 2.68 1.99 1.85 0.454 0.212 0.192 0.000538
2.21 Hessian modified 1.34 4.59 Hessian modified 0.852 0.468 0.148 0.0634 0.00521 0.00024 Hessian modified 1.6e-006 Hessian modified 3.17e-006 Hessian modified
参考文献 [1] 孙靖民,梁迎春. 机械优化设计. 北京:机械工业出版社,2006. [2] 濮良贵,纪名刚. 机械设计. 8 版. 北京:高等教育出版社,2006. [3] 孙桓,陈作模,葛文杰. 机械原理. 7 版. 北京:高等教育出版社,2006. [4] 李涛,贺勇军,刘志俭. MATLAB 工具箱应用指南—应用数学篇[M].北京:电子工业出版 社,2000. 附件:
No active inequalities. x= 1.3936 3.1460 0.8011 fvag = 973.1598 exitflag = 5 最终得到 x1 1.3936 , x2 3.1460 , x3 0.8011 所以 l 1.3936, m 3.1460, n 0.8011 7. 优化结构分析 通过按连杆三位置进行四杆分析 ,设计完成。
g 4 (4) 1 n l m 0 ;
5. 写出优化数学模型
min f ( x) i (i i ) 2
3
,
X [ x1 , x2 , x3 ]' [l , m, n]' ;
g1 ( x) 1 x1 0 ; g 2 ( x) 1 x2 0 ;
Matlab 程序
function f=myfun2(x) x1=x(1,1); x2=x(2,1); x3=x(3,1); f=2*arctan(((sin1)+sqrt((sin(1.57))^2+((cos(1.57)-(x3))^2-((1+(x2)^2+(x3)^2(x1)^2)/(2*x2)-x3*cos(1.57)/(x2))^2))/(cos(1.57)-(x3)+(1+(x2)^2+(x3)^2-(x1)^ 2)/(2*x2)-x3*cos(1.57)/(x2)))-(0.41)-(log(1+(0.9549)*(0.07)))/(0.1916)+2*arc tan((sin(2.0235)+sqrt((sin(2.0235))^2+((cos(2.0235)-(x3))^2-((1+(x2)^2+(x3)^ 2-(x1)^2)/(2*x2)-x3*cos(2.0235)/(x2))^2))/(cos(2.0235)-(x3)+(1+(x2)^2+(x3)^2 -(x1)^2)/(2*x2)-x3*cos(2.0235)/(x2)))-(0.41)-(log(1+(0.9549)*(0.5235)))/(0.1 916)+2*arctan((sin(2.477)+sqrt((sin(2.477))^2+((cos(2.477)-(x3))^2-((1+(x2)^ 2+(x3)^2-(x1)^2)/(2*x2)-x3*cos(2.477)/(x2))^2))/(cos2-(x3)+(1+(x2)^2+(x3)^2(x1)^2)/(2*x2)-x3*cos(2.477)/(x2)))-(0.41)-(log(1+(0.9549)*(0.977)))/(0.1916 ); function [c,ceq] = mycon2(x) x1=x(1,1); x2=x(2,1); x3=x(3,1); c(1)=1+x1-x2-x3; c(2)=1+x2-x3-x1; c(3)=1+x3-x2-x1; ceq=[]; clc clear x0=[2,1,1.5]'; lb=[-inf;-inf;-inf]; up=[inf;inf;inf]; options = optimset('LargeScale','off','Display','iter','MaxIter',4000,'TolX',1e-12,'To lFun',1e-10,'MaxFunEval',50000,'DerivativeCheck','on','GoalsExactAchieve',1, 'LineSearchType','cubicpoly','Jacobian','on','Diagnostics','on','GradConstr' ,'off','MaxPCGIter',1,'MinAbsMax',0); [x,fvag,exitflag,output,lambda,grad,hessian]=fmincon(@myfun2,x0,[],[],[],[], lb,up,@mycon2,options)