您的位置:首页 > 理论基础 > 计算机网络

《matlab神经网络43个案例》第三章代码纠错

2016-05-29 20:44 405 查看
这两天在运行《matlab神经网络43个案例》第三章的Genetic时出现了如下问题

Index exceeds matrix dimensions.
Error in Cross (line 32)
v1=chrom(index(1),pos);
Error in Genetic (line 70)
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);


大概看了之后,发现该错误出现在迭代求解最佳初始阀值和权值的这部分程序中。仔细研究了其中的选择和交叉的程序,发现问题出在select程序的轮盘赌中

for i=1:sizepop   %转sizepop次轮盘
pick=rand;
while pick==0
pick=rand;
end
for j=1:sizepop
pick=pick-sumf(i);
if pick<0
index=[index j];
break;  %寻找落入的区间,此次转轮盘选中了染色体i,注意:在转sizepop次轮盘的过程中,有可能会重复选择某些染色体
end
end
end


其中的

pick=pick-sumf(i);


改为

pick=pick-sumf(j);


即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息