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

来源:互联网 发布:mac系统优化工具 编辑:程序博客网 时间:2024/05/24 16:14

这两天在运行《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    endend

其中的

pick=pick-sumf(i);

改为

pick=pick-sumf(j);

即可。

2 0
原创粉丝点击