• 大小: 7KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: Matlab
  • 标签: BBO  matlab  优化  

资源简介

生物地理学算法的matlab代码实现,包括了基础的BBO算法以及两种改进算法,参考文献
[1]Simon D. Biogeography-based optimization[J].IEEE transactions on evolutionary computation, 2008, 12(6): 702-713.
[2]康强.生物地理学优化算法的改进及在聚类优化问题上的应用[D].河南师范大学,2018.

资源截图

代码片段和文件信息

function obj = BBO(objoptions)
%=======================================================
    % 精英保留机制:精英记录
    for j = 1 : options.keep 
        elite(j:)= obj(j).Var;
        elcost(j)= obj(j).Cost;
    end 

    for i = 1:length(obj)
        s(i)= options.Size-i;                       % 得到种群中的各个解的物种数量
        lmd(i)= 0.5*options.I*(cos(pi*s(i)/options.Size)+1);        % 迁入率λ
        mu(i)= 0.5*options.E*(-cos(pi*s(i)/options.Size)+1);        % 迁出率μ
    end 
%=======================================================
    % 迁移算子更新
    for i = 1:options.Size 
        lmdscale = options.lmd_span(1)+(options.lmd_span(2)-options.lmd_span(1))...
        *(lmd(i)-min(lmd))/(max(lmd)-min(lmd));
        for j = 1:options.N 
            if rand                % 轮盘赌
                r = rand * sum(mu);
                temp = mu(1);tempi = 1;
                while (r>temp)&(tempi                    tempi = tempi+1;
                    temp = temp+mu(tempi);
                end 
                tempVar(ij)= obj(tempi).Var(j);
            else 
                tempVar(ij)= obj(i).Var(j);
            end 
        end 
    end 
%=======================================================
    % 更新物种概率
    for i = 1:options.Size 
        lmd_sminus = 0.5*options.I*(cos(pi*(s(i)-1)/options.Size)+1);
        mu_splus = 0.5*options.E*(-cos(pi*(s(i)+1)/options.Size)+1);
        if i == 1
            Psplus = 0;
        else
            Psplus = options.Ps(i-1);
        end
        if i == options.Size
            Psminus = 0;
        else
            Psminus = options.Ps(i+1);
        end
        dPs(i) = -(lmd(i)+mu(i))*options.Ps(i)...
            +lmd_sminus*Psminus+mu_splus*Psplus;
    end 
    options.Ps = options.Ps+dPs*options.dt;
    options.Ps = max(options.Ps0);
    options.Ps = options.Ps/sum(options.Ps);

    % 变异算子更新
    rmutate = options.pmutate*(1-options.Ps/max(options.Ps));
    for i = (options.Size/2):options.Size 
        for temp = 1:options.N
            if rmutate(i)>rand
                tempVar(itemp) = options.span(temp1)+...
                    (options.span(temp2)-options.span(temp1))*rand;
            end 
        end 
    end 
%=======================================================
    % 更新栖息地信息
    for i=1:options.Size 
        q = cost_cal(tempVar(i:)options.method);
        if q            obj(i).Cost=q;
            obj(i).Var = tempVar(i:);
        end 
    end 
%=======================================================
    % 精英保留机制:性能最差栖息地信息用精英替换
    obj = queue(obj);
    for i = 1:options.keep 
        obj(options.Size-i+1).Var = elite(i:);
        obj(options.Size-i+1).Cost = elcost(i);
    end
    
    % 清除算子
    for i = 1:length(obj)
        for j = i+1:length(obj)
            if obj(i).Var==obj(j).Var 
%                 temp = ceil(length(obj(j).Var)*rand);
%                 obj(j).Var(temp)= options.s

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

     文件       3907  2019-12-23 21:16  BBO code\BBO.m

     文件       1383  2019-12-23 22:41  BBO code\cost_cal.m

     文件       4635  2019-12-22 08:16  BBO code\DGBBO.m

     文件      10003  2019-12-23 21:43  BBO code\EMBBO.m

     文件       2401  2019-12-24 01:05  BBO code\image_display.m

     文件        317  2019-12-20 17:06  BBO code\init.m

     文件       1894  2019-12-24 02:11  BBO code\main.m

     文件        299  2019-12-23 22:12  BBO code\testloop.m

     文件        238  2019-12-22 15:44  BBO code\tst_fctn_figr.m

     文件        374  2020-03-07 21:26  BBO code\说明.txt

     目录          0  2020-03-07 21:25  BBO code

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

                25451                    11


评论

共有 条评论