資源簡介
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\ob
?????文件?????????331??2009-04-03?16:21??geneplotter\ob
?????文件?????????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個文件信息
- 上一篇:基于光電傳感器的轉速測量系統
- 下一篇:qt文件管理
評論
共有 條評論