%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;
global pop
pop = 500; %种群数量
gen = 2; %迭代次数
global M
M = 2; %目标数量
Dim=22; %搜索空间维数(未知数个数)
sub_dim= 2 ;
global min_range
global max_range
min_range = zeros(1, Dim); %下界
max_range = ones(1,Dim); %上界
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
divide_datasets();
global answer
answer=cell(M,3);
Dim_index = ones(1,1)*(1:Dim+4);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
chromosome = initialize_variables(pop, M, Dim, min_range, max_range, Dim_index);
chromosome = non_domination_sort_mod(chromosome, M, Dim);
result = 1;
while gen ~= 0
subgroup = rnd_divide(Dim, sub_dim);
for i=1:length(subgroup)
subgroup{i}(sub_dim+1)=Dim+1;
subgroup{i}(sub_dim+2)=Dim+2;
subgroup{i}(sub_dim+3)=Dim+3;
subgroup{i}(sub_dim+4)=Dim+4;
[temp_chromosome] = nsga2(chromosome(:,subgroup{i}), sub_dim, subgroup{i});
chromosome(:,subgroup{i}(1:sub_dim)) = temp_chromosome(:,1:sub_dim);
end
chromosome = nsga2(chromosome, Dim, Dim_index);
chromosome = non_domination_sort_mod(chromosome, M, Dim);
gen =gen - 1;
progress = 1-gen/10
end
plot(chromosome(:,Dim + 1),chromosome(:,Dim + 2),'*');
xlabel('f_1'); ylabel('f_2');
title('Pareto Optimal Front');
博主您好,想问一下程序中nsga2这个函数有什么含义,可有代码。万分感谢
小哥哥你好,这个ccnsga2的有些参数不知道表达什么意思,文中说跟nsga2相互对应,还有有些不理解,能把算法全都剥出来吗
NSGA2的算法在这里呢:https://www.omegaxyz.com/2018/01/22/new_nsga2/
有参数解释。
小哥哥你好,这个ccnsga2的有些参数不知道表达什么意思,文中说跟nsga2相互对应,还有有些不理解,能把算法全都剥出来吗
你可以具体说一下是什么参数。
subdim,dim_index这些,还有里面这个divide_database我也没怎么看懂是啥意思,这个方法能不能解决ZDT1问题?刚开始接触这些,问题可能有点傻,还请见谅
subdim是子组的维度,dim_index是维度的索引,divide_database是划分数据集,一般如果做ZDT1不需要划分数据集。肯定可以解决ZDT1问题。
那维度的索引是在粒子的初始化中有用到,具体是怎么用的呢,因为我看在nsga2中初始化里没有维度的索引
维度就是决策变量,或者叫特征。因为我是随机分配维度的,因此我用个维度的索引来记录维度的位置,如果我的索引是3,6,2说明在当前你分组中我的维度是第三个第六个第二个,这个不是NSGA2算法,只是一个协同进化的算法