六自由度平台结构优化问题,怎么将线长引入到遗传算法约束中(语言-matlab)
%%%%5%六自由度平台结构优化问题,怎么将线长11,12,13.....16的引入到遗传算法约束中,线长100<l<900,范围可以设定的

%%目标函数
function c=aaa22(x)
%动平台位姿的选取
u1=-100:100:100;
u2=-100:100:100;
u3=500:200:900;
u4=-5:5:5;
u5=-5:5:5;
u6=-5:5:5;
P=[];
for i1=1:1:length(u1)
for i2=1:length(u2)
for i3=1:length(u3)
for i4=1:length(u4)
for i5=1:length(u5)
for i6=1:length(u6)
PK=[u1(i1),u2(i2),u3(i3),u4(i4),u5(i5),u6(i6)];
P=cat(1, P, PK);
end
end
end
end
end
end
W=0;
%%动平台位姿
for t=1:1:length(P)
X=P(t,1);
Y=P(t,2);
Z=P(t,3);
l=P(t,4);
m=P(t,5);
n=P(t,6);
p=[X,Y,Z];
PP=[X,Y,Z,l,m,n];
%%动定点的位置
%%动平台LJD
p1=[x(1)*cosd(90-x(2)) x(1)*sind(90-x(2)) 0];
p2=[x(1)*cosd(90+x(2)) x(1)*sind(90+x(2)) 0];
p3=[x(1)*cosd(210-x(2)) x(1)*sind(210-x(2)) 0];
p4=[x(1)*cosd(210+x(2)) x(1)*sind(210+x(2)) 0];
p5=[x(1)*cosd(330-x(2)) x(1)*sind(330-x(2)) 0];
p6=[x(1)*cosd(330+x(2)) x(1)*sind(330+x(2)) 0];
%%定平台LJD
B1=[x(3)*cosd(150-x(4)) x(3)*sind(150-x(4)) 0];
B2=[x(3)*cosd(150+x(4)) x(3)*sind(150+x(4)) 0];
B3=[x(3)*cosd(270-x(4)) x(3)*sind(270-x(4)) 0];
B4=[x(3)*cosd(270+x(4)) x(3)*sind(270+x(4)) 0];
B5=[x(3)*cosd(30-x(4)) x(3)*sind(30-x(4)) 0];
B6=[x(3)*cosd(30+x(4)) x(3)*sind(30+x(4)) 0];
%RP = rotz(PZ) * roty(PY) * rotx(PX);% XYZ旋转矩阵
RP=[cosd(m)*cosd(n) cosd(n)*sind(l)*sind(m)-cosd(l)*sind(n) cosd(l)*cosd(n)*sind(m)+sind(l)*sind(n);
cosd(m)*sind(n) cosd(l)*cosd(n)+sind(l)*sind(m)*sind(n) cosd(l)*sind(m)*sind(n)-cosd(n)*sind(l);
-sind(m) cosd(m)*sind(l) cosd(l)*cosd(m)];
%----------动平台的6个铰点,在静平台坐标系中的位置矢量---------------------
A1=RP*transpose(p1)+transpose(p);
A2=RP*transpose(p2)+transpose(p);
A3=RP*transpose(p3)+transpose(p);
A4=RP*transpose(p4)+transpose(p);
A5=RP*transpose(p5)+transpose(p);
A6=RP*transpose(p6)+transpose(p);
%--动平台的6个铰点位置矢量,减去,静平台的6个铰点位置矢量,得到每个杆长矢量
L1 = A1 -transpose(B1);
L2 = A2 -transpose(B2);
L3 = A3 -transpose(B3);
L4 = A4 -transpose(B4);
L5 = A5 -transpose(B5);
L6 = A6 -transpose(B6);
%-----------求模,得到线长-----------
l1 =norm(L1,1);
l2 =norm(L2,1);
l3 =norm(L3,1);
l4 =norm(L4,1);
l5 =norm(L5,1);
l6 =norm(L6,1);
%-----------求模,得到xian长-----------------------------------------
n1 =L1/norm(L1,1);
n2 =L2/norm(L2,1);
n3 =L3/norm(L3,1);
n4 =L4/norm(L4,1);
n5 =L5/norm(L5,1);
n6 =L6/norm(L6,1);
%拉线矢量
L=[norm(L1,1) norm(L2,1) norm(L3,1) norm(L4,1) norm(L5,1) norm(L6,1) ];
%拉线误差dl=[0.1 0.1 0.1 0.1 0.1 0.1 0.1]
dl=[0.1 0.1 0.1 0.1 0.1 0.1]';
%%雅可比矩阵
J=[n1 n2 n3 n4 n5 n6 ;
cross(RP*transpose(p1),n1) cross(RP*transpose(p2),n2) cross(RP*transpose(p3),n3) cross(RP*transpose(p4),n4) cross(RP*transpose(p5),n5) cross(RP*transpose(p6),n6) ]';
%%动平台位姿误差dp
D=inv(J);
dp=D*dl;
%%求解rB
rB=(norm(dp,1)*norm(L,1))/(norm(PP,1)*norm(dl,1));
w=W+rB;
W=w;
end
c=W/t;
end
%%%引用遗传算法
objfun=@aaa22;
%自变量个数
n=4;
%A,b线性不等式约束
A=[ ];
b=[];
%Aed,bed线性等式约束
Aed=[];
bed=[];
%lb下限
lb=[0 0 0 0 ];
%上限
ub=[200 30 300 30 ];
%非线性约束
confun=[];
%选项
opts=[];
state=rng;
[x,fval]=ga(objfun,n,A,b,Aed,bed,lb,ub,confun,opts);