function [ m_pop ]=CalObjValue(m_pop,patternNum,centerNum,m_pattern,disType)
global Nwidth;
for i=1:popSize
for j=1:centerNum %初始化聚类中心
m_center(j).index=i;
m_center(j).feature=zeros(Nwidth,Nwidth); %产生Nwidth*Nwidth的double型矩阵
m_center(j).patternNum=0;
end
%计算聚类中心
for j=1:patternNum
m_center(m_pop(i).string(1,j)).feature=m_center(m_pop(i).string(1,j)).feature+m_pattern(j).feature;
m_center(m_pop(i).string(1,j)).patternNum=m_center(m_pop(i).string(1,j)).patternNum+1;
end
d=0;
for j=1:centerNum
if(m_center(j).patternNum~=0)
(m_center(j).feature=m_center(j).feature/m_center(j).patternNum;
else
d=d+1;
end
end
m_pop(i).value=0;
%计算个体评估值
for j=1:patternNum
m_pop(i).value=m_pop(i).value+GetDistance(m_center(m_pop(i).string(1,j)),m_pattern(j),disType)^2;
end
m_pop(i).value=m_pop(i).value+d;
end
评论0