优化算法象群游牧优化算法(EHO)含Matlab源码 1080期

Posted 紫极神光(Q1564658423)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化算法象群游牧优化算法(EHO)含Matlab源码 1080期相关的知识,希望对你有一定的参考价值。

一、简介

象群优化算法(Elephant Herding Optimization, EHO)是 Wang 等人于2016 年提出了一种新的群体智能优化算法,用于解决全局无约束优化问题,它源于自然界中大象的畜牧行为。它已经成功应用于多级别阈值,支持向量机参数优化,调度问题等诸多问题。尽管 EHO 算法是一种较新的元启发式算法,但它有着结构简单、控制参数少以及易于和其它方法相结合等特点,能够很好的解决寻优问题。
1 算法原理
在自然界中,一个象群可分为几个氏族,每个氏族都有母象作为首领,在每一代中,一定数量的雄象会离开氏族。对于不同氏族的的大象在族长(氏族中位置最好的大象)的领导下生活,固定数量的雄象在长大后会离开它们所在的氏族,从而执行氏族更新操作来更新氏族中每个大象的位置,得到新的大象氏族位置,随后执行分类操作,进而优化氏族中位置较差的大象位置。

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

2 氏族更新操作
在这里插入图片描述
在这里插入图片描述
3 氏族分离操作
在这里插入图片描述

二、源代码

%% Elephant Herding Optimization Code

clear all; 
close all;
clc;
%% Initialization parameters %%
n_clan = 5; % the number of clan
n = 10; % the number of individuals in each clan
n_KEL = 4; % the kept elephants
alpha = 0.5; % scale factor 
beta = 0.1; % scale factor
T = 200; % generation maximum
D = 30; % individual dimension
Xmin = -100; % position minimum
Xmax = 100; % position maximum
t = 0; % the counter initial value 
%% Initialization population %%
X = rand(n*n_clan,D)*(Xmax-Xmin)+Xmin; % generate population randomly
for i = 1:n*n_clan
    Fit_X(i,:) = func(X(i,:)); % population fitness
end
%% Implement termination condition %%
while t < T
      [Sa_Fit_X,I_X_a] = sort(Fit_X,'ascend'); % ascend order
      I_KEL = I_X_a(1:n_KEL); % order number for KEL individuals
      KEL = X(I_KEL,:); % obtain the KEL individuals
      X = X(randperm(size(X,1)),:); % disorder population
     %% Implement clan updating algorithm %%
      for i = 1:n_clan
          clan = X((i-1)*n+1:i*n,:); % obtain the clan
          for j = 1:n
              Fit_clan(j,:) = func(clan(j,:)); % calculate individual fitness in each clan 
              [Fit_Xbest,I_Xbest] = min(Fit_clan); % obtain the best fitness and order number in each clan
              Xbest = clan(I_Xbest,:); % obtain the best individual in each clan
              % Xbest refers to the matriarch in each clan
              if X((i-1)*n+j,:) == Xbest
                 X_clan_center = sum(clan)/n_clan; % obtain the center individual in each clan
                 X((i-1)*n+j,:) = beta*X_clan_center; % update the best individual in each clan
              else
                 X((i-1)*n+j,:) = X((i-1)*n+j,:)+alpha*(Xbest-X((i-1)*n+j,:))*rand; % update all individuals in each clan
              end
          end
      end
     %% Implement seperating operator %%
      for i = 1:n_clan          
          clan_updated = X((i-1)*n+1:i*n,:); % obtain the clan
          for j = 1:n
              Fit_clan_updated(j,:) = func(clan_updated(j,:)); % calculate individual fitness in each updated clan 
          end
          [Fit_Xworst,I_Xworst] = max(Fit_clan_updated); % the worst fitness and order number in each updated clan
          X(I_Xworst,:) = rand(1,D)*(Xmax-Xmin+1)+Xmin; % replace the worst individual with a generated-randomly individual
      end
for u = 1:n*n_clan
    Fit_X_1(u,:) = func(X(u,:)); % population fitness
end
[Sd_Fit_X,I_X_d] = sort(Fit_X_1,'descend'); % descend order
I_X_worst = I_X_d(1:n_KEL); % order number for worst individuals
X(I_X_worst,:) = KEL; % replace the worst individuals with KEL
for v = 1:n*n_clan
    Fit_X(v,:) = func(X(v,:)); % population fitness
end

三、运行结果

在这里插入图片描述

四、备注

版本:2014a

以上是关于优化算法象群游牧优化算法(EHO)含Matlab源码 1080期的主要内容,如果未能解决你的问题,请参考以下文章

优化选址基于matlab蚁群算法求解电动汽车充电站与换电站选址优化问题含Matlab源码 1182期

优化算法细菌粒子群优化算法含Matlab源码 1195期

优化算法基于matlab量子粒子群算法求解单目标优化问题含Matlab源码 2203期

图像分割基于matlab粒子群算法优化模拟退火算法图像分割含Matlab源码 2020期

优化算法粒子群优化模拟器含Matlab源码 1553期

优化算法大鼠群优化器算法(RSO)含Matlab源码 1837期