📄 kerncalc.m
字号:
function kerncalc(ThisChrom)
% KERNCALC Calculate the parameters for the selected chromosome.
% Copyright (c) 1998-2000 Jiming Liu and Jianbing Wu
global RobotNum ObjectPosition GoalPosition AxisDirection;
global RobotHistory ObjectHistory GoalHistory ChromHistory;
global RegionNum DirectionNum StepRatio EdgeLimit WorkArea;
global ObjectSize RotateRatio LastMoveDierction;
ThisCase=getreal(ThisChrom);
ChromHistory=[ChromHistory;ThisCase];
if isempty(RobotHistory)
for loops=1:RobotNum
ThisDirection=ThisCase(loops)*2*pi/RegionNum+AxisDirection;
RobotX=ObjectPosition(1)+ObjectSize*cos(ThisDirection);
RobotY=ObjectPosition(2)+ObjectSize*sin(ThisDirection);
RobotHistory=[RobotHistory RobotX RobotY];
end;
end;
% Join Force & Join Torque
XForce=0;
YForce=0;
JoinTorque=0;
for loop1=1:RobotNum
[TakeRole,DeltaAngle]=takerole(ThisCase(loop1),ThisCase(loop1+RobotNum));
if TakeRole
XForce=XForce+cos(ThisCase(loop1+RobotNum)*2*pi/DirectionNum);
YForce=YForce+sin(ThisCase(loop1+RobotNum)*2*pi/DirectionNum);
[ThisTorque,TheSign]=gettorqu(DeltaAngle);
JoinTorque=JoinTorque+ThisTorque*TheSign;
end;
end;
RotateAngle=RotateRatio*JoinTorque;
JoinForce=sqrt(XForce*XForce+YForce*YForce);
JoinForceDir=atan2(YForce,XForce);
LastMoveDierction=JoinForceDir;
Step=JoinForce*StepRatio;
MoveDirection=AxisDirection+JoinForceDir;
ObjectX=ObjectPosition(1)+Step*cos(MoveDirection);
ObjectY=ObjectPosition(2)+Step*sin(MoveDirection);
if ObjectX<EdgeLimit
ObjectX=EdgeLimit;
elseif ObjectX>(WorkArea(1)-EdgeLimit)
ObjectX=WorkArea(1)-EdgeLimit;
end;
if ObjectY<EdgeLimit
ObjectY=EdgeLimit;
elseif ObjectY>(WorkArea(2)-EdgeLimit)
ObjectY=WorkArea(2)-EdgeLimit;
end;
ObjectPosition=[ObjectX ObjectY];
ObjectHistory=[ObjectHistory;ObjectPosition];
GoalHistory=[GoalHistory;GoalPosition];
RobotPosition=[];
for loops=1:RobotNum
RobotDirection=AxisDirection+ThisCase(loops)*2*pi/RegionNum+RotateAngle;
RobotX=ObjectPosition(1)+ObjectSize*cos(RobotDirection);
RobotY=ObjectPosition(2)+ObjectSize*sin(RobotDirection);
RobotPosition=[RobotPosition RobotX RobotY];
end;
RobotHistory=[RobotHistory;RobotPosition];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -