资源简介
两个函数进行多目标粒子群优化,可以修改适应值即两个目标函数进行替换
代码片段和文件信息
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
- 基于MOEA/D的多目标优化算法
- 多目标优化算法评价指标.zip
-
matlab开发-mssamultiob
jectivesalpswarmalg - 多目标优化遗传算法
- 多目标perota优化MATLAB算法
- 动态NSGA-II算法matlab代码
- 线性规划.非线性规划.多目标规划Ma
- 多目标粒子群算法源代码
- 多目标粒子群算法matlab
- 多部电梯调配优化仿真程序
- NSGA2 多目标优化
- 多目标粒子群算法matlab源程序
- 多目标遗传算法matlab程序
- 标准差分进化算法多目标线性规划的
- 数学建模之动态规划及多目标优化m
- 多类分类 目标检测
- 多目标优化算法中的标准测试函数的
- 多目标粒子群算法
- CPHD的方法实现多目标跟踪
- 多目标跟踪时的逻辑航迹起始算法
- 论文研究 - 金融投资风险数学模型
- Matlab 多目标优化 遗传算法
- 基于视频检测的多目标跟踪的完整m
- Matlab多目标遗传算法 附带程序
- 用matlab仿真多目标跟踪中的航迹关联
- MOEA/D、MOP多目标分解算法代码,MATL
- Matlab 多目标优化
- 多目标检测追踪算法MATLAB实现
- MATLAB多目标进化算法
评论
共有 条评论