• matlab基本粒子群算法实现(一)


    算法没有和图像处理直接相关,

    不过对于图像分类中的模式识别相关算法,

    也许会用到这个优化算法。

    不过不管有没有用,

    还是得一步一步学起来

    算法步骤:

    1.首先确定粒子个数与迭代次数。

    2.对每个粒子随机初始化位置与速度。

    3.采用如下公式更新每个粒子的位置与速度。

    Px=Px+Pv*t; %位置更新公式 

    Pv=Pv+(c1*rand*(Gx-Px))+(c2*rand*(PBx-Px)); %速度更新公式

    main.m

    [xm,fv]=PSO(@fitness,40,2,2,0.5,100,30)
    for i=1:30
        s(i)=0.;
    end
    for i=1:30
        
        F=0;
        for j=1:30
            F=F+xm(i)^2+xm(i);
        end
        s(i)=F;
    end
    plot(xm,s,'*')
        
    

     

    PSO.m

    function [ xm,fv ] = PSO( fitness,N,c1,c2,w,M,D )
    %PSO Summary of this function goes here
    %   Detailed explanation goes here
    format long;
    for i=1:N
        for j=1:D
            x(i,j)=randn;
            v(i,j)=rand;
        end
    end
    for i=1:N
        p(i)=fitness(x(i,:));
        y(i,:)=x(i,:);
    end
    pg= x(N,:);
    for i=1:(N-1)
        if fitness(x(i,:))<fitness(pg)
            pg=x(i,:);
        end
    end
    for t=1:M
        for i=1:N
            v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
            x(i,:)=x(i,:)+v(i,:);
            if fitness(x(i,:))<p(i)
                p(i)=fitness(x(i,:));
                y(i,:)=x(i,:);
            end
            if p(i)<fitness(pg)
                pg=y(i,:);
            end
        end
        Pbest(t)=fitness(pg);
    end
    xm = pg';
    fv =fitness(pg);
    
    
    
    end

    这个就是优化的函数,

    就是求它的最小值,

    也可能是局部最小值,

    反正大家自己感悟

    fitness.m

    function F = fitness( x )
    %F Summary of this function goes here
    %   Detailed explanation goes here
    F=0;
    for i=1:30
        F=F+x(i)^2+x(i);
    
    end
    

      

  • 相关阅读:
    bzoj1002/luogu2144 轮状病毒 (dp)
    bzoj1003/luogu1772 物流运输 (dijkstra+dp)
    bzoj1007/luogu3194 水平可见直线 (单调栈)
    [模板]群论
    http 协议媒体格式
    java加密类支持sha256,md5,HmacSha1,base64
    java逐行读写借助buffereader/bufferwriter
    java 基础io读写字节以及缓存读写字节
    java log4i.properties
    java 迭代器
  • 原文地址:https://www.cnblogs.com/MnsterLu/p/5562451.html
Copyright © 2020-2023  润新知