そこで、遺伝的アルゴリズムのルーレット選択関数を次のように記述しました。
public String tournament(float fitness, Chromosome pop[], int selection)
{
// roulette
if (selection == 1)
{
Random random = new Random();
float slice = random.nextFloat() * fitness;
float curFitness = 0.0f;
for (int i = 0; i < initialPopulation; i++)
{
curFitness += pop[i].fitness;
if (curFitness >= slice)
return pop[i].bits;
}
}
return "";
}
問題は、戻り条件を満たすためにのみ配置された空白文字列を返す場合があることです。これは一般的に問題ではありませんが、次のステップでクロスオーバー ステージが発生するため、実行中に GA が終了することがあります。何か案は?