✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
生物种群中单个个体的智能水平往往有限,但整个生物群体却表现出处理复杂问题的能力.群体智能就是受自然生物群体行为的启发而产生的一类重要的人工智能方法.鸽子具有特殊的归巢能力,它们被认为使用太阳、地球磁场和地标的组合来寻找巢穴.Roberts等认为,鸽子可能在旅程的不同阶段使用不同的导航工具[5],Guilford和他的同事开发了一个数学模型,可以预测鸽子何时从一种导航方式转换到另一种方式.当鸽子开始它们的旅程时,它们可能会更多地依赖类似指南针的工具[6];在旅途中,当它们找到熟悉的地形或者标志性建筑时,它们转而使用地标[7-8].受这种鸽群归巢行为机制的启发,Duan等提出了一种鸽群优化算法[9](pigeon-inspiredoptimization,PIO),其简单、有效的特点[10]促使它得到了众多学者的重视和研究PIO模型中,每个优化问题的解都是搜索空间中的一只虚拟鸽子.每只鸽子都有一个速度矢量和位置矢量来决定它们的当前位置以及飞翔方向和距离,每只鸽子的位置所对应的目标函数值作为该鸽子的适应度(fitnessvalue).所有鸽子个体按照一定的规则在解空间中寻找最优解,即适应度的最大值或最小值,笔者以最小值优化为例进行讨论.
⛄ 部分代码
% This function initialize the first population of search agents
function Positions = initialization(SearchAgents_no, dim, ub, lb)
Boundary_no= size(ub, 2); % numnber of boundaries
% If the boundaries of all variables are equal and user enter a signle
% number for both ub and lb
if Boundary_no==1
Positions = rand(SearchAgents_no, dim).*(ub-lb)+lb;
end
% If each variable has a different lb and ub
if Boundary_no > 1
for i=1:dim
ub_i = ub(i);
lb_i = lb(i);
Positions(:, i) = rand(SearchAgents_no, 1).*(ub_i-lb_i)+lb_i;
end
end
⛄ 运行结果
⛄ 参考文献
[1]朱震宇, 王艳, 纪志成. 基于高斯鸽群优化算法的典型工艺知识发现方法[J]. 信息与控制, 2019(1):9.