WSN通信基于matlab生物地理学优化HWSN节能聚类协议含Matlab源码 1989期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSN通信基于matlab生物地理学优化HWSN节能聚类协议含Matlab源码 1989期相关的知识,希望对你有一定的参考价值。
一、生物地理算法简介
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 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于WSN通信基于matlab生物地理学优化HWSN节能聚类协议含Matlab源码 1989期的主要内容,如果未能解决你的问题,请参考以下文章
布局优化基于麻雀算法的无线传感器网(WSN)覆盖优化matlab源码
布局优化基于麻雀算法实现无线传感器网(WSN)覆盖优化 Matlab源码
布局优化基于麻雀算法实现无线传感器网(WSN)覆盖优化 Matlab源码
布局优化基于遗传算法的的无线传感器网(WSN)覆盖优化Matlab源码