0

確率値で変数を変更したいのですが、例として、[ 0 0 1 1 1 1 0 1 ] が matlab にあり、確率 = 0.01で要素を変更すると、matlab でこれを達成するにはどうすればよいですか? (これを GA で使用し、p =0.01 でコロモソームの Gen の変異を行いたい)

4

2 に答える 2

4

まず、変更したいすべての要素を特定します

array = [0 0 1 1 1 1 0 1];
sizArray = size(array);
probability = 0.01;

toChangeIdx = rand(sizArray) < probability;

次に、必要に応じてゼロと 1 を反転できます

array(toChangeIdx) = 1-array(toChangeIdx);
于 2012-11-06T18:59:31.787 に答える
1

あなたのコードに関連する条件は

if rand() < probability
   % Flip your bit here, e.g. 
   % bitToFlip = randi(length(genome));
   % genome(bitToFlip) = 1 - genome(bitToFlip);
end

ifこれにより、正確に の確率でステートメント内のコードが実行されますprobability

于 2012-11-06T19:00:43.860 に答える