网上看到了一个比较不错的讲解遗传算法的帖子,链接如下
http://blog.csdn.net/b2b160/article/details/4680853
但是却没有贴源代码,正好最近闲来无事,就尝试写了下代码实现,测试了几次,寻优结果都能达到了二元函数最大值98,如下所示
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAXLENGTH 1000
#define DNANUMBER 30
#define DNALENGTH 6
#define ITERATIONNUMBER 100
int generic[DNANUMBER][MAXLENGTH];
int select[DNANUMBER][MAXLENGTH];
int FitNess[DNANUMBER];
float FitNessProportion[DNANUMBER];
//二次函数为f(x1,x2)=x1^2+x2^2;遗传数组为待求解的串组合
int fitMax;
void InitDna()
{
//对所有的染色体进行随机初始化
int i,j;
fitMax=INT_MIN;
srand(time(NULL));
for(i=0;i
{
for(j=0;