79.
80. //基因变异函数
81.
82. voidMutate(vector<double>&chromo);
83.
84. //这函数产生新一代基因
85.
86. voidEpoch(vector<Genome>&vecNewPop);
87.
88. GenomeGetBestFitness();
89.
90. doubleGetAverageFitness();
91. };</span>
其中 Reset()函数,init()函数和 CalculateBestWorstAvTot()函数都比较简
单,读者查看示例程序的代码就能明白了。而下面分别介绍 init 函数和 Epoch
函数。
类的初始化函数――init 函数
init 函数主要充当 CGenAlg 类的初始化工作,把一些成员变量都变成可供
重新开始遗传算法的状态。(为什么我不在构造函数里面做这些工作呢?因为
我的程序里面 CGenAlg 类是 View 类的成员变量,只会构造一次,所以需要另
外的初始化函数。)下面是 init 函数的代码:
[cpp]view plain copy
1. voidGenAlg::init(intpopsize,doubleMutRate,doubleCrossRate,intG
enLenght,doubleLeftPoint,doubleRightPoint)
2.
3. {
4.
5. popSize=popsize;
6.
7. mutationRate=MutRate;
8.
9. crossoverRate=CrossRate;
10.
11. chromoLength=GenLenght;
12.
13. totalFitness=0;
14.
15. generation=0;