资源简介
有关遗传编程的程序代码。程序结构采用树编码。
代码片段和文件信息
//Programmed by NXH
#include//Delete this line if you are in Unix
#include
#include
#include
#include
#include
#include “gconst.h“
#include “random.h“
#include “term.h“
#include “stree.h“
#include “genetic.h“
#include “mulplex.h“
//#include “bdtree1.h“
//#include “symreg.h“
//#include “evenpg.h“
int generationgen=0;
//individual bestsofar;
individual *bestcurrent;
double *average;
//*****************************************************
//This Function initializes for the program *
//*****************************************************
void Init()
{
//Initialize global variables
//Loading Elementary trees and Adjoining Table
LoadTerm();
//Initialize population
poplen=1000;
oldpop=new individual[poplen];assert(oldpop!=NULL);
newpop=new individual[poplen];assert(newpop!=NULL);
//Initialize Probabilities
pcross=0.9;
pmutate=0.1;
//Initializes satistics
ncross=0;
nmutate=0;
//Number of generations
generation=101;
bestcurrent=new individual[generation];assert(bestcurrent!=NULL);
average=new double[generation];assert(average!=NULL);
//Some global variables
SuccPredicate=FALSE;
//Set up fitness cases
SetFitCase();
}
void ComputeFitness()
{
int ij pos;
individual t;
double minsum=0;
//First Compute Raw fitness
for(i=0;i oldpop[i].fitness=ComputeRF(oldpop[i]);
//local search
// Greedy(100);
//Second Compute standardized fitness
// for(i=0;i // oldpop[i].fitness=(double) NUMFITCASE-oldpop[i].fitness;
//Find the best of the current population
min=oldpop[0].fitness;
pos=0;
sum=0;
for(i=1;i {
if (oldpop[i].fitness {
min=oldpop[i].fitness;
pos=i;
}
sum+=oldpop[i].fitness;
}
//copy the best and average
bestcurrent[gen]=CopyIndividual(oldpop[pos]TRUE);
average[gen]=sum/poplen;
//Third Compute Adjusted fitness
AdjustFitness();
//Finally Compute nomarlized fitness
NormalizeFitness();
}
void Evolution()
{
int ijlk;
individual *temp;
//Initialize a population
RampedInit(60.5);
gen=0;
while((gen {
ComputeFitness();
cout< l=0;
while(l {
i=TourSelect(3);
j=TourSelect(3);
if(Flip(pcross))
{
if (SubTreeSwap(oldpop[i]oldpop[j]newpop[l]newpop[l+1]))
ncross++;
else
{
newpop[l]=CopyIndividual(oldpop[i]TRUE);
newpop[l+1]=CopyIndividual(oldpop[j]TRUE);
}
}
else
{
newpop[l]=CopyIndividual(oldpop[i]TRUE);
newpop[l+1]=CopyIndividual(oldpop[j]TRUE);
}
//mutation test
if(Flip(pmutate))
{
ReplaceSubTree(newpop[l]15TRUE);
//PointReplace(newpop[l]);
nmutate++;
}
if(Flip(pmutate))
{
ReplaceSubTree(new
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2963 2008-11-11 13:47 multi.plg
文件 533 2008-11-11 13:48 multi.dsw
文件 48640 2008-11-11 13:48 multi.opt
文件 4869 2007-04-11 07:52 multi.cpp
文件 2248 2003-05-21 18:35 random.h
文件 8004 2003-05-21 18:38 stree.h
文件 4015 2006-03-23 10:23 symreg.h
文件 1743 2003-05-21 18:22 term.h
文件 803 2007-04-09 16:05 gconst.h
文件 10507 2007-04-09 14:51 genetic.h
文件 22998 2006-05-04 20:49 mg4test.dat
文件 22998 2006-05-04 20:49 mg4train.dat
文件 31998 2006-03-09 10:52 mg_test.dat
文件 31998 2006-03-09 10:52 mg_train.dat
文件 3333 2007-04-11 08:45 mulplex.h
文件 3389 2008-11-11 13:47 multi.dsp
文件 33792 2008-11-11 13:48 multi.ncb
目录 0 2008-12-25 16:37 gp_code
文件 803 2007-04-09 16:05 gp_code\gconst.h
文件 10507 2007-04-09 14:51 gp_code\genetic.h
文件 22998 2006-05-04 20:49 gp_code\mg4test.dat
文件 22998 2006-05-04 20:49 gp_code\mg4train.dat
文件 31998 2006-03-09 10:52 gp_code\mg_test.dat
文件 31998 2006-03-09 10:52 gp_code\mg_train.dat
文件 3333 2007-04-11 08:45 gp_code\mulplex.h
文件 4869 2007-04-11 07:52 gp_code\multi.cpp
文件 3389 2008-11-11 13:47 gp_code\multi.dsp
文件 533 2008-11-11 13:48 gp_code\multi.dsw
文件 41984 2008-12-25 16:19 gp_code\multi.ncb
文件 54784 2008-12-25 16:19 gp_code\multi.opt
............此处省略8个文件信息
- 上一篇:华为CE/S系列交换机zabbix监控模版
- 下一篇:PictureBox闪烁解决
评论
共有 条评论