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代码与数据下载地址
见博客主页头条