1 简介
In an organization, a group of people working for a common goal may not achieve their goal unless theyorganize themselves in a hierarchy called Corporate Rank Hierarchy (CRH). This principle motivates us tomap the concept of CRH to propose a new algorithm for optimization that logically arranges the searchagents in a hierarchy based on their fifitness. The proposed algorithm is named as heap-based optimizer(HBO) because it utilizes the heap data structure to map the concept of CRH. The mathematical modelof HBO is built on three pillars: the interaction between the subordinates and their immediate boss,the interaction between the colleagues, and self-contribution of the employees. The proposed algorithmis benchmarked with 97 diverse test functions including 29 CEC-BC-2017 functions with very challenginglandscapes against 7 highly-cited optimization algorithms including the winner of CEC-BC-2017 (EBOCMAR). In the fifirst two experiments, the exploitative and explorative behavior of HBO is evaluated byusing 24 unimodal and 44 multimodal functions, respectively. It is shown through experiments andFriedman mean rank test that HBO outperforms and secures 1st rank. In the third experiment, we use29 CEC-BC-2017 benchmark functions. According to Friedman mean rank test HBO attains 2nd positionafter EBO-CMAR; however, the difference in ranks of HBO and EBO-CMAR is shown to be statisticallyinsignifificant by using Bonferroni method based multiple comparison test. Moreover, it is shown throughthe Friedman test that the overall rank of HBO is 1st for all 97 benchmarks. In the fourth and the lastexperiment, the applicability on real-world problems is demonstrated by solving 3 constrained mechanical engineering optimization problems. The performance is shown to be superior or equivalent to theother algorithms, which have been used in the literature.
2 部分代码
%_________________________________________________________________________________
clear all
clc
global cycles
global degree
%sv is shift variable which decides shift length
global sv
sv = 100;
%benchmarksType = 1 for Unimodal Fixed-Dim
%benchmarksType = 2 for Unimodal Variable-Dim
%benchmarksType = 3 for Multimodal Fixed-Dim
%benchmarksType = 4 for Multimodal Variable-Dim
%benchmarksType = 5 for CEC-BC-2017
%benchmarksType = 6 for shifted functions
benchmarksType = 1;
if benchmarksType == 1
maxFunc = 9;
elseif benchmarksType == 2
maxFunc = 15;
elseif benchmarksType == 3
maxFunc = 27;
elseif benchmarksType == 4
maxFunc = 17;
elseif benchmarksType == 5
maxFunc = 30;
elseif benchmarksType == 6
maxFunc = 16;
else
exit;
end
SearchAgents_no = 40;
Max_iteration= 1282; %50000 F.EV / 39 agents = 1282 iterations
runs = 25;
cycles = floor(Max_iteration/25);
degree = 3;
for fn = 1:maxFunc
Function_name=strcat('F',num2str(fn));
if benchmarksType == 1
[lb,ub,dim,fobj]=unimodalFixedDim(Function_name);
elseif benchmarksType == 2
[lb,ub,dim,fobj]=unimodalVariableDim(Function_name);
elseif benchmarksType == 3
[lb,ub,dim,fobj]=multimodalFixedDim(Function_name);
elseif benchmarksType == 4
[lb,ub,dim,fobj]=multimodalVariableDim(Function_name);
elseif benchmarksType == 5
if fn == 2
continue; %To skip function-2 of CEC-BC-2017 because of its unstable behavior
end
[lb,ub,dim,fobj]=CEC2017(Function_name);
elseif benchmarksType == 6
[lb,ub,dim,fobj]=shiftedFunctions(Function_name);
end
% Calling algorithm
Best_score_T = zeros(runs,1);
AvgConvCurve = zeros(Max_iteration,1);
%display (['Function: ', num2str(fn)]);
for run=1:runs
%rng('shuffle');
[Best_score_0, Best_pos, cg_curve]=HBO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
Best_score_T(run) = Best_score_0;
%AvgConvCurve = AvgConvCurve + cg_curve';
%display(['Run: ', num2str(run), ' ', 'Fitness: ', num2str(Best_score_0), ' ', 'Position: ', num2str(Best_pos)]);
end
%pause
Best_score_Best = min(Best_score_T);
Best_score_Worst = max(Best_score_T);
Best_score_Median = median(Best_score_T);
Best_Score_Mean = mean(Best_score_T);
Best_Score_std = std(Best_score_T);
%AvgConvCurve = AvgConvCurve ./ runs;
format long
display(['Median: ', num2str(Best_score_Median), ' ', 'Mean: ', num2str(Best_Score_Mean), ' ', 'Std. Deviation: ', num2str(Best_Score_std)]);
end
figure
plot(cg_curve,'linewidth',3)
xlabel('迭代次数')
ylabel('适应度值')
3 仿真结果
4 参考文献
Askari, Qamar, et al. “Heap-Based Optimizer Inspired by Corporate Rank Hierarchy for Global Optimization.” Expert Systems with Applications, vol. 161, Elsevier BV, Dec. 2020, p. 113702, doi:10.1016/j.eswa.2020.113702.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。