• 大小: 4.6MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-16
  • 语言: C/C++
  • 标签: 遗传算法  

资源简介

基础的遗传算法的代码,是用vs2010编写的c++代码,有简单注释.zip

资源截图

代码片段和文件信息

#include
 #include
 #include
 //#include
 #include
 #include

 using namespace std; 
 
 #define Maxpop 100
 #define Maxstring 32
 
 typedef struct{             
//声明结构体类型
 char chrom[Maxstring];
 //染色体数组
 float xfitness;
 int parent1parent2xsite;
 }pp;

 
 pp *oldpop*newpop*p1;
 int popsizelchromgenMaxgennmutationncrossjcrossMaxppMinppjrand;
 float pcrosspmutationsumfitness MaxMinavgseedrj[Maxpop]oldrand[Maxpop];
 double coef;
 
 float objfunc(float);//目标函数
 int select();//选择策略
 int flip(float);
 int crossover(char *char *int);//交叉
 char mutation();//变异
 void generation();//遗传运算
 void initialize();//初始化
 void report();//报告
 void initpop();//初始化种群
 void initdata();//初始化数据
 void initreport();//初始化报告
 double decode(char *);//译码
 float random1();//随机
 void randomize1();
 void pause();//终止
 
 void test(char x)
 {
 cout< }
 
 float objfunc(float x1)
 //compute object fitness;
 {
 float y;
 y=3.14*x1;
 y=sin(2.0*y);
 return y*y;
 }
 
 void statistic(pp *pop)
 //statistic the fitness of population
 {
 int j;
 sumfitness=pop[0].fitness;
 Max=pop[0].fitness;
 Min=pop[0].fitness;
 Maxpp=0;
 Minpp=0;
 for(j=1;j sumfitness=sumfitness+pop[j].fitness;
 if(pop[j].fitness>Max){
 Max=pop[j].fitness;
 Maxpp=j;
 }
 if(pop[j].fitness Min=pop[j].fitness;
 Minpp=j;
 }
 }//end for
 avg=sumfitness/(float)popsize;
 }
 
 void generation()
 //update a generation;
 {
 int jmate1mate2;
 j=0;
 do{
 mate1=select();
 mate2=select();
 crossover(oldpop[mate1].chromoldpop[mate2].chromj);
 newpop[j].x=(float)decode(newpop[j].chrom);
 newpop[j].fitness=objfunc(newpop[j].x);
 newpop[j].parent1=mate1;
 newpop[j].parent2=mate2;
 newpop[j].xsite=jcross;//recode the cross point;
 newpop[j+1].x=(float)decode(newpop[j+1].chrom);
 newpop[j+1].fitness=objfunc(newpop[j+1].x);
 newpop[j+1].parent1=mate1;
 newpop[j+1].parent2=mate2;
 newpop[j+1].xsite=jcross;
 j=j+2;
 }while(j }
 
 void initdata()
 //input control parameters
 {
 int chj;
 cout<<“*********SGA DATA ENTRY AND INITIALIZATION******* “;
 cout<<“Enter population size:“;
 cin>>popsize;
 // cout<<“Enter chromosome length:“;
 // cin>>lchrom;
 lchrom = 32;
 cout<<“Enter Max generations“;
 cin>>Maxgen;
 cout<<“Enter crossover probability:“;
 cin>>pcross;
 cout<<“Enter mutation probability:“;
 cin>>pmutation;
 
 //randomize1();
 nmutation=0;
 ncross=0;
 }
 
 void initreport()
 {
 cout<<“Population size:“< // cout<<“Chromosome length:“< cout<<“Maximum # of generation:“< cout<<“Crossover probability:“< cout<<“Mutation probability:“< cout<<“----------------------------------------------------- “;
 cout<<“Initial Population Maximum Fitness:“< cout<<“Initial Population Average Fitness:“< cout<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-01-14 09:12  GA\
     目录           0  2015-09-18 16:48  GA\Debug\
     文件       51200  2015-05-25 08:54  GA\Debug\GA.exe
     文件      421176  2015-05-25 08:54  GA\Debug\GA.ilk
     文件      658432  2015-05-25 08:54  GA\Debug\GA.pdb
     目录           0  2015-09-18 16:48  GA\GA\
     目录           0  2015-09-18 16:48  GA\GA\Debug\
     文件        9120  2015-05-25 08:54  GA\GA\Debug\CL.read.1.tlog
     文件         194  2015-05-25 08:54  GA\GA\Debug\CL.write.1.tlog
     文件        1187  2015-04-10 14:53  GA\GA\Debug\GA.Build.CppClean.log
     文件         406  2015-05-25 08:54  GA\GA\Debug\GA.exe.embed.manifest
     文件         472  2015-05-25 08:54  GA\GA\Debug\GA.exe.embed.manifest.res
     文件         381  2015-05-25 08:54  GA\GA\Debug\GA.exe.intermediate.manifest
     文件          48  2015-05-25 08:54  GA\GA\Debug\GA.lastbuildstate
     文件        3832  2015-05-25 08:54  GA\GA\Debug\GA.log
     文件         194  2015-04-10 14:53  GA\GA\Debug\GA_manifest.rc
     文件       91123  2015-05-25 08:54  GA\GA\Debug\SGA.obj
     文件         526  2015-05-25 08:54  GA\GA\Debug\cl.command.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link-cvtres.read.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link-cvtres.write.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link.103296-cvtres.read.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link.103296-cvtres.write.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link.103296.read.1.tlog
     文件           2  2015-05-25 08:54  GA\GA\Debug\link.103296.write.1.tlog
     文件        1210  2015-05-25 08:54  GA\GA\Debug\link.command.1.tlog
     文件        2716  2015-05-25 08:54  GA\GA\Debug\link.read.1.tlog
     文件         452  2015-05-25 08:54  GA\GA\Debug\link.write.1.tlog
     文件         308  2015-05-25 08:54  GA\GA\Debug\mt.command.1.tlog
     文件         206  2015-05-25 08:54  GA\GA\Debug\mt.read.1.tlog
     文件         206  2015-05-25 08:54  GA\GA\Debug\mt.write.1.tlog
     文件         386  2015-05-25 08:54  GA\GA\Debug\rc.command.1.tlog
............此处省略14个文件信息

评论

共有 条评论