Qt写的遗传算法加画图程序。借用了书上少部分代码。加入了遗传算法的部分,能设置代数,概率等,能根据代数的进化来不停地画图。。。即可提供一代画图,也可以一次性,设置的全部分代数画图。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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个文件信息
#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 geneplotterob
文件 331 2009-04-03 16:21 geneplotterob
文件 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个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)