私は遺伝的プログラミングアルゴリズムを使いこなしています。どのように再現するかを選択する方法を代用したり改良したりすることで、私がどのように栄養補給し、より良いものを再現できるかを知りたいと思います。現在、私が使用する方法は、次のようになります。私のルーレット選択方法よりも優れた子孫の栄養価値を上げるにはどうすればいいですか?
function roulette(population)
local slice = sum_of_fitnesses(population) * math.random()
local sum = 0
for iter = 1, #population do
sum = sum + population[iter].fitness
if sum >= slice then
return population[iter]
end
end
end
しかし、私は私の人口が一定値以上である平均適応度に到達するために得ることができないと私はそれがために、よりフィット感のメンバーと、再生少なくフィットのメンバーだ心配とこうして彼らの弱い遺伝子を広げ続けています。
どのようにして自分のルーレット選択方法を改善できますか?または、私は全く異なるフィットネス比例セレクターを使用する必要がありますか?
人口の規模は?フィットネス値の範囲は? – user3386109
@ user3386109サイズ100の場合、0〜1の範囲で約0.81で停止します。交差率は0.7、突然変異率は0.001 – user6245072
人口から最低50を削除します。残りの50の場合は、フィットネスを指数関数的にします。 'adjusted_fitness = exp(フィットネス* 10)'。 – user3386109