资源简介
两个函数进行多目标粒子群优化,可以修改适应值即两个目标函数进行替换
代码片段和文件信息
clc
clear all
%**************************************************************%
%---决策空间的设置1---%
m=20; %population size
D=33; %each particle position dimension
xmin=0; %search space upper limit
xmax=2500; %search space lower limit
vmax=xmax-xmin; %maximum of velocity
%---决策空间设置1结束--%
%******种群位置与速度初始化*******%
%--薛师兄版本--%
for i=1:m
for j=1:D
x(ji)=xmin+(xmax-xmin)*rand; % 产生D*m维矩阵作为粒子的位置信息
v(ji)=rand*vmax;
end
end
%--薛师兄版本 完毕--%
%******种群位置初始化结束********%
%---目标空间设置---%
maxFun=2; %number of objective function
%--目标空间设置结束--%
%--进化参数设置--%
maxIterations=40; %maximum of iterations
wmax=0.9; %maximum of inertia factor
wmin=0.4; %minimum of inertia factor
c1=2; %1.4962; %learning factor1
c2=2; %1.4962; %learning factor2
%--进化参数设置结束--%
%***************************************************************%
%*******计算初始种群的适应度值****%
disp(‘开始计算初始种群的适应度值....‘)
for i=1:m
i
f(1i)=fitness1(x(:i)D);
f(2i)=fitness2(x(:i)D);
end
disp(‘计算初始种群的适应度值完毕....‘)
%--计算初始种群的适应度值结束--%
%--将粒子的“位置”信息与“适应度f1,f2”信息结合,生成Stem1矩阵--%
%Stem1矩阵共有m行,D+3列;
%前D列存放m个粒子的位置信息,第D+1列和D+2列分别对应存放双目标的适应度信息f1,f2,第D+3列存放对应粒子的拥挤距离信息
disp(‘生成Stem矩阵....‘)
for i=1:m
Stem1(i1:D)=x(:i); %存放位置信息
end
Stem1(:D+1)=f(1:); %存放适应度信息f1
Stem1(:D+2)=f(2:); %存放适应度信息f2
Stem1(:D+3)=0; %存放粒子拥挤距离信息
pbest=Stem1;
for i=1:m
px(:i)=pbest(i1:D); %初始化粒子的历史最优位置px,D*m矩阵
end
%-----外部归档集初始化初始化;外部归档集以Stem1的形式保存粒子信息(位置;适应度;拥挤距离信息)------%
disp(‘外部归档集初始化...‘)
archive=[];
for i=1:m %每次只考虑将一个粒子加到外部归档集
if(isempty(archive)) %第一个粒子直接存入archive
archive(1:)=Stem1(i:);
else %第二个粒子开始,通过和archive中的所有粒子进行比较,进而判断是否将粒子存入archive
%%--for循环作用:①判断第i个粒子是否可加入档案(“支配”或“非支配”所有archive中粒子) ②标记archive中被粒子i支配的粒子,准备删除
for k=1:size(archive1) % 依次与archive中的所有粒子进行比较,
%注意:【支配】【被支配】【非支配】三种关系!!!
%【if与else分支】若待加入的粒子i“支配”某个archive中粒子,则将i支配的所有粒子标记(准备删除),但粒子i不一定被加入档案
%若待加入的粒子i与archive中所有粒子均“无支配”(“非支配”)关系,无法判断优劣,则insert-flag置1,
%【elseif分支】若待加入粒子i被archive中某个粒子支配,即“被支配”,则inser-flag
%置0,不将第i个粒子加入档案(即使它有可能支配archive其中的粒子)但是被i支配的archive中粒子已被标记!
if((Stem1(iD+1)<=archive(kD+1))&&(Stem1(iD+2)<=archive(kD+2))&&(~((Stem1(iD+2)==archive(kD+2))&&(Stem1(iD+1)==archive(kD+1)))))
%--i dominate k--%
archive(k1)=1000000;%mark delete k
insert_flag=1;
elseif((Stem1(iD+1)>=archive(kD+1))&&(Stem1(iD+2)>=archive(kD+2))&&(~((Stem1(iD+2)==archive(kD+2))&&(Stem1(iD+1)==archive(kD+1)))))
%--k dominate i--%
insert_flag=0
相关资源
- 多目标跟踪 论文+代码
- matlab源码的IMM交互多目标单目标跟踪
- 多目标规划的求解方法及matlab程序
- MATLAB实现群体多目标优化算法MOALO蚁狮
- 多目标函数优化
- 粒子滤波多目标跟踪
- 多目标优化文档及代码
- 多目标优化算法
- 超完整规范的多目标遗传优化算法M
- MATLAB 目标追踪单目标、多目标 可以运
- platEMO内涵几乎所有多目标优化问题的
- Matlab编写多目标优化算法NSGA-Ⅱ的详解
- 两个经典的多目标优化算法代码:N
- 多目标粒子群社团检测算法MODPSO
- matlab多目标跟踪算法及数据集
- MATLAB 多目标粒子群算法源代码
- MOPSO+
- MATLAB多目标遗传算法
- NSGA-II多目标优化算法matlab程序
- NSGA-III多目标进化算法
- 多目标优化ABC
- Matlab有关多目标遗传算法和多目标优
- matlab开发-多目标优化差分进化算法
- 蚁群优化模拟退火算法、多目标,遗
- MOPSO多目标优化程序MATLAB代码.zip
- PSO_GD.m粒子群求解多目标优化
- 多目标粒子群优化算法MATLAB
- 自动驾驶多目标检测.7z
- 智能优化算法及其MATLAB源程序
- NSGA2经典的多目标优化算法
评论
共有 条评论