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

198 阅读1分钟

1 模型

生物地理分布优化算法 (BBO)是一种新型的智能优化算法,其寻优能力优于以往的智能优化算法,但同样存在早熟收敛的缺陷.针对该问题,提出了基于混沌的生物地理分布优化算法 (CBBO).该算法首先利用分段混沌映射产生初始种群,再根据BBO算法进行全局搜索得到当前最优解,最后以该解为基础进行混沌搜索得到全局最优解. 仿真测试表明,该算法的收敛速度和寻优精度均优于BBO算法和以往智能优化算法.

img

img

img

img

img

img

img

img

img

img

img

img

img

2 部分代码

\```ma
clc;

clear;

close all;

%% Problem Definition
CostFunction=@(x) Sphere(x);    % Cost Functio

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

VarMin=-10;     % Decision Variables Lower Bound

VarMax10;     % 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]张萍, 魏平, 于鸿洋, & 费春. (2012). 基于混沌的生物地理分布优化算法. 电子科技大学学报(01), 65-69.

5 MATLAB代码与数据下载地址

见博客主页头条