⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen.c

📁 遗传算法的一个源代码
💻 C
字号:
#include "const.h"#include "type.h"#include "extern.h"#include "exfunc.h"int gen0(IPTR oldpop, IPTR newpop, int t){  int i, p1, p2, c;  IPTR pj, pjplus1, om1, om2;  for(i = 0; i < popsize; i += 2){    p1 = seltor[seller](oldpop, SUMfitness, popsize);    p2 = seltor[seller](oldpop, SUMfitness, popsize);    pj = &(newpop[i]);    pjplus1 = &(newpop[i+1]);    om1 = &(oldpop[p1]);    om2 = &(oldpop[p2]);    cross(om1, om2, pj, pjplus1);    pj->fitness = eval_org(pj);     pj->parent1 = p1;    pj->parent2 = p2;        pjplus1->fitness = eval_org(pjplus1);     pjplus1->parent1 = p2;    pjplus1->parent2 = p1;  }}int gen1(IPTR oldpop, IPTR newpop, int t){  int i, p1, p2, c;  IPTR pj, pjplus1, om1, om2;  for(i = popsize; i < 2*popsize; i += 2){    p1 = seltor[seller](oldpop, SUMfitness, popsize);    p2 = seltor[seller](oldpop, SUMfitness, popsize);    /**    fprintf(stderr, "selecting mates %d %d\n", p1, p2);    **/    pj = &(oldpop[i]);    pjplus1 = &(oldpop[i+1]);    om1 = &(oldpop[p1]);    om2 = &(oldpop[p2]);    cross(om1, om2, pj, pjplus1);    pj->fitness = eval_org(pj);     pj->parent1 = p1;    pj->parent2 = p2;    pjplus1->fitness = eval_org(pjplus1);     pjplus1->parent1 = p2;    pjplus1->parent2 = p1;      }  halve(oldpop, newpop);}int gen0_scaled(IPTR oldpop, IPTR newpop, int t){  int i, p1, p2, c;  IPTR pj, pjplus1, om1, om2;  scalepop(oldpop);  for(i = 0; i < popsize; i += 2){    p1 = seltor[seller](oldpop, scaled_sumfitness, popsize);    p2 = seltor[seller](oldpop, scaled_sumfitness, popsize);    pj = &(newpop[i]);    pjplus1 = &(newpop[i+1]);    om1 = &(oldpop[p1]);    om2 = &(oldpop[p2]);    cross(om1, om2, pj, pjplus1);    pj->fitness = eval_org(pj);     pj->parent1 = p1;    pj->parent2 = p2;        pjplus1->fitness = eval_org(pjplus1);     pjplus1->parent1 = p2;    pjplus1->parent2 = p1;  }}int gen1_scaled(IPTR oldpop, IPTR newpop, int t){  int i, p1, p2, c;  IPTR pj, pjplus1, om1, om2;  scalepop(oldpop);  for(i = popsize; i < 2*popsize; i += 2){    p1 = seltor[seller](oldpop, scaled_sumfitness, popsize);    p2 = seltor[seller](oldpop, scaled_sumfitness, popsize);    /**    fprintf(stderr, "selecting mates %d %d\n", p1, p2);    **/    pj = &(oldpop[i]);    pjplus1 = &(oldpop[i+1]);    om1 = &(oldpop[p1]);    om2 = &(oldpop[p2]);    cross(om1, om2, pj, pjplus1);    pj->fitness = eval_org(pj);     pj->parent1 = p1;    pj->parent2 = p2;    pjplus1->fitness = eval_org(pjplus1);     pjplus1->parent1 = p2;    pjplus1->parent2 = p1;      }  halve(oldpop, newpop);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -