• 大小: 3.31MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-11-08
  • 语言: 其他
  • 标签: 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  geneplotter\debug\
     文件        6612  2009-04-03 16:09  geneplotter\genegroup.cpp
     文件        2160  2009-04-03 16:05  geneplotter\genegroup.h
     文件        8758  2009-04-03 16:15  geneplotter\geneplotter.cpp
     文件        1732  2009-04-02 17:06  geneplotter\geneplotter.h
     文件      345206  2009-04-03 16:19  geneplotter\geneplotter.ico
     文件         723  2009-04-03 16:21  geneplotter\geneplotter.pro
     文件        3356  2009-04-02 20:26  geneplotter\genetype.cpp
     文件        2378  2009-03-31 16:30  geneplotter\genetype.h
     文件         341  2009-03-30 14:55  geneplotter\main.cpp
     文件        5266  2009-04-03 16:21  geneplotter\Makefile
     文件        8573  2009-04-03 16:21  geneplotter\Makefile.Debug
     文件        8764  2009-04-03 16:21  geneplotter\Makefile.Release
     文件          66  2009-04-03 16:20  geneplotter\myapp.rc
     文件         309  2009-04-03 16:21  geneplotter\object_script.geneplotter.Debug
     文件         331  2009-04-03 16:21  geneplotter\object_script.geneplotter.Release
     文件         521  2009-03-29 18:41  geneplotter\QPersonalDoubleValidator.cpp
     文件         295  2009-02-16 23:54  geneplotter\QPersonalDoubleValidator.h
     文件         491  2009-03-30 15:45  geneplotter\QPersonalIntValidator.cpp
     文件         319  2009-03-29 19:31  geneplotter\QPersonalIntValidator.h
     文件        1375  2009-04-03 16:37  geneplotter\ReadMe.txt
     目录           0  2009-04-03 16:23  geneplotter\release\
     文件        6130  2009-04-03 16:22  geneplotter\release\genegroup.o
     文件     7462400  2009-04-03 16:22  geneplotter\release\geneplotter.exe
     文件       19849  2009-04-03 16:22  geneplotter\release\geneplotter.o
     文件        2857  2009-04-03 16:22  geneplotter\release\genetype.o
     文件         885  2009-04-03 16:22  geneplotter\release\main.o
     文件        2268  2009-04-03 16:22  geneplotter\release\moc_geneplotter.cpp
     文件       10063  2009-04-03 16:22  geneplotter\release\moc_geneplotter.o
     文件        2053  2009-04-03 16:22  geneplotter\release\moc_QPersonalDoubleValidator.cpp
............此处省略13个文件信息

评论

共有 条评论