-2

以下のプログラムを実行していますが、「Tour1 = pop(kk(1:10),:);」という行で「インデックスがマトリックスの次元を超えています」というエラーが表示され続けます。何を見逃したのかわからない。誰でも助けてください。ありがとう

for i = 1:100                               %Population Initialization
    pop(i,1) = 50 - rand*(50-1);
    pop(i,2) = 1 - rand*(1-0.1);
    pop(i,3) = 0.2 - rand*(0.2-0.01); 
    Kc(i) = pop(i,1); 
    T1(i) = pop(i,2); 
    T2(i) = pop(i,3); 

    fitness(i) = obj(Kc(i), T1(i), T2(i));

%% TOURNAMENT SELECTION

for j = 1:10                                   %Select first parent
    kk = randperm(100);
    Tour1 = pop(kk(1:10),:);
    temp1 = mat2cell(Tour1(j,:),1,ones(1,numel(Tour1(j,:))));
    ZET1(j) = obj(temp1{:});
end

[Val1 Ind1] = max(ZET1);
parent1 = Tour1(Ind1,:);

end
4

2 に答える 2

2

本当にfor最初のものの中に 2 番目のものを入れたいですか?

外側のループの最初の実行時iは 1 です。に移入しますがpop (1, :)、それ以上は必要ありません。

内側のループで、[1..100] 内にあるpop (kk (1:10), :)にアクセスしようとします。kk (1:10)しかしpop (i, :)、i > 1 にはありません。

于 2013-10-09T10:17:12.970 に答える