​【优化求解】基于生物地理算法BBO求解单目标问题matlab源码

231 阅读1分钟

1 模型

生物地理学(Biogeography)是一门研究自然界种群迁移机制的科学,Dan Simon用生物地理学的方法和机制来解决工程优化问题,提出了生物地理学优化算法(BBO,Biogeography-Based Optimization).生物地理学优化算法以其独特的搜索机制和较好的性能在智能优化算法领域得到了广泛的关注.对生物地理学优化算法的设计原理,迁徙模型,算法流程及相应迁移和突变操作进行了综述.

​2 部分代码

```matlab

clc;

clear;

close all;

%% Problem Definition

CostFunction=@(x) Sphere(x);        % Cost Function

nVar=5;             % Number of Decision Variables

VarSize=[1 nVar];   % Decision Variables Matrix Size

VarMin=-10;         % Decision Variables Lower Bound

VarMax= 10;         % Decision Variables Upper Bound

%% BBO Parameters

MaxIt=1000;          % Maximum Number of Iterations

nPop=50;            % Number of Habitats (Population Size)

KeepRate=0.2;                   % Keep Rate

nKeep=round(KeepRate*nPop);     % Number of Kept Habitats

nNew=nPop-nKeep;                % Number of New Habitats

% Migration Rates

mu=linspace(1,0,nPop);          % Emmigration Rates

lambda=1-mu;                    % Immigration Rates

alpha=0.9;

pMutation=0.1;

sigma=0.02*(VarMax-VarMin);

%% Initialization

% Empty Habitat

habitat.Position=[];

habitat.Cost=[];

% Create Habitats Array

pop=repmat(habitat,nPop,1);

% Initialize Habitats

for i=1:nPop

    pop(i).Position=unifrnd(VarMin,VarMax,VarSize);

    pop(i).Cost=CostFunction(pop(i).Position);

end

    % Show Iteration Information

    disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);

    

end

%% Results

figure;

%plot(BestCost,'LineWidth',2);

semilogy(BestCost,'LineWidth',2);

xlabel('Iteration');

ylabel('Best Cost');

grid on;

3 仿真结果

4 参考文献

[1]王存睿等. "生物地理学优化算法综述." 计算机科学 37.007(2010):34-38.

5 完整MATLAB代码与数据下载地址

见博客主页头条