【樽海鞘算法】基于樽海鞘算法求解多目标问题附matlab代码
【樽海鞘算法】基于樽海鞘算法求解多目标问题附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
2 部分代码
%________________________________________________________________________________
_
% Multi-objective Salp Swarm Algorithm (MSSA) source codes version
1.0
%
clc;
clear;
close all;
% Change these details with respect to your problem
%%%
%%%
%%%
%%%
%%
ObjectiveFunction=@ZDT1;
dim=5;
lb=0;
ub=1;
obj_no=2;
if size(ub,2)==1
ub=ones(1,dim)*ub;
lb=ones(1,dim)*lb;
end
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%
max_iter=
100
;
N=
200
;
ArchiveMaxSize=
100
;
Archive_X=zeros(
100
,dim);
Archive_F=ones(
100
,obj_no)*inf;
Archive_member_no=
0
;
r=(ub-lb)/
2
;
V_max=(ub(
1
)-lb(
1
))/
10
;
Food_fitness=inf*ones(
1
,obj_no);
Food_position=zeros(dim,
1
);
Salps_X=initialization(N,dim,ub,lb);
fitness=zeros(N,
2
);
V=initialization(N,dim,ub,lb);
iter=
0
;
position_history=zeros(N,max_iter,dim);
for
iter=
1
:max_iter
c1 =
2
*exp(-(
4
*iter/max_iter)^
2
); % Eq. (
3.2
)
in
the paper
for
i=
1
:N
%Calculate all the objective values first
Salps_fitness(i,
:
)=ObjectiveFunction(Salps_X(
:
,i)
’);
if dominates(Salps_fitness(i,:),Food_fitness)
Food_fitness=Salps_fitness(i,:);
Food_position=Salps_X(:,i);
end
end
[Archive_X, Archive_F, Archive_member_no]=UpdateArchive(Archive_X, Archive_F, Salps_X, Salps_fitness, Archive_member_no);
if Archive_member_no>ArchiveMaxSize
Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
[Archive_X, Archive_F, Archive_mem_ranks, Archive_member_no]=HandleFullArchive(Archive_X, Archive_F, Archive_member_no, Archive_mem_ranks, ArchiveMaxSize);
else
Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
end
Archive_mem_ranks=RankingProcess(Archive_F, ArchiveMaxSize, obj_no);
% Archive_mem_ranks
% Chose the archive member in the least population area as food`
% to improve coverage
index=RouletteWheelSelection(1./Archive_mem_ranks);
if index==-1
index=1;
end
Food_fitness=Archive_F(index,:);
Food_position=Archive_X(index,:)’
;
for
i=
1
:N
index=
0
;
neighbours_no=
0
;
if
i<=N/
2
for
j=
1
:
1
:dim
c2=rand();
c3=rand();
%%%
%%%
%%%
%%%
% % Eq. (
3.1
)
in
the paper
%%%
%%%
%%%
%%%
%%
if c3<0.5
Salps_X(j,i)=Food_position(j)+c1*((ub(j)-lb(j))*c2+lb(j));
else
Salps_X(j,i)=Food_position(j)-c1*((ub(j)-lb(j))*c2+lb(j));
end
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%
end
elseif i>N/2 && i<N+1
point1=Salps_X(:,i-1);
point2=Salps_X(:,i);
Salps_X(:,i)=(point2+point1)/(2); %
Eq. (
3.4
)
in
the paper
end
Flag4ub=Salps_X(
:
,i)>ub
’;
Flag4lb=Salps_X(:,i)<lb’
;
Salps_X(
:
,i)=(Salps_X(
:
,i).*(~(Flag4ub+Flag4lb)))+ub
’.*Flag4ub+lb’
.*Flag4lb;
end
display([
’At the iteration ’
, num2str(iter),
’ there are ’
, num2str(Archive_member_no),
’ non-dominated solutions in the archive’
]);
end
figure
Draw_ZDT1();
hold on
plot(Archive_F(
:
,
1
),Archive_F(
:
,
2
),
’ro’
,
’MarkerSize’
,
8
,
’markerfacecolor’
,
’k’
);
legend(
’True PF’
,
’Obtained PF’
);
title(
’MSSA’
);
set(gcf,
’pos’
, [
403
466
230
200
])
3 仿真结果
4 参考文献
[1]康俊涛, 邹立, 曹鸿猷,等. 基于樽海鞘群算法的桁架结构优化设计[J]. 空间结构, 2020, 26(3):9.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
