网站大量收购独家精品文档,联系QQ:2885784924

遗传算法的C++代码实现教程概要.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
此例程总共包含3个文件:main.c(主函数);GA.c(包含3个所用函数);GA.h(头文件),3个文件截图如下: 用visual c++或者visual stutio创建工程,然后将上述3个文件包含进工程,编译运行即可。亲测可行!!! 3个文件代码分别如下: main.c: #includeiostream #includeGA.h using namespace std; /******************************************************************* GA demo 求函数y=x*sin(10*pai*x)+2.0的最大值 编码:浮点数,1位 初始群体数:50 变异概率:0.8 进化代数:100 取值范围:[0,4] 变异步长:0.004 注:因为是单数浮点数编码,所以未使用基因重组函数 **********************************************************************/ int main() { GenEngine genEngine(50,0.8,0.8,1,100,0,4); genEngine.OnStartGenAlg(); getchar(); } GA.c: #includevector #includestdio.h #include stdlib.h #include time.h #includeiostream #includeGA.h using namespace std; //srand((unsigned) time(NULL)); double random() { double randNum; randNum=rand()*1.0/RAND_MAX; return randNum; } GenAlg::GenAlg() { } void GenAlg::init(int popsize, double MutRate, double CrossRate, int GenLenght,double LeftPoint,double RightPoint) { popSize = popsize; mutationRate = MutRate; crossoverRate = CrossRate; chromoLength = GenLenght; totalFitness = 0; generation = 0; //fittestGenome = 0; bestFitness = 0.0; worstFitness = averageFitness = 0; maxPerturbation=0.004; leftPoint=LeftPoint; rightPoint=RightPoint; //清空种群容器,以初始化 vecPop.clear(); for (int i=0; ipopSize; i++) { //类的构造函数已经把适应性评分初始化为0 vecPop.push_back(Genome()); //把所有的基因编码初始化为函数区间内的随机数。 for (int j=0; jchromoLength; j++) { vecPop[i].vecGenome.push_back(random() * (rightPoint - leftPoint) + leftPoint); } } } void GenAlg::Reset() { totalFitness=0; //bestFitness=0; //worstFitness=9999; averageFitness=0; } void GenAlg::CalculateBestWorstAvTot() { for (int i=0; ipopSize; ++i) { //累计适应性分数. totalFitness+= vecPop[i].fitness; if(vecPop[i].fitness=bestFitness) { bestFitness=vecPop[i].fitness; fittestGenome=vecPop[i]; } i

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档