简单函数优化的遗传算法 C 语言程序
double rfitness; // relative fitness 相关适应度等于个体适应度除以
//所有个体适应度之和
double cfitness; // cumulative fitness 累积适应度是相关适应度的累积
};
//声明个体
struct genotype population[POPSIZE+1]; // population
struct genotype newpopulation[POPSIZE+1]; // new population replaces the
// old generation
/* Declaration of procedures used by this genetic algorithm */
// 声明的程序使用的遗传算法
void initialize(void);//初始化函数
double randval(double, double);
void evaluate(void);//评估
void keep_the_best(void);//保持最好
void elitist(void);
void select(void);//选择
void crossover(void);//交叉
void Xover(int,int);
void swap(double *, double *);
void mutate(void);//变异
void report(void);
//*****************************************************************************
//Initialization function:Initializes the values of genes within the variables
//bounds. It also initializes all fitness for each number of the population
//*****************************************************************************
void initialize(void)
{
int i,j;
double lbound,ubound;
for(i=0;i<NVARS;i++)
{
lbound=-5.0;
ubound=5.0;
for(j=0;j<POPSIZE;j++)
{
population[j].fitness=0;
population[j].rfitness=0;
population[j].cfitness=0;
population[j].lower[i]=lbound;
population[j].upper[i]=ubound;
population[j].gene[i]=randval(population[j].lower[i],population[j].upper [i]);
}