C语言实现遗传算法

算法框架:

1. GenerateInitialPopulation();//生成初代种群

2. EvaluatePopulation();//评估种群

3. GenerateNextPopulation();//产生下一代

       1).SelectionOperator();//选择

       2).CrossoverOperator();//交叉

               RandomDisorder();//随机乱序个体

       3).MutationOperator();//变异

4. EvaluatePopulation();//评估种群


以求f(x1,x2)=100*(x1^2-x2)^2+(1-x1)^2的最大值为例

运行环境 VS 2010

// GeneticAlforith.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
#include <time.h>
#include <math.h>
#define CHROMLENGTH 24 //染色体长度
#define POPSIZE 80  //种群大小
#define MaxGeneration 200 //最大进化代数 
#define Pc 0.6 //交叉概率
#define Pm 0.001 //变异概率
struct individual{
int chrom[CHROMLENGTH];
double fitness;
double nfitness;
};
struct individual population[POPSIZE],temppop[POPSIZE],bestchrom;
void GenerateInitialPopulation(){
for(int i=0;i<POPSIZE;i++){
for(int j=0;j<CHROMLENGTH;j++)
population[i].chrom[j]=rand()%2;
}
}
double func(double x1,double x2){
/* 定义函数表达式 */
double s;
s=100*pow((x1*x1-x2),2)+pow(1-x1,2);
return s;

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值