遺伝的アルゴリズムのランキング選択方法のコードが必要です。ルーレットとトーナメントの選択方法を作成しましたが、ランキングが必要で行き詰まっています。
私のルーレットコードはここにあります(私は遺伝的アトムにアトム構造体を使用しています):
const int roulette (const atom *f)
{
int i;
double sum, sumrnd;
sum = 0;
for (i = 0; i < N; i++)
sum += f[i].fitness + OFFSET;
sumrnd = rnd () * sum;
sum = 0;
for (i = 0; i < N; i++) {
sum += f[i].fitness + OFFSET;
if (sum > sumrnd)
break;
}
return i;
}
どこ原子:
typedef struct atom
{
int geno[VARS];
double pheno[VARS];
double fitness;
} atom;