优化算法象群游牧优化算法(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量子粒子群算法求解单目标优化问题含Matlab源码 2203期