资源简介
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文件管理
相关资源
- mgn-mqt82.exe
- Trojan-Qt5-Windows-0.0.4.rar
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QGA 量子遗传算法
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- 基于遗传算法的排课系统
- 遗传算法的M文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- 遗传算法PPT(Genetic_Algorithms.ppt)
- QT酷炫界面开发指南《QmlBook》
- 遗传算法的堆石料非线性本构模型参
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
评论
共有 条评论