基本遗传算法源程序近期正在使用遗传算法进行曲线拟合,以前从来没有接触过遗传算法,所以求哪个牛人给个基本遗传算法的源程序,最好能有详细文档.

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 16:42:26
基本遗传算法源程序近期正在使用遗传算法进行曲线拟合,以前从来没有接触过遗传算法,所以求哪个牛人给个基本遗传算法的源程序,最好能有详细文档.
xVmOY+SYںdۤM6D7M0VM&SD^|PZ#?sԿ3sG61q9Ͻ9y.㰫;Նc H;΀7+Krl]~fv2-_0K3PP]thv^J曚Mg 4`(=ک:e鲡i=ZH#٨vRt;:o8ώc2ٵh _4qI7sld`9mNf{~ H! rB~>¿V*K['^gMòix&("}F ȤrP q> b g'1"{sߏm*f^ H'CAHȄ/x|go = 1KQ1O~W6i&Jj\^%$VV4%h)PߡŦ J.-ѳ#\fWAqqɪv|@m jqq  אO\`GnI2ZYـ>fc?O;##KDwqZ $䩨}g+*s ?<- ̟y,D>ᖲjSkLeEX{Q@}dr~E6rd.g~XMG 1 1HҡWWCCylT{[ ѽ@0ʠqC;kYITŤy1z'ϝ4q>t,Bw05{L гL%Z:3Qx4L5\`kۘ 9*jn]JiT-aboXjڎs-T>D`^A"1`e{Ṱ0& S~2 q*ydq|)/\UNY3tD8-F kn::BvL2oT2 PYoSl>1}ȝ +Ɂ8ݷs8H sq(Nyp392 ȟɨۗ/i'cc":1ݛa?:VjYj%*gkP2Z Hl! wHo =P* O+l}&g97_Cs8'FvЋtPi|,8g@=gY9"{g'3Q),"F3{p^v/nKbZjkus{ޯ =;8z?6닌ۿ[

基本遗传算法源程序近期正在使用遗传算法进行曲线拟合,以前从来没有接触过遗传算法,所以求哪个牛人给个基本遗传算法的源程序,最好能有详细文档.
基本遗传算法源程序
近期正在使用遗传算法进行曲线拟合,以前从来没有接触过遗传算法,所以求哪个牛人给个基本遗传算法的源程序,最好能有详细文档.

基本遗传算法源程序近期正在使用遗传算法进行曲线拟合,以前从来没有接触过遗传算法,所以求哪个牛人给个基本遗传算法的源程序,最好能有详细文档.
下面这个链接中,遗传算法的详细说明和例子都有了
再给你补充几个例子:
3.4.4.1重温轮盘赌选择 (Roulette Whell Selection Revisited )
SGenome& CgaBob::RouletteWheelSelection()
{
double fSlice = RandFloat()*m_dTotalFitnessScore;
我们从零到整个适应分范围内随机选取了一实数fSlice .
我喜欢把此数看作整个适应性分数饼图中的一块,如早先在图3.4中所示.
〔但并不是其中一块,译注〕
double cfTotal = O;
int SelectedGenome = 0;
for (int i=O; i fSlice)
{
SelectedGenome = i;
break;
}
}
return m_vecGenomes[SelectedGenome];
}
现在,程序通过循环来考察各基因组,把它们相应的适应性分数一个一个累加起来,直到这一 部分累加和 大于 fSlice 值时,
就返回该基因组.就是这样简单.
3.4.4.2 重温杂交操作(Crossover Revisited)
这一函数要求2个染色体在同一随机位置上断裂开,然后将它们在断开点以后的部分进行互换,以形成 2 个新的染色体 ( 子代 ) .
void CgaBob::Crossover( const vector &mum,const vector &dad,vector &baby1,vector &baby2)
{
这一函数共传入 4 个参数,参数传递均采用引用( reference )方式,
其中前2 个传入父辈 parent 的染色体(别忘记 ,染色体只是一个整数型的矢量std::vector ),
后 2 个则是用来 copy 子代染色体的空矢量.
if ( (RandFloat() > m_dCrossoverRate) || (mum == dad) )
{
baby1 = mum;
baby2 = dad;
return;
}
这里,首先是进行检测,看 mum 和 dad 两个上辈是否需要进行杂交.
杂交发生的概率是由参数 m_dCrossoverRate 确定.
如果不发生杂交,则2个上辈染色体不作任何改变地就直接复制为子代,函数立即返回.
int cp = RandInt(0,m_iChromoLength - 1) ;
沿染色体的长度随机选择一个点来裂开染色体.
for (int i=0; i