✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
许多优化问题可以使用元启发法而不是确定性和启发式方法来解决。本研究提出了一种新颖的基于群体的元启发式算法,称为指数分布优化器(EDO)。EDO的主要灵感来自于基于指数概率分布模型的数学。首先,我们初始化代表多个指数分布模型的随机解决方案群体。每个解中的位置代表指数随机变量。所提出的算法包括两种开发和探索策略的方法。在开发阶段,该算法利用三个主要概念:无记忆特性、引导解和指数随机变量之间的指数方差来更新当前解。为了模拟无记忆特性,我们假设原始群体仅包含获得良好适应度的获胜者。我们构建了另一个称为无记忆的矩阵,以保留新生成的解决方案,而不管它们与原始群体中相应的获胜者相比的适应性如何。因此,无记忆矩阵存储两种类型的解决方案:赢家和输家。根据无记忆特性,我们忽略也不记住这些解决方案之前的历史,因为过去的失败是独立的,对未来没有影响。因此,失败者可以为下次更新新的解决方案做出贡献。我们从指数分布派生的原始总体中选择两个解决方案,以在整个探索阶段更新新的解决方案。此外,除了进化计算大会 (CEC) 2014、CEC 2017、CEC 2020 和 CEC 2022 基准以及六个工程设计问题之外,EDO 还针对经典测试函数进行了测试。EDO 与 CEC 2014、CEC 2017 和 CEC 2020 的获胜者分别为 L-SHADE、LSHADE−cnEpSin 和 AGSK 进行比较。EDO 揭示了令人兴奋的结果,可以成为 CEC 竞赛的强大工具。统计分析证明了所提出的 EDO 在 95% 置信区间的优越性。EDO 揭示了令人兴奋的结果,可以成为 CEC 竞赛的强大工具。统计分析证明了所提出的 EDO 在 95% 置信区间的优越性。EDO 揭示了令人兴奋的结果,可以成为 CEC 竞赛的强大工具。统计分析证明了所提出的 EDO 在 95% 置信区间的优越性。
⛄ 部分代码
%_______________________________________________________________________________________%% Exponential Distribution Optimizer (EDO) % %% Developed in MATLAB R2022a %%_______________________________________________________________________________________%clcclear allNP = 30;Max_iter=1666;runs=30;benchmarksType = 1;if benchmarksType == 1 maxFunc = 9;elseif benchmarksType == 2 maxFunc = 15;elseif benchmarksType == 3 maxFunc = 27;elseif benchmarksType == 4 maxFunc = 17;else exit;endtime=[];EDO_algor=zeros(runs, Max_iter);EDO_algo=zeros(1,runs);for fn=1:maxFunc Function_name=strcat('F',num2str(fn)); if benchmarksType == 1 [LB,UB,Dim,F_obj]=unimodalFixedDim(Function_name); elseif benchmarksType == 2 [LB,UB,Dim,F_obj]=unimodalVariableDim(Function_name); elseif benchmarksType == 3 [LB,UB,Dim,F_obj]=multimodalFixedDim(Function_name); elseif benchmarksType == 4 [LB,UB,Dim,F_obj]=multimodalVariableDim(Function_name); end fprintf(['benchmark \t',num2str(benchmarksType),'\t','Function_name\t',Function_name]); for i=1:1:runs tic() [EDO_BestFitness,EDO_Bestsol]=EDO(NP,Max_iter,LB,UB,Dim,F_obj); EDO_time=toc; time=[time;EDO_time]; EDO_algo(i)=EDO_BestFitness; end % performance measures EDO_std=std(EDO_algo);%EDO EDO_Mean=mean(EDO_algo); EDO_best=min(EDO_algo); EDO_worst=max(EDO_algo); fprintf('\tEDO\n'); fprintf(['Best\t',num2str(EDO_best,20),'\n']); fprintf(['Worst\t',num2str(EDO_worst,20),'\n']); fprintf(['Mean\t',num2str(EDO_Mean,20),'\n']); fprintf(['STD\t',num2str(EDO_std,20),'\n\n']); for i=1:runs fprintf(['\t',num2str(EDO_algo(i),20),'\n']); endend
⛄ 运行结果
⛄ 参考文献
Abdel-Basset, M., El-Shahat, D., Jameel, M., & Abouhawwash, M. (2023). Exponential distribution optimizer (EDO): a novel math-inspired algorithm for global optimization and engineering problems. Artificial Intelligence Review, 1-72. DOI: https://doi.org/10.1007/s10462-023-10403-9