错误,位置1处索引超出数组边界。
请问应该怎么办呢?我尝试改了好久没有头绪
基于Monster 组和GPT的调写:
可能是在Select函数中,对individuals.fitness使用了索引index,但是没有对individuals.chrom使用相同的索引。因此,在重新排列individuals.chrom之前,需要使用相同的索引对individuals.fitness进行排序。
可以修改Select函数的代码如下:
function ret=Select(individuals,sizepop)
individuals.fitness=1./individuals.fitness;
sumfitness=sum(individuals.fitness);
sumf=individuals.fitness./sumfitness;
index=[];
for i=1:sizepop
pick=rand;
while pick==0;
pick=rand;
end
for j=1:sizepop
pick=pick-sumf(j);
if pick<0
index=[index,j];
break
end
end
end
individuals.chrom=individuals.chrom(index,:);
individuals.fitness=individuals.fitness(index,:); % 对fitness使用相同的索引
ret=individuals;
end
另外,也需要注意在yichuan 1的主函数中,第43行应该使用j作为索引,而不是i:
for j=1:sizepop
x=individuals.chrom(j,:);
individuals.fitness(j)=fun(x);
end