我需要一份关于遗传算法中排序选择方法的代码。我已经创建了轮盘和锦标赛选择方法,但现在需要排名选择方法而我卡住了。
这是我的轮盘代码(我正在使用原子结构体进行基因操作):
这是我的轮盘代码(我正在使用原子结构体进行基因操作):
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;
}
Where atom :
typedef struct atom
{
int geno[VARS];
double pheno[VARS];
double fitness;
} atom;