0

遺伝的アルゴリズムを作成していますが、突然変異に問題があります。私がやりたいことは、有限状態マシン (3 桁の 10 セット) で 10 の状態として機能する 30 のランダムな文字を生成することです。 0-9。

数値を生成したら、それらを 30 文字の文字列に変換する必要があります。私も5桁ごとのようなものだけを変異させたいと思います。

これは私が現在試していることです:

 % mutate probability 0.2
 if (rand < 0.2)
        % pick best chromosome to mutate
            mut = combo{10};

            for t = 3:30
               mut(t) = num2str(randi([0,9]));
            end
  end

私が現在できないことは、n 桁ごとにのみ変更するか、3 桁ごとの最初の桁が 1 から 4 の間にあり、他の桁が 0 から 9 の間にあることを確認することです。

参考になる場合combo{10}110202132224154246176368198100

4

1 に答える 1

3

文字列を変更して何をするのか完全には理解できませんが、30 個の乱数の文字列を取得するには、次のように簡単に実行できます。

str_r = sprintf('%d',  randi([0,9],1,30));
# modify selected characters.
str_r(1:3:end) =  sprintf('%d',  randi([1,4],1,10));

結果の例str_rは次のとおりです。

299334478355384287226314472383
于 2014-12-19T05:20:17.590 に答える