多目标优化算法:基于非支配排序的人工兔优化算法(Non-Dominated Sorting Artificial Rabbits Optimization ,NSARO)

一、人工兔优化算法算法简介

人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道觅食和随机躲藏,并通过能量收缩在两种策略之间转换。绕道觅食策略迫使兔子吃其他兔子巢附近的草,这可以防止它的巢穴被捕食者发现。随机隐藏策略使兔子能够从自己的洞穴中随机选择一个洞穴进行隐藏,这可以减少被敌人捕获的可能性。此外,兔子的能量收缩将导致从绕道觅食策略过渡到随机隐藏策略。

ARO算法描述:

在这里插入图片描述

ARO算法流程:

在这里插入图片描述

参考文献: Liying Wang, Qingjiao Cao, Zhenxing Zhang, et al. Artificial rabbits optimization: A new bio-inspired meta-heuristic algorithm for solving engineering optimization problems[J]. Engineering Applications of Artificial Intelligence, 2022, 114: 105082.

二、基于非支配排序的人工兔优化算法

基于非支配排序的人工兔优化算法(Non-Dominated Sorting Artificial Rabbits Optimization ,NSARO)由人工兔优化算法的优良策略与非支配排序策略融合而成。为了验证所提的NSARO的有效性,将其在46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计)上实验,并采用IGD、GD、HV、SP进行指标评价。部分结果如下:

close all;
clear ; 
clc;
%%
% TestProblem测试问题说明:
%一共46个多目标测试函数,详情如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DZDT1-DZDT7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
%43-46:Kursawe、Poloni、Viennet2、Viennet3
%47 盘式制动器设计 
%%
TestProblem=1;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 100;        % Population size
params.Nr = 200;        % Repository size
params.maxgen =200;    % Maximum number of generations
numOfObj=MultiObj.numOfObj;%目标函数个数
D=MultiObj.nVar;%维度
f = NSARO(params,MultiObj);
X=f(:,1:D);%PS
Obtained_Pareto=f(:,D+1:D+numOfObj);%PF
if(isfield(MultiObj,'truePF'))%判断是否有参考的PF
True_Pareto=MultiObj.truePF;
%%  Metric Value
% ResultData的值分别是IGD、GD、HV、Spacing  (HV越大越好,其他指标越小越好)
ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)];
else
    %计算每个算法的Spacing,Spacing越小说明解集分布越均匀
    ResultData=Spacing(Obtained_Pareto);%计算的Spacing
end
%%
disp('Repository fitness values are stored in Obtained_Pareto');
disp('Repository particles positions are store in X');

ZDT1:

请添加图片描述

ZDT2:

请添加图片描述

ZDT3:

请添加图片描述

ZDT4:

请添加图片描述

ZDT6:

请添加图片描述

DTLZ6:

请添加图片描述

Viennet3

请添加图片描述

盘式制动器设计:

请添加图片描述

三、完整代码请添加博客下方博主微信

猜你喜欢

转载自blog.csdn.net/weixin_46204734/article/details/129151600