Matlabで遺伝的アルゴリズムを使用して画像再構成アルゴリズムを最適化しています.2つの母集団でクロスオーバーを行い、matlabで「ga」ツールキットを使用せずに2つの子孫を生成しました。したがって、現在、0〜255の範囲の整数値を持つ2つの1 * n行列があります(これらは行の主要な順序で2つの画像です)。
population_1 = [1 2 3 4 5 6 7 8 9 10]
population_2 = [10 20 30 40 50 60 70 80 90 100]
そして、私はシングルポイントオーダークロスオーバーを行い、子孫を取得しました
Off_1 = 1 2 3 4 5 60 70 80 90 100
Off_2 = 10 20 30 40 50 6 7 8 9 10
次に、確率0.02でミューテーションを行う必要があります。ここでは「gaoptimset」を使用し、次のようにコーディングしました。
mutated_child = gaoptimset('MutationFcn', {@mutationuniform, .02})
結果を出力しました。値のないこのような構造になります。
mutated_child =
PopulationType: []
PopInitRange: []
PopulationSize: []
EliteCount: []
CrossoverFraction: []
ParetoFraction: []
MigrationDirection: []
MigrationInterval: []
MigrationFraction: []
Generations: []
TimeLimit: []
FitnessLimit: []
StallGenLimit: []
StallTimeLimit: []
TolFun: []
TolCon: []
InitialPopulation: []
InitialScores: []
InitialPenalty: []
PenaltyFactor: []
PlotInterval: []
CreationFcn: []
FitnessScalingFcn: []
SelectionFcn: []
CrossoverFcn: []
MutationFcn: {[@mutationuniform] [0.0200]}
DistanceMeasureFcn: []
HybridFcn: []
Display: []
PlotFcns: []
OutputFcns: []
Vectorized: []
UseParallel: []
クロスオーバーした子(Off_1とOff_2)の突然変異を実行するのを誰かが助けてくれますか?
GAツールボックスについては何も知りません。しかし、それがなければ、次のようなことができます。
% for offspring 1:
p_m = 0.02;
for i = 1:length(Off_1)
if rand(1) < p_m
Off_1(i) = randi([0,255],1);
end
end
あなたは子孫と同じことをするべきです。2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加