资源简介

蚁群聚类算法的matlab实现,有说明和详尽的报告。

资源截图

代码片段和文件信息

function [solVIDXCtime] = ACOClu(XminItermaxIterKupdNumpherCneedPrinting)
    tic
    solValue = zeros(maxIter1);
    [Ndms]=size(X);      
    M = 100;     
    Pher = ones(NK);    
    pThres = 0.9;                
    volR = 0.1; 
    iter = 1; 
    
    fstSol = initSol(XK);
    preSol = zeros(MN);
    solRepeatN =0;
    convRepeatN = 20;
    while ((iter<=maxIter) && ((iter        solution = zeros(MN+1);     
        for i = 1 : M                       
            if iter == 1
                solution(i1:N) = fstSol‘;
            else
                rr = rand(1N);    
                for g = 1 : N
                    if rr(g) < pThres     
                        [~cluTag] = max(Pher(g:));
                        solution(ig) = cluTag;   
                    else            
                        cumTau = cumsum(Pher(g:)); 
                        cumTau = cumTau/cumTau(end);
                        cumTau(end)=1;
                        idxList = find(cumTau>=rand);
                        if isempty(idxList)
                            cumTau
                            error(‘cumTau‘);
                        else
                            solution(ig) = idxList(1);   
                        end
                    end
                end
            end

            cluster_center = zeros(Kdms);
            MSE = zeros(K1);
            for j = 1:K
                pick = find(j==solution(i:));
                cCluN=size(pick2);
                cCluX = zeros(cCluNdms);
                for v = 1:dms
                    temp=X(:v);
                    cCluX(:v) =temp(pick); 
                end
                cluster_center(j:) = mean(cCluX1);
                for s = 1:cCluN
                    temp = cCluX(s:)-cluster_center(j:);
                    MSE(j) = MSE(j) + temp*temp‘;
                end
            end
           solution(iend) = sum(MSE);                      
        end 
        [ascSolVascSolIdx] = sort(solution(:end)1);
        ascSolution = [solution(ascSolIdx1:end-1) ascSolV];

        L=updNum;
        % the best L solutions will be used to update Pher[]
        for j = 1:L    
           tau_F = ascSolution(jend);
            for i = 1 : N
               Pher(iascSolution(ji)) = (1 - volR) * Pher(iascSolution(ji)) + pherC/ tau_F; 
            end 
        end

         solValue(iter) =  ascSolution(1end);
         if isequal(preSolascSolution(11:N))
              solRepeatN =  solRepeatN + 1;
         else
              solRepeatN =0;
         end
         preSol = ascSolution(11:N);
        iter=iter+1;
    end
    convIter = iter-1;  
    solV = solValue(convIter);
    %preSol
    
    time=toc;
    IDX = preSol;
    C =cluster_center;
    if needPrinting==1
        solValue(1)
        solV 
        
        pMaxIter = min(ceil(convIt

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

     文件       1290  2013-11-02 13:46  data.txt

     文件       1739  2013-11-03 16:38  initSol.m

     文件        670  2013-11-03 16:37  KM.m

     文件       1457  2013-11-03 16:38  Main.m

     文件        588  2013-11-03 16:26  plotSol.m

     文件         85  2013-11-03 16:40  ReadMe.txt

     文件     106695  2013-12-08 23:43  蚁群算法之聚类.docx

     文件       3375  2013-11-03 16:27  ACOClu.m

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

               115899                    8


评论

共有 条评论