【求助】悬置MATLAB优化
本帖最后由 牛小贱 于 2014-3-27 16:05 编辑大家好,我现在有一振动模型,具体算法如下:
clear
clc
%动力总成质量
m=323.98;%kg
%惯性积
Jx=25.706;Jy=13.607;Jz=23.014;Jxy=-3.029;Jyz=3.359;Jzx=-0.876;%kg*m*m
%各个悬置点坐标
Xz=72.44;Yz=-431.92;Zz=148.82;
Xy=4.34;Yy=452.98;Zy=250.22;
Xh=199.64;Yh=-7.72;Zh=-245.93;
%mm在下面将位移坐标变成m
%各个悬置的三向刚度
Kzx=380e3*1.5;Kzy=72e3*1.5;Kzz=220e3*1.5;
Kyx=380e3*1.5;Kyy=72e3*1.5;Kyz=220e3*1.5;
Khx=213e3*1.5;Khy=10e3*1.5;Khz=10e3*1.5;%N/m
%各个悬置的安装角度
%左悬置安装角度
ALFAzu=0;BETAzu=90*pi/180;GAMAzu=90*pi/180;
ALFAzv=90*pi/180;BETAzv=0;GAMAzv=90*pi/180;
ALFAzw=90*pi/180;BETAzw=90*pi/180;GAMAzw=0;
%右悬置安装角度
ALFAyu=0;BETAyu=90*pi/180;GAMAyu=90*pi/180;
ALFAyv=90*pi/180;BETAyv=0;GAMAyv=90*pi/180;
ALFAyw=90*pi/180;BETAyw=90*pi/180;GAMAyw=0;
%后悬置安装角度
ALFAhu=8*pi/180;BETAhu=90*pi/180;GAMAhu=82*pi/180;
ALFAhv=90*pi/180;BETAhv=0;GAMAhv=90*pi/180;
ALFAhw=98*pi/180;BETAhw=90*pi/180;GAMAhw=8*pi/180;
%安装角矩阵Tj
Th=;
Tz=;
Ty=;
%参数输入完毕
%%%%%%%%%%%====================%%%%%%%%%%
%%%%%%%%%%%---能量表达式中的Fj和kj---%%%%%%%%%%
Fh=*0.001;
Fz=*0.001;
Fy=*0.001;
%%%此处将位移坐标转变成m
kh=;
kz=;
ky=;
%%%%%%%%%%%---振动方程中的M,D和K---%%%%%%%%%%
M=;
% D=;
K=Fh'*Th'*kh*Th*Fh+Fz'*Tz'*kz*Tz*Fz+Fy'*Ty'*ky*Ty*Fy;
%%%%%%%%%%%%%---下面计算系统固有特性---%%%%%%%%%%%%%
=eig(K,M);
f=diag(sqrt(d)/2/pi)'
for j=1:6
for k=1:6
for l=1:6
ENERGY(k,l)=M(k,l)*v(k,j)*v(l,j);
end
end
qq=sum(ENERGY);
qqt=sum(qq);
dig=;
EGEN(:,j)=dig;
ep1=max(dig);
ep2=sum(dig);
eper(j)=ep1/ep2*100;
end
eper
EGEN=EGEN*100程序前面是参数的输入和一些坐标变换,最后求出来的是系统的固有频率f,能量矩阵EGEN(对应6乘6的矩阵),eper对应EGEN每列最大值。
我现在想提高eper的值,理论上可以通过修改刚度K得到,现在以
object=-sum(max(EGEN))为目标函数:
约束条件为:
(1)程序里面的Kzx、Kzy、Kzz;Kyx、Kyy、Kyz;Khx、Khy、Khz,想把这些刚度值设一个上限和下下限。
(2)还要把求出来的f(i)作为约束条件,设定6个f(i)的范围。
我参考了fmincon、fgoalattain等多个函数,也做过了一些例子,但是对于自己这个问题还是无从下手,希望大家能提供一点思路和帮助,现在急需最后优化的刚度值。
在线等候各位的提示,谢谢,不甚感激。。。
我的邮箱:zs.jordan@163.com 这个应该到振动或是物理那些论坛去看一下... 我也有此问题 ,请联系wliang_auto@hotmail.com.3q 这个问题用fmincon应该可以实现,大概考虑了一下,基本格式应该可以通过下面的格式实现
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
object=-sum(max(EGEN))
对应函数中的@myfun
约束条件1:对应A,b
约束条件2:对应@mycon
估计你的主要问题应该出现在约束条件2上
具体你可以参考帮助文件中的nonlcon项的相关说明 LZ的另一相同意议题的帖
http://forum.vibunion.com/thread-97216-1-1.html 嘿嘿,经过几天的调试,已经做出来了。
开始就是约束函数没注意,频率范围设置的时候要包含原始值在内,不然计算不收敛。
谢谢各位。
LAN博基尼 发表于 2010-11-22 12:35
嘿嘿,经过几天的调试,已经做出来了。
开始就是约束函数没注意,频率范围设置的时候要包含原始值在内,不 ...
您好,我也用matlab中fmincon编了解耦程序,跟你说的差不多,频率设置时候需要注意。但是这样一来,
如果想要优化到想要的频率,那就无法计算了,用这个fmincon就只能增大解耦率。请问你的程序是吗?
谢谢
页:
[1]