【自组织迁移算法—SOMA】

自组织迁移算法—SOMA

SOMA介绍

  本文简要介绍了自组织迁移算法(Self-organizing Migrating Algorithm, SOMA)算法的原理和实现过程。SOMA作为一种新型群智能优化算法,自2000年由Zelinka和Lampinen提出后就收到广大研究者的高度认可。

SOMA流程

  与蚁群算法和粒子群算法类似,SOMA属于集群智能范畴。首先初始化若干个体组成初始种群并根据所解决的具体问题求出每个粒子所对应的适应度值。通过一个迁移循环(Migration loops, ML)对种群中除领导者(Leader)外的其它个体进行迁移更新,其中领导者为当前迁移循环中适应度值最优的个体。在每一次迁移循环中,每个粒子的都采用一定的步长step向领导者进行小幅度的跳跃。通过随机初始化一摄动向量PRTVrctor来引导个体如何朝向领导者进行移动,其中PRTVrctor通过设定系数prt进行调控,prt通常取值为[0,1]。个体的迁移方式按照如下公式进行:
在这里插入图片描述
其中, X i , s t a t e M L X_{i,state}^{ML} Xi,stateML代表待迁移粒子, X L M L X_{L}^{ML} XLML代表在第ML代迁移循环中的领导者, X t e m p M L X_{temp}^{ML} XtempML为粒子迁移得到的新位置。t以步长step的间隔长度。

SOMA算法步骤

  1. 初始化NP(种群大小)个粒子作为第一代迁移群体。
  2. 计算每一个粒子的适应度函数值,并选出最优粒子作为领导者(Leader)来引导其它粒子进行迁移。
  3. 将除领导者以外的个体按照上式进行迁移,并更新PRTVector的值。
  4. 当满足算法停止条件时,迁移停止并返回最优粒子的值。

以下给出SOMA在Matlab中的代码实现

for i = 1:N
    if i==lead_pos
        continue;
    end
    
    strt_pop=x(i,:);
    leader = x(lead_pos,:);%将种群的第lead_pos个个体作为领导者
    
    for t=0:step:pathLength
        %% 生成prtvector摄动向量
        prtntzero= true;
        while(prtntzero)
            for j=1:D
                if rand<prt
                    prt_vector(j) = 1;
                    prtntzero = false;
                else
                    prt_vector(j) = 0;
                end
            end
        end
        
        for j=1:D
            v(i,j) = strt_pop(j) + ( leader(j) - strt_pop(j) ) * t * prt_vector(j);
        end
        
        %% 边界处理
        for j = 1:D
            if  v(i,j)>lu(2,j)
                v(i,j)=max(lu(1,j),2*lu(2,j)-v(i,j));%超出上界处理
            end
            if  v(i,j)<lu(1,j)
                v(i,j)=min(lu(2,j),2*lu(1,j)-v(i,j));%超出下界处理
            end
        end
        
        fnew(i)=benchmark_func(v(i,:),problem);%计算生成的试验向量newx(i,:)的目标函数值
        if fnew(i) < fitness(i)
            fitness(i) = fnew(i);
            x(i,:) = v(i,:);
        end
    end
end

引用

SOMA原文链接:link.
SOMA相关改进:

  1. 基于混合迁移行为的自组织迁移算法:link
  2. 采用随机变异步长的改进自组织迁移算法:link
  3. Self-organizing migration algorithm applied to machining allocation of clutch assembly:link
  4. 改进自组织迁移算法及其在Bump问题中的应用:link
  5. 基于反向学习的自组织迁移算法:link
  6. 一种采用线性递减步长的自组织迁移算法:link
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值