Qt写的遗传算法加画图程序


Qt写的遗传算法加画图程序。借用了书上少部分代码。加入了遗传算法的部分,能设置代数,概率等,能根据代数的进化来不停地画图。。。即可提供一代画图,也可以一次性,设置的全部分代数画图。
资源截图
代码片段和文件信息
#include“genegroup.h“


GeneGroup::GeneGroup()
{
  group=NULL;
  tempGroup=NULL;
  average=0.0;
}


 //reimpliment the copy constructor to avoid shallow copy
GeneGroup::GeneGroup(const GeneGroup& one)
{
  group=new GeneType[popSize+1];
  tempGroup=new GeneType[popSize];
  for(int i=0;i  {
    group[i]=one.getGroup()[i];
    tempGroup[i]=one.getTempGroup()[i];
  }
  group[popSize]=one.getTempGroup()[popSize];
  
}


//overload the operator= to avoid shallow copy
GeneGroup& GeneGroup::operator=(const GeneGroup& one)
{
  emptyGroup();
  group=new GeneType[popSize+1];
  tempGroup=new GeneType[popSize];
  for(int i=0;i  {
    group[i]=one.getGroup()[i];
    tempGroup[i]=one.getTempGroup()[i];
  }
  group[popSize]=one.getTempGroup()[popSize];
  return *this;


double GeneGroup::pMutation=0.8;
double GeneGroup::pXCross=0.15;
int GeneGroup::popSize=80;


GeneType * GeneGroup::getGroup() const
{
   return group;
}


GeneType * GeneGroup::getTempGroup() const
{
  return tempGroup;
}


void GeneGroup::iniGroup()
{
if(group==NULL)
{
 group=new GeneType[GeneGroup::popSize+1]; 
   tempGroup=new GeneType[GeneGroup::popSize];
   // when generate new populatoin should perform one keepTheBest() always.
   keepTheBest();
}   
}

void GeneGroup::emptyGroup()
{
  delete [] group;
  group=NULL;
  delete [] tempGroup;
  tempGroup=NULL;
}


// genetic operations    
//impliment crossover between two individuals
void GeneGroup::crossOver()
{
GeneType* cursor=group;
size_t size=popSize;
  size_t offset(0);
  double pb(0.0);
  for(size_t st=0;st  {
  pb=static_cast(rand()%100)/100.0;

  if(pb   {
     offset=rand()%popSize;    //Set and reset offset
    (*(cursor+st)).XOver(*(cursor+offset));
  } 
  }  
}
    
    //This function keeps track of the best member of the population.
    // Each time call this function it will update it if there is any.
    // At the same time also keep the averge value of all individuals
void GeneGroup::keepTheBest()
{
GeneType* cursor=group;
size_t size=popSize;

double sum(0.0);                 /* total population fitness */  

  for(size_t it=0;it  {
    if((*(cursor+size)).getruler()<(*(cursor+it)).getruler())   
  {
    *(cursor+size)=*(cursor+it);      // update best individual call the default assignment operator    
  }
  sum+=(*(cursor+size)).getfitness();
  }  
  average=sum/popSize;
}
    
    // Elitist function: The best member of the previous generation is stored   
    //as the second last in the array. If the best member of the current generation   
    //is worse then the best member of the previous generation the latter     
    //one would replace the worst member of the current population.            
void GeneGroup::elitist()
{
GeneType *cur

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2009-04-03 16:38  geneplotter
     目录           0  2009-04-03 16:23  geneplotterdebug
     文件        6612  2009-04-03 16:09  geneplottergenegroup.cpp
     文件        2160  2009-04-03 16:05  geneplottergenegroup.h
     文件        8758  2009-04-03 16:15  geneplottergeneplotter.cpp
     文件        1732  2009-04-02 17:06  geneplottergeneplotter.h
     文件      345206  2009-04-03 16:19  geneplottergeneplotter.ico
     文件         723  2009-04-03 16:21  geneplottergeneplotter.pro
     文件        3356  2009-04-02 20:26  geneplottergenetype.cpp
     文件        2378  2009-03-31 16:30  geneplottergenetype.h
     文件         341  2009-03-30 14:55  geneplottermain.cpp
     文件        5266  2009-04-03 16:21  geneplotterMakefile
     文件        8573  2009-04-03 16:21  geneplotterMakefile.Debug
     文件        8764  2009-04-03 16:21  geneplotterMakefile.Release
     文件          66  2009-04-03 16:20  geneplottermyapp.rc
     文件         309  2009-04-03 16:21  geneplotterobject_script.geneplotter.Debug
     文件         331  2009-04-03 16:21  geneplotterobject_script.geneplotter.Release
     文件         521  2009-03-29 18:41  geneplotterQPersonalDoubleValidator.cpp
     文件         295  2009-02-16 23:54  geneplotterQPersonalDoubleValidator.h
     文件         491  2009-03-30 15:45  geneplotterQPersonalIntValidator.cpp
     文件         319  2009-03-29 19:31  geneplotterQPersonalIntValidator.h
     文件        1375  2009-04-03 16:37  geneplotterReadMe.txt
     目录           0  2009-04-03 16:23  geneplotter
elease
     文件        6130  2009-04-03 16:22  geneplotter
eleasegenegroup.o
     文件     7462400  2009-04-03 16:22  geneplotter
eleasegeneplotter.exe
     文件       19849  2009-04-03 16:22  geneplotter
eleasegeneplotter.o
     文件        2857  2009-04-03 16:22  geneplotter
eleasegenetype.o
     文件         885  2009-04-03 16:22  geneplotter
eleasemain.o
     文件        2268  2009-04-03 16:22  geneplotter
eleasemoc_geneplotter.cpp
     文件       10063  2009-04-03 16:22  geneplotter
eleasemoc_geneplotter.o
     文件        2053  2009-04-03 16:22  geneplotter
eleasemoc_QPersonalDoubleValidator.cpp
............此处省略13个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)