资源简介
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文件管理
相关资源
- 遗传算法的堆石料非线性本构模型参
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- 遗传算法越野小车unity5.5
- 车间布局遗传算法
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 基于QT的黑白棋游戏设计和实现
- Qt写的连连看小游戏
- QTranslate_6.7.2.7z
- Qt基于FFmpeg播放本地 H.264H264文件
- QT编的MP3播放器
- linux系统的二级文件系统(QT实现了简
- QT生成DLL库文件的方法和使用方法详解
- QT+opencv+OCR 身份证号码,银行卡号识别
- Qt实现的简单的中国象棋程序
- Qt时钟Demo,在原来基础上添加了秒针
- 遗传算法论文11篇
- 基于Qt和opencv的身份证号码识别系统
- 基于遗传算法的立体车库车位调度研
- 基于FFmpeg4.0.2的AAC编码器
- Qt写的Windows下屏幕录制程序源码
- QT旅游攻略软件程序源代码
评论
共有 条评论