📄 fitness.m
字号:
function FitnessValue=fitness(chromosome)% FITNESS Fitness function for Genetic Algorithm.% Copyright (c) 1998-2000 Jiming Liu and Jianbing Wuglobal RobotNum ObjectPosition GoalPosition LastMoveDirection;global RegionNum DirectionNum StepRatio ObjectSize;global FitnessEq StepChangeRatio;ThisCase=getreal(chromosome);PositionDiff=ObjectPosition-GoalPosition;GOdist=sqrt(PositionDiff(1)*PositionDiff(1)+PositionDiff(2)*PositionDiff(2));% Join Force & Join TorqueXForce=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;JoinForce=sqrt(XForce*XForce+YForce*YForce);JoinForceDir=atan2(YForce,XForce);if JoinForce==0 JoinForce=0.000001;end;TorqueEffect=ObjectSize*RobotNum-abs(JoinTorque);CosJoinAngle=1.01+cos(JoinForceDir);%if CosJoinAngle<=0% CosJoinAngle=0.000001;%end;%StepDiff=JoinForce*StepRatio-GOdist*StepChangeRatio;%StepLimit=exp(-StepDiff*StepDiff);%if isempty(LastMoveDirection)% DirectionLimit=0;%else% DiffDirection=LastMoveDirection-JoinForceDir;% DirectionLimit=exp(-DiffDirection*DiffDirection);%end;%-----------------------------------FitnessEq ='JoinForce*CosJoinAngle*TorqueEffect';FitnessValue=JoinForce*CosJoinAngle*TorqueEffect;%*(0.1+DirectionLimit);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -