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