MATLAB是Mathworks公司研发的过程演算及参数分析程序, 是目前世界上应用最广泛的工程计算软件之一,利用Matlab中的优化函数,可以求解线性、非线性和多目标等问题。在处理多变量有约束的非线性最小化问题方面,MATLAB优化函数Fmincon可以极大提高效率。
(1)首先编写目标函数obufun.M
function f=objfun(x)
%%参数输入
Ei=210000; %弹性模量
miu=0.3; %泊松比
rf=32; %分离轴承推力作用半径
ds=2; %磨损极限1.6-2.2mm
dt=3; %分离行程
w=0.1; %加权因子
%%弹性特性公式ftanx
ftanx=( pi*Ei.*x(2).*x(7)/(6*(1-miu.^2)))*(log(x(3)./x(4))./((x(5)-x(6)).^2))*(( x(1)-x(7).*(x(3)-x(4))./(x(5)-x(6))).*( x(1)-0.5.*x(7).*(x(3)-x(4))./(x(5)-x(6)))+( x(2).^2))
%%磨损后fmsh参数变化
fmsh=( pi*Ei.*x(2).*(x(7)-ds)/(6*(1-miu^2)))*(log(x(3)./x(4))./((x(5)-x(6)).^2))*((x(1)-(x(7)-ds).*(x(3)-x(4))./(x(5)-x(6))).*(x(1)-0.5.*(x(7)-ds).*(x(3)-x(4))./(x(5)-x(6)))+( x(2).^2))
%%分离过程ffl参数变化
ffl=( pi*Ei.*x(2).*(x(7)+dt)/(6*(1-miu^2)))*(log(x(3)./x(4))./((x(5)-x(6)).*(x(5)-rf)))*((x(1)-(x(7)+dt).*(x(3)-x(4))./(x(5)-x(6))).*(x(1)-0.5.*(x(7)+dt).*(x(3)-x(4))./(x(5)-x(6)))+( x(2).^2))
%%双目标函数%%
f1=abs(ftanx-fmsh); %第一
f2=ffl; %第二:分离位置时的力
f=w.*f1+(1-w)*f2; %目标函数
(2)其次编写非线性约束函数confun.M
function [c,ceq] = confun(x)
%%参数输入
Ei=210000; %弹性模量
miu=0.3; %泊松比
rf=32; %分离轴承推力作用半径
n=18;%分离指的数目
b=10;%分离把根部的宽度
T=230*1000;%离合器最大转矩,转化成N.mm
a=200/2;% a=D/2摩擦片外半径
b=140/2;% b=d/2摩擦片内半径
z=2;%摩擦面,摩擦片的两倍
fz=0.3;%摩擦因数
%%切应力thegatb
e=(x(3)-x(4))./(log(x(3)./x(4))); %中性点半径
alfa=atan(x(1)./(x(3)-x(4))); %膜片弹簧圆锥底角
thegatb=abs((Ei./((1-miu.^2).*x(4))).*((0.5.*(e-x(4))).*(alfa+0.5.*x(2)./(e-x(4))).^2 -(2.*(0.5.*(e-x(4))).*alfa+x(2)./2).*(alfa+0.5.*x(2)./(e-x(4)))));%膜片弹簧切应力计算
%%弯曲应力thegarb
fbz=(x(5)-x(6))./(x(6)-rf);%fbz=(R1-r1)/(r1-rf),F2/F1力的比值
fer=(pi*Ei.*x(2).*x(7)/(6*(1-miu.^2))).*((log(x(3)./x(4)))./((x(5)-x(6)).^2)).*((x(1)-x(7).*(x(3)-x(4))./(x(5)-x(6))).*(x(1)-0.5.*x(7).*(x(3)-x(4))./(x(5)-x(6)))+(x(2).^2))*fbz;% F2
thegarb=abs(6*(x(4)-rf)*fer./(x(2).^2.*n.*b));%膜片弹簧弯曲应力
%%非线性约束条件c(1) 、c(2)
f1b=(pi*Ei.*x(2).*x(7)/(6*(1-miu.^2))).*((log(x(3)./x(4)))./((x(5)-x(6)).^2)).*((x(1)-x(7).*(x(3)-x(4))./(x(5)-x(6))).*(x(1)-0.5.*x(7).*(x(3)-x(4))./(x(5)-x(6)))+(x(2).^2)) %压紧力
c(1)=thegarb-thegatb-1500%弹簧危险点最大当量应力约束
c(2)=T/(z.*fz.*(2./3).*(a.^3-b.^3)/(a.^2-b.^2))-f1b;%膜片弹簧产生的约束,
ceq=[];
(3)最后写离合器参数优化函数main.m
clc;
clear;
close;
%%参数输入
Ei=210000;%材料弹性模量
miu=0.3;%泊松比
ds =2;% 磨损极限
dt= 3;%推力行程
D=200;%摩擦片外径
d=140;%摩擦片内径
r0= 29;%小端内半径
rf=32;%
%%绘原始弹簧弹性特性图
%参数输入
x0= [5.25 3 112.5 90 108.5 93 3];% H h R r R1 r1 lamda
x7=0:0.1:7;
F=(pi*Ei.*x0(2).*x7/(6*(1.-miu^2))).*(log(x0(3)./x0(4))./(x0(5)-x0(6)).^2).*((x0(1)-x7.*(x0(3)-x0(4))./(x0(5)-x0(6))).*(x0(1)-0.5.*x7.*(x0(3)-x0(4))./(x0(5)-x0(6)))+(x0(2).^2));
plot (x7,F,'b')% 绘制原始膜片弹簧弹性特性图
hold on
%%优化设计
%变量上下限
Lb=[4 2 105 86 98 86 2.89];%变量下限
Ub=[7 4 135 100 149 100 3.616];%变量上限
%线性不等式约束系数矩阵和常数% H h R r R1 r1 lamda
A=[1,-2.2,0,0,0,0,0; -1,1.7,0,0,0,0,0; 1,0,-pi/15,pi/15,0,0,0; -1,0,pi/20,-pi/20,0,0,0; 0,0,1,1.35,0,0,0; 0,0,-1,1.2,0,0,0; 0,-50,1,0,0,0,0; 0,35,-1,0,0,0,0; 0,0,0,0,0,1,0; 0,0,0,0,0,-1,0; 0,0,1,0,-1,0,0; 0,0,-1,0,1,0,0; 0,0,0,-1,0,1,0; 0,0,0,1,0,-1,0;];
b=[0 0 0 0 0 0 0 0 D./2 -(D+d)./4 7 -1 6 0];
%线性等式约束
Aeq=[];
beq=[];
[x,fval,exitflag,out]=fmincon( @objfun,x0,A,b,Aeq,beq,Lb,Ub,@confun);
%%绘制膜片弹性特性图
[c]=confun(x);
x7=0:0.1:7;
F=(pi*Ei.*x(2).*x7/(6*(1-miu^2))).*(log(x(3)./x(4))./(x(5)-x(6)).^2).*((x(1)-x7.*(x(3)-x(4))./(x(5)-x(6))).*(x(1)-0.5.*x7.*(x(3)-x(4))./(x(5)-x(6)))+(x(2).^2));
plot(x7,F,'r')
%%%%%%绘图标注%%%%%%
xlabel('膜片弹簧变形量λ/mm')
ylabel('工作压力F/N')
title('膜片弹簧F-λ弹性特性曲线')
legend('原始设计','优化设计')
%%求出目标函数H h Rr R1 r1 lamda
x
%%完结%%
(4)运行主函数main.m,得到参数优化结果与弹性特性曲线(如图)
x =
4.4597 2.2688 105.0000 86.0000 103.9984 86.0022 3.0627
参考文献
[1] 王望予.汽车设计[M]. 北京:机械工业出版社,2007
[2] 肖启瑞,樊明明,黄学翾等编著.车辆工程仿真与分析 基于MATLAB的实现[M].机械工业出版社,2012.
本文地址:http://www.8mpa.com/368.html
版权声明:本文为原创文章,版权归八兆帕所有,欢迎分享本文,转载请保留出处!