0
点赞
收藏
分享

微信扫一扫

象群游牧优化算法(EHO)(Matlab完整代码实现)

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

1 概述

2 象群游牧算法的数学模型

3 部落中大象位置的更新公式

4 运行结果

5 Matlab代码实现

象群游牧优化算法(EHO)(Matlab完整代码实现)_matlab

1 概述

在自然界中,一个象群可分为几个氏族,每个氏族都有母象作为首领,在每一代中,一定数量的雄象会离开氏族。对于不同氏族的的大象在族长(氏族中位置最好的大象)的领导下生活,固定数量的雄象在长大后会离开它们所在的氏族,从而执行氏族更新操作来更新氏族中每个大象的位置,得到新的大象氏族位置,随后执行分类操作,进而优化氏族中位置较差的大象位置。

在基本的象群优化算法中氏族代表着局部搜索,离开氏族的雄象则执行全局搜索。在基本的 EHO 算法中,先进行更新操作决定算法的搜索方向和局部搜素详细程度,随后实现分离操作。这个过程包括两个阶段:氏族更新操作和分离操作。
 

象群游牧算法的数学模型

象群的游牧行为非常复杂,但是其中一些行为可以帮助我们寻找全局最优解和局部最优解。对此,进行数学建模为:

(1) 象群的每个部落都有固定数目的大象;

(2) 每次迭代中,部落中都有一定数目的大象离开部落,独自生活并与部落保持一定的联系;

(3) 每个部落都是由女族长领导-----在算法中,女族长是适应度值最大的大象。

3 部落中大象位置的更新公式

1)部落中普通大象的更新公式:

象群游牧优化算法(EHO)(Matlab完整代码实现)_大数据_02

2)族长的位置更新公式:

象群游牧优化算法(EHO)(Matlab完整代码实现)_搜索_03

3)公象的分离公式:

象群游牧优化算法(EHO)(Matlab完整代码实现)_matlab_04

4 运行结果

象群游牧优化算法(EHO)(Matlab完整代码实现)_搜索_05

function [Population, indices] = PopSort(Population)

popsize = length(Population);
Cost = zeros(1, popsize);
indices = zeros(1, popsize);
for i = 1 : popsize
    Cost(i) = Population(i).cost;
end
[Cost, indices] = sort(Cost, 2, 'ascend');
Chroms = zeros(popsize, length(Population(1).chrom));
for i = 1 : popsize
    Chroms(i, :) = Population(indices(i)).chrom;
end
for i = 1 : popsize
    Population(i).chrom = Chroms(i, :);
    Population(i).cost = Cost(i);
end

举报

相关推荐

0 条评论