?? 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 + -