0
私はJavaで一様なクロスオーバーを実装する際に問題があります。これがアルゴリズムです。Javaの統一されたクロスオーバー
// Uniform Crossover
public void UniformCrossover(Individual indi) {
if (RVGA.rand.nextDouble() < pc) {
// Put your implementation of uniform crossover here
// For each gene create a random number in [0, 1].
// If the number is less than 0.5, swap the gene values in
// the parents for this gene; other wise, no swapping .
}
は私が乱数を保存することができint tmp
と知って、その後、if tmp < 0.5
は、私は任意の助けが高く評価され起動させるために管理することができませんでしたループ
を続行します!
これは私のフォーマットを知っているだけの私の1ポイントクロスオーバーの例です。
クロスポイントを選択すると、染色体の先頭からクロスオーバーポイントまでのバイナリストリングが一方の親からコピーされ、残りは第2の親からコピーされます。
親1 =染色体および親2 = indi。
私は一様交叉では、インプレース
public void onePointCrossover(Individual indi) {
if (SGA.rand.nextDouble() < pc) {
int xoverpoint = SGA.rand.nextInt(length);
int tmp;
for (int i=xoverpoint; i<length; i++){
tmp = chromosome[i];
chromosome[i] = indi.chromosome[i];
indi.chromosome[i] = tmp;
}
}
}
宿題に質問するときは、「宿題」タグを追加してください。 – DNA
私はちょうどそれを – Student