📄 getfitnessvalues.m
字号:
% 函数功能: 计算某一种群各粒子的被优越数、邻近密度和适应度函数--只考虑两目标函数的适应度计算
function [out_fitValues, out_domiCount, out_neighDensity] = getFitnessValues(in_funValues, in_o_shares, in_a, in_b);
% 输入参数:
% |--in_funValues: 要算适应度的种群的函数值, (popSize × funCount)维,!!!此处funCount固定为2
% |--in_o_shares: 适应值计算中用的共享半径组,(1 × funCount)维
% |--in_a: 非线性结合被优越数domiCount的指数参数,一个实数
% |--in_b: 非线性结合邻近密度neighDensity的指数参数,一个实数
% 返回参数:
% |--out_fitValues: 种群的适应度值,(popSize × 1)维
% |--out_domiCount: 种群中粒子对应的被优越数,(popSize × 1)维
% |--out_neighDensity:种群中粒子对应的邻近个数 ,(popSize × 1)维
[f_popSize, f_funCount] = size(in_funValues);
% 检查参数输入有无错误
[temp, oshFunCount] = size(in_o_shares);
if (oshFunCount ~= f_funCount)
strcat('INPUT ERROR: FUNCTION getFitnessValues--in_funValues VS in_o_shares')
else
f_o_share1 = in_o_shares(1, 1);
f_o_share2 = in_o_shares(1, 2);
% tempop=in_funValues;
for curParticle = 1: f_popSize
out_domiCount(curParticle,1) = 0;
out_neighDensity(curParticle,1) = 0;
for compParticle = 1: f_popSize
if (in_funValues(compParticle, 1) <= in_funValues(curParticle, 1)) && (in_funValues(compParticle, 2) <= in_funValues(curParticle, 2)) && ...
((in_funValues(compParticle, 1) + in_funValues(compParticle, 2)) < (in_funValues(curParticle, 1) + in_funValues(curParticle, 2)))
out_domiCount(curParticle, 1) = out_domiCount(curParticle, 1)+1;
end
% fdij=sqrt((in_funValues(compParticle, 1)-in_funValues(curParticle, 1))^2+(in_funValues(compParticle, 2)-in_funValues(curParticle, 2))^2);
% if fdij<=f_o_share1
f1dij = abs(in_funValues(compParticle, 1) - in_funValues(curParticle, 1));
f2dij = abs(in_funValues(compParticle, 2) - in_funValues(curParticle, 2));
% if f1dij<=f_o_share1
if (f1dij <= f_o_share1) && (f2dij <= f_o_share2)
out_neighDensity(curParticle, 1) = out_neighDensity(curParticle, 1) + 1;
end
end
out_fitValues(curParticle, 1) = ( 1 + out_domiCount(curParticle,1) )^in_a * out_neighDensity(curParticle, 1)^in_b ;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -