void GA(int funNum) { int FEs; population pop; srand(time(NULL)); // 初始化种群 for (int i = 0; i < NP; i++) { for (int j = 0; j < D; j++) { pop.indiv[i].dim[j] = LOWBOUND[funNum - 1] + rand() * (UPBOUND[funNum - 1] - LOWBOUND[funNum - 1]); } } benchmark(pop, funNum); //计算适应度 // 迭代 //FEs = NP; !!!!!! FEs =0 应该赋值为1 FEs = 1; int MAXFES = 100; // 最大迭代次数 一共从1迭代到100次 while (FEs < MAXFES) { nextGeneration(pop, funNum); FEs += NP; } for (int i = 0; i < NP; i++) printf("%.6f\n", pop.indiv[i].fitness); }
时间: 2024-03-31 13:32:26 浏览: 64
Cu/Co掺杂FeS
这段代码是一个遗传算法的框架,用于解决优化问题。其中,GA函数是主函数,参数funNum表示要优化的目标函数编号。代码中首先初始化种群,并计算每个个体的适应度。然后进行迭代,每次迭代都生成下一代种群,并计算每个个体的适应度。迭代次数达到最大值后,输出每个个体的适应度。
但是,我注意到代码中有一个错误。FEs应该初始化为1,而不是0,因为在代码的后面,每次迭代都会增加NP个适应度函数调用次数,因此最终的FEs应该等于迭代次数乘以种群大小NP。
阅读全文