求助:遗传算法优化程序
function scores=target_function1(pop)score=zeros(size(pop,1),1);
for i=1:size(pop,1);
p=pop(i,:);
alpha = 0;
beta = 0;
gamma = 0;
A10 = [-p(1)/2;p(2)/2;0]; %运动平台上各球铰点在动坐标系下的矢量表示
A20 = [-p(1)/2;-p(2)/2;0];
A30 = ;
A40 = ;
A50 = ;
A60 = [-p(2)/2;0;-p(1)/2];
T = [ cos(alpha)*cos(beta)sin(alpha)*sin(beta)*cos(gamma)-cos(alpha)*sin(gamma)cos(alpha)*sin(beta)*cos(gamma)+sin(alpha)*sin(gamma);
cos(alpha)*sin(beta)sin(alpha)*sin(beta)*sin(gamma)+cos(alpha)*cos(gamma)cos(alpha)*sin(beta)*sin(gamma)-sin(gamma)*cos(alpha);
-sin(beta) cos(beta)*sin(gamma) cos(gamma)*cos(beta)];
C1 = [-(p(1)/2+p(3)+p(4));p(2)/2;0]; %各分支与基座连接点在定坐标系下的矢量表示
C2 = [-(p(1)/2+p(3)+p(4));-p(2)/2;0];
C3 = ;
C4 = ;
C5 = ;
C6 = [-p(2)/2;0;-(p(1)/2+p(3)+p(4))];
x = 0;
y = 0;
z = 0;
A1 = T*A10+;
A2 = T*A20+;
A3 = T*A30+;
A4 = T*A40+;
A5 = T*A50+;
A6 = T*A60+;
l1 = p(3)+x-sqrt(p(3).^2-y^2-z^2);
l2 = p(3)+x-sqrt(p(3).^2-y^2-z^2);
l3 = p(3)+y-sqrt(p(3).^2-x^2-z^2);
l4 = p(3)+y-sqrt(p(3).^2-x^2-z^2);
l5 = p(3)+z-sqrt(p(3).^2-x^2-y^2);
l6 = p(3)+z-sqrt(p(3).^2-x^2-y^2);
B1 = [-(p(1)/2+p(3)-l1);p(2)/2;0]; %虎可铰各点在固定坐标系下的矢量表示
B2 = [-(p(1)/2+p(3)-l2);-p(2)/2;0];
B3 = ;
B4 = ;
B5 = ;
B6 = [-p(2)/2;0;-(p(1)/2+p(3)-l6)];
zeta1 = (B1-A1)/p(3);
zeta2 = (B2-A2)/p(3);
zeta3 = (B3-A3)/p(3);
zeta4 = (B4-A4)/p(3);
zeta5 = (B5-A5)/p(3);
zeta6 = (B6-A6)/p(3);
eta1 = (C1-B1)/abs(p(4)+l1);
eta2 = (C2-B2)/abs(p(4)+l2);
eta3 = (C3-B3)/abs(p(4)+l3);
eta4 = (C4-B4)/abs(p(4)+l4);
eta5 = (C5-B5)/abs(p(4)+l5);
eta6 = (C6-B6)/abs(p(4)+l6);
delta1 = acos(dot(zeta1,T*eta1));
delta2 = acos(dot(zeta2,T*eta2));
delta3 = acos(dot(zeta3,T*eta3));
delta4 = acos(dot(zeta4,T*eta4));
delta5 = acos(dot(zeta5,T*eta5));
delta6 = acos(dot(zeta6,T*eta6));
theta1 = acos(dot(zeta1,eta1));
theta2 = acos(dot(zeta2,eta2));
theta3 = acos(dot(zeta3,eta3));
theta4 = acos(dot(zeta4,eta4));
theta5 = acos(dot(zeta5,eta5));
theta6 = acos(dot(zeta6,eta6));
if ((l1>=-p(5)) && (l1<=p(5)) && (l2>=-p(5)) && (l2<=p(5)) && (l3>=-p(5)) && (l3<=p(5)) && (l4>=-p(5)) && (l4<=p(5)) && (l5>=-p(5)) && (l5<=p(5)) && (l6>=-p(5)) && (l6<=p(5)) && (delta1 >= 0) && (delta1 <= pi/6) && (delta2 >= 0) && (delta2 <= pi/6) && (delta3 >= 0) && (delta3 <= pi/6) && (delta4 >= 0) && (delta4 <= pi/6) && (delta5 >= 0) && (delta5 <= pi/6) && (delta6 >= 0) && (delta6 <= pi/6) && (theta1 >= 0) && (theta1 <= pi/6) && (theta2 >= 0) && (theta2 <= pi/6) && (theta3 >= 0) && (theta3 <= pi/6) && (theta4 >= 0) && (theta4 <= pi/6) && (theta5 >= 0) && (theta5 <= pi/6) && (theta6 >= 0) && (theta6 <= pi/6))
J1=[(zeta1)' cross(A1,zeta1)';
(zeta2)' cross(A2,zeta2)';
(zeta3)' cross(A3,zeta3)';
(zeta4)' cross(A4,zeta4)';
(zeta5)' cross(A5,zeta5)';
(zeta6)' cross(A6,zeta6)'];
J2=[dot(zeta1,eta1) 0 0 0 0 0;
0 dot(zeta2,eta2) 0 0 0 0;
0 0 dot(zeta3,eta3) 0 0 0;
0 0 0 dot(zeta4,eta4) 0 0;
0 0 0 0 dot(zeta5,eta5) 0;
0 0 0 0 0 dot(zeta6,eta6)];
if det(J2)~= 0&det(J1)~= 0
J = (inv(J1)*J2);
s=svd(J);
score(i)=min(s)/max(s);
end
end
end
在遗传算法工具中运行以上程序时出现错误:
GA running.
Error using ==> gads\private\makeState
GA cannot continue because user supplied fitness function failed with the following error:
Output argument "scores" (and maybe others) not assigned during call to "C:\Program Files\MATLAB71\toolbox\gads\gadsdemos\target_function1.m (target_function1)".
谁帮忙给看一下好吗? 函数输出为scores,而程序内的变量名为score。像这种错误,仔细检查一下就能知道,不要什么都来问。
页:
[1]