本帖最后由 lizhuo987456 于 2019-7-31 16:13 编辑
刚开始学遗传算法,在这个例子里遇见了一个错误不会修改,希望楼主有空时帮我解答一下。
individuals.chrom 初始化为10*21的矩阵,
在Select()函数中
individuals.chrom=individuals.chrom(index,:); %26行
因为index在转轮赋值后列数很可能小于10,所以语句individuals.chrom执行后行数也很可能小于10。
但Cross()函数中
pick=rand(1,2); % 10行
index=ceil(pick.*sizepop); % 14行
v1=chrom(index(1),pos); % 32行
v2=chrom(index(2),pos); % 33行
index(1)、index(2)的值可能会大于chrom的行数导致赋值失败。
同样的,主函数genetic()中
for j=1:sizepop % 75行
x=individuals.chrom(j,:); % 76行
也可能会赋值失败。
|