💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进;
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。
更多Matlab信号处理仿真内容点击👇
①Matlab信号处理 (进阶版)
②付费专栏Matlab信号处理(初级版)
⛳️关注优快云海神之光,更多资源等你来!!
⛄一、生物地理算法简介
1 基本思路
BBO 算法起源于生物地理学,它通过模拟多物种在不同栖息地的分布、迁移、突变等规律求解寻优问题,在多目标规划领域有广泛应用. 栖息地被认为是独立的区域,不同的栖息地拥有不同的适宜指数HSI(Habitat suitability index)。 HSI较高的栖息地物种丰富度较高,随着种群趋于饱和,其迁出率增高,迁入率减少,而HIS较低的栖息地与之相反,迁入率增高,迁出率减少. 当栖息地遭遇灾害或瘟疫等突发事件时,HIS将随之突变,打破动态平衡,为低HIS的栖息地添加了不可预见性,增大了搜索目标解的几率2.2 迁移和突变操作物种的迁移有其具体的物理模型,最常的有线性模型、二次模型、余弦模型等 . 以图 3线性模型为例,当某栖息地物种数目为 0 时迁入率最高,此刻 λ = I,随着迁入物种数目不断增加,受阳光、水、食物等资源限制,迁入率不断降低,迁出率不断增高 . 当栖息地物种数目为 S0时,恰好达到动态平衡,此时迁出率与迁入率相同 . 而栖息地达到饱和状态时,物种数量达到最大值Smax ,此刻不再有物种迁入,迁出率 μ = E.突变操作基于生物地理学统计公式完成:
式中:ms为栖息地发生突变的概率,mmax为最大突变率,用户可自行设定 . ps为栖息地容纳s种物种的概率, pmax代表容纳最大种群的概率。
⛄二、部分源代码
%%
clc;
[bestfit, averagefit,CHNum,STATISTICS]=start();
function [Chromosome,Fitness,CHNum] = BBO(ProbFlag,Fitness,PopulationSize,NumberOfNodes,Chromosome,Sensor,Sink,ETX,ERX,Efs,Emp,EDA,do,NumofCH,Totenergy)
if ~exist(‘ProbFlag’, ‘var’)
ProbFlag = true;
end
pmodify = 1; % habitat modification probability
pmutate = 0.5; % initial mutation probability
Keep = 2; % elitism parameter: how many of the best habitats to keep from one generation to the next
lambdaLower = 0.0; % lower bound for immigration probabilty per gene
lambdaUpper = 1; % upper bound for immigration probabilty per gene
dt = 1; % step size used for numerical integration of probabilities
I = 1; % max immigration rate for each island
E = 1; % max emigration rate, for each island
P = PopulationSize; %max species count, for each island
for j = 1 : size(Chromosome,1)
Prob(j) = 1 / size(Chromosome,1);
end
% Begin the optimization loop
for GenIndex = 1 : 20
% GenIndex
% Sorting of population
[Chromosome,indices,Fitness]=PopSort(Chromosome,Fitness);
MinFitness = [Fitness(1)];
% Compute the average cost
[AverageFitness] = ComputeAveCost(Chromosome,Fitness);
AvgFitness = [AverageFitness];
% Save the best habitats in a temporary array.
for j = 1 : Keep
chromKeep(j,:) = Chromosome(j,:);
costKeep(j) = Fitness(j);
end
% Map cost values to species counts.
for i = 1 : size(Chromosome,1)
if Fitness(i)< inf
SpeciesCount(i) = P - i;
else
SpeciesCount(i) = 0;
end
end
% Compute immigration rate and emigration rate for each species count.
for i = 1 : size(Chromosome,1)
lambda(i) = I * (1 - SpeciesCount(i) / P);
mu(i) = E * SpeciesCount(i) / P;
end
if ProbFlag
% Compute the time derivative of Prob(i) for each habitat i.
for j = 1 : size(Chromosome,1)
lambdaMinus = I * (1 - (SpeciesCount(j) - 1) / P);
muPlus = E * (SpeciesCount(j) + 1) / P;
if j < size(Chromosome,1)
ProbMinus = Prob(j+1);
else
ProbMinus = 0;
end
if j > 1
ProbPlus = Prob(j-1);
else
ProbPlus = 0;
end
ProbDot(j) = -(lambda(j) + mu(j)) * Prob(j) + lambdaMinus * ProbMinus + muPlus * ProbPlus;
end
% Compute the new probabilities for each species count.
Prob = Prob + ProbDot * dt;
Prob = max(Prob, 0);
Prob = Prob / sum(Prob);
end
% Now use lambda and mu to decide how much information to share between habitats.
lambdaMin = min(lambda);
lambdaMax = max(lambda);
for k = 1 : size(Chromosome,1)
if rand > pmodify
continue;
end
% Normalize the immigration rate.
lambdaScale = lambdaLower + (lambdaUpper - lambdaLower) * (lambda(k) - lambdaMin) / (lambdaMax - lambdaMin);
% Probabilistically input new information into habitat i
for j = 1 : NumberOfNodes
if (Chromosome(k,j) ~= -1) && rand < lambdaScale
% Pick a habitat from which to obtain a feature
RandomNum = rand * sum(mu);
Select = mu(1);
SelectIndex = 1;
while (RandomNum > Select) && (SelectIndex < PopulationSize)
SelectIndex = SelectIndex + 1;
Select = Select + mu(SelectIndex);
end
Chromosome(k,j) = Chromosome(SelectIndex,j);
else
Chromosome(k,j) = Chromosome(k,j);
end
end
end
if ProbFlag
% Mutation
Pmax = max(Prob);
MutationRate = pmutate * (1 - Prob / Pmax);
% Sorting of population
[Chromosome,indices,Fitness]=PopSort(Chromosome,Fitness);
% Mutate only the worst half of the solutions
for k = 1 : size(Chromosome,1)
for parnum = 1 : NumberOfNodes
if (Chromosome(k,parnum) ~= -1) && MutationRate(k) > rand
if( Chromosome(k,parnum) == 0)
Chromosome(k,parnum)= 1;
else
Chromosome(k,parnum) = 0;
end
end
end
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合