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 仿真结果

【优化求解】基于堆优化算法求解单目标优化问题附matlab代码_无人机

【优化求解】基于堆优化算法求解单目标优化问题附matlab代码_sed_02

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代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【优化求解】基于堆优化算法求解单目标优化问题附matlab代码_参考文献_03