⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getfitnessvalues.m

📁 离散算法
💻 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 + -