一、算法简介
多目标向日葵优化算法(Multi-objective sunflower optimization,MOSFO)由Joao Luiz Junho Pereira等人于2023年提出。
二、算法原理
MOSFO算法描述如下:
三、数值实验
将MOSFO用于求解以下3个问题:
3.1实验结果:
MOSFO种群设置为200,最大迭代次数为100。
close all;
clear ;
clc;
%%
% TestProblem测试问题说明:
%一共3个工程应用(1-3)
%%
TestProblem=2;%1-3
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 200; % Population size 种群大小
params.Nr = 200; % Repository size 外部存档中最大数目,可适当调整大小,越大,最终获得的解数目越多
params.maxgen =100; % Maximum number of generations 最大迭代次数
params.ngrid = 30; % Number of grids in each dimension
params.maxvel = 5; % Maxmium vel in percentage
% MOSFO
[XPF,FVALPF] = MOSFO(params,MultiObj);
%% 画结果图
figure(2)
if(size(FVALPF,2)==2)
h_rep = plot(FVALPF(:,1),FVALPF(:,2),'ok'); hold on;
if(isfield(MultiObj,'truePF'))
h_pf = plot(MultiObj.truePF(:,1),MultiObj.truePF(:,2),'.r'); hold on;
legend('MOSFO','TruePF');
else
legend('MOSFO');
end
grid on; xlabel('f1'); ylabel('f2');
end
if(size(FVALPF,2)==3)
h_rep = plot3(FVALPF(:,1),FVALPF(:,2),FVALPF(:,3),'ok'); hold on;
if(isfield(MultiObj,'truePF'))
h_pf = plot3(MultiObj.truePF(:,1),MultiObj.truePF(:,2),MultiObj.truePF(:,3),'.r'); hold on;
legend('MOSFO','TruePF');
else
legend('MOSFO');
end
grid on; xlabel('f1'); ylabel('f2'); zlabel('f3');
end
title(MultiObjFnc)
3.1.1盘式制动器设计:解盘式制动器设计(Disk brake design problem)
3.1.2杆桁架问题:杆桁架问题(4-bar truss problem)
3.1.3PCD问题:
四、源代码
文件夹中包含3个工程应用的所有代码及参考文献,均可运行。