MATLAB大神们,本人菜鸟一枚,近期在做一个课题,利用多目标遗传算法求解系统设备调度问题,主程序使用的是算法包,但计算过程中,在非支配排序环节出现了错误,我没有动过这部分的程序,不知道为什么会出错?下面附上错误以及代码,求各位大神指点迷津,十分感谢!!!
function f = non_domination_sort_mod(x, M, V)
% x 每个个体
% M 目标空间的维数
% V 决策变量空间的维数
% 使用非支配排序对种群进行排序。 这将返回两个列,每个人是排名和拥挤距离对应于他们
% 在前面他们所属的位置。 在这个阶段,每个染色体的等级和拥挤距离被添加到染色体向量
% 以便于计算。
%M是目标空间的维数,V是决策变量空间的维数,chromosome染色体向量
%%
[N, m] = size(x); %N为规模,即个体数目
clear m
front = 1; %初始化前沿为1
%此步骤没有重大意义,只是为了简单计算
F(front).f = []; %包含被个体支配的集合
individual = []; %个体集合
%% 非支配排序
%在NSGA进行非支配排序时,规模为N的种群中的每个个体都要针对M个目标函数
%和种群中的N-1个个体进行比较,复杂度为O(MN)
for i = 1 : N
%支配这个个体的个体数量
individual(i).n = 0; %支配p个体的个体数量
individual(i).p = []; % 被p支配的个体
for j = 1 : N
dom_less = 0;
dom_equal = 0;
dom_more = 0;
for k = 1 : M
%判断支配关系
if (x(i,V + k)