资源简介

Shu-ChuanChu受到猫日常行为动作的启发,于2006年提出了猫群算法。算法最大特征表现为在进化过程中能够同时进行局部搜索和全局搜索,具有很好的收敛速度

资源截图

代码片段和文件信息

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数名称:C_CSO()
%参数:m_pattern:样品特征库;patternNum:样品数目
%返回值:m_pattern:样品特征库
%函数功能:按照猫群聚类法对全体样品进行分类
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[m_pattern]=C_CSO(m_patternpatternNum)
disType=DisSelDlg();              %获得距离计算类型
[centerNum iterNum]=InputClassDlg();       %获得类中心数和最大迭代次数
CatNum=200;                       %初始化猫数目
SMP=5;                            %记忆池大小
CDC=1;                            %每个样品特征值的变化概率
SRD=0.2;                          %每个样品的变化值范围
%初始化中心和速度
global Nwidth;
for i=1:centerNum
    m_center(i).feature=zeros(NwidthNwidth);
    m_center(i).patternNum=0;
    m_center(i).index=i;
    m_velocity(i).feature=zeros(NwidthNwidth);
end
%初始化猫
for i=1:CatNum
    cat(i).location=m_center;          %猫各中心
    cat(i).velocity=m_velocity;       %毛各中心速度
    cat(i).fitness=0;                 %适应度
    cat(i).flag=0;      %个体猫所属的行为模式标志:flag=0时为搜寻模式,flag=1时为跟踪模式
end
C_gd.location=m_center;           %全局猫最优中心
C_gd.velocity=m_velocity          %全局猫最优速度
C_gd.fitness=0;                   %猫全局最优适应度
C_gd.string=zeros(1patternNum);   
for i=1:CatNum                    %生成随机猫分布矩阵
   ptDiterb(i:)=ceil(rand(1patternNum)*centerNum);
end
%生成初始猫群
for i=1:CatNum
    for j=1:patternNum
        m_pattern(j).category=ptDitrib(ij);
    end
    for j=1:centerNum
        m_center(j)=CalCenter(m_center(j)m_patternpatternNum);
    end
    Cat(i).location=m_center;
end
%初始化参数
R=2;                 %跟踪模式位移方程系数
for iter=1:iterNum
    for i=1:CatNum
        Cat(i).flag=0;
    end
    index=randperm(CatNum);
    for i=1:CatNum*0.02
        Cat(index(i)).flag=1;   %随机从种群中选择2%个猫执行跟踪模式,其他为搜寻模式
    end
end
    %更新猫速度、位置
    for i=1:CatNum
        if Cat(i).flag==1;      %跟踪行为
            for j=1:centerNum
                Cat(i).velocity(j).feature=Cat(i).velocity(j).feature+R*rand(NwidthNwidth).*(C_gd.location(j).feature-Cat(i).location(j).feature);
                Cat(i).location(j).feature=Cat(i).location(j).feature+Cat(i).velocity(j).feature;
            end
            %最近零聚类
            for j=1:patternNum
                min=inf;
                for k=1:centerNum
                    tempDis=GetDistance(m_pattern(j)Cat(i).location(k)disType);
                    if(tenmDis                        min=tempDis;
                        m_pattern(j).category=k;
                        ptDitrib(ij)=k;
                    end
                end
                %重新计算聚类中心
                for k=1:centerNum
                    Cat(i).location(k)=CalCenter(Cat(i).location(k)m_patternNum);
                end
            end
            %计算猫适应度
            temp=0;
            for j=1:patternNum
                temp=temp+GetDistance(m_pattern(j)Gat(i).location(ptDituib(ij))disType);
            end
            if(temp==0)      %最优解,直接退出
                iter=iterNum+1;
                break;
            end
            Cat(i).fitness=1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5609  2013-07-09 12:17  Cat.m

----------- ---------  ---------- -----  ----

                 5609                    1


评论

共有 条评论