欢迎来到天天文库
浏览记录
ID:15782122
大小:24.77 KB
页数:3页
时间:2018-08-05
《遗传算法-求函数零点-c语言代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、遗传算法求函数的零点本文适合初学者刚刚学会一点遗传算法,并成功用代码实现,希望与大家分享。本文主要以求函数零点来说明遗传算法,没有大段的理论描述,代码是主要的!例:已知函数y=2^x+x*x-2;求它在区间(0,1)上,y=0时x的值。解:函数y=2^x+x*x–2的图像为区间(0,1)上,函数的零点大致为0.6左右。我们采用遗传算法来求方程2^x+x*x–2=0在区间(0,1)上的根。网上有很多关于遗传算法的理论知识,估计这并不是初学者所关心的,所以这里就直接给出代码.#include#include#in
2、clude#include#include#definesize40//种群大小#definewei14//染色体长度#definepc0.9//交叉概率#definepm0.03//变异概率//y=pow(2.0,x)+x*x-2;(0,1)9999=1001110000111114位doublepop[size+1],pop_adapt[size+1];doubleprd()//产生[0,1)之间的随机数{return(rand()%10000)/10000.0;}voidcreate_po
3、p()//建立初始种群{for(inti=1;i<=size;i++)pop[i]=prd();}doubleadapt(doublex)//适应度{doubletemp;temp=fabs(pow(2.0,x)+x*x-2);returnpow(8.0,-temp);}doublechose()//自然选择,适者生存{doublex;x=prd();for(inti=1;i<=size;i++)if(x4、h,t;length=rand()%wei;t=1<>length)<>length)<5、tion(tp1^tp4)/10000.0;}else*x1=(tp1^tp4)/10000.0;if(prd()6、i+1]=y;}}for(inti=1;i<=size;i++)pop[i]=temp[i];}voidout(){for(inti=1;i<=size;i++)printf("x=%lfadapt=%lfup=%lf:",pop[i],adapt(pop[i]),pop_adapt[i]);}intmain(){unsignedst,end;srand(time(0));st=clock();create_pop();pop_adapt[0]=0;for(intj=0;j<170;j++){for(inti=1;i<=size;i++){p7、op_adapt[i]=pop_adapt[i-1]+adapt(pop[i]);if(adapt(pop[i])>0.999){out();end=clock();printf("yestime=%uj=%d",end-st,j-1);return0;}}for(inti=1;i<=size;i++)pop_adapt[i]/=pop_adapt[size];update_next();}//doublet=0.6534;printf("%lf",adapt(t));return0;}
4、h,t;length=rand()%wei;t=1<>length)<>length)<5、tion(tp1^tp4)/10000.0;}else*x1=(tp1^tp4)/10000.0;if(prd()6、i+1]=y;}}for(inti=1;i<=size;i++)pop[i]=temp[i];}voidout(){for(inti=1;i<=size;i++)printf("x=%lfadapt=%lfup=%lf:",pop[i],adapt(pop[i]),pop_adapt[i]);}intmain(){unsignedst,end;srand(time(0));st=clock();create_pop();pop_adapt[0]=0;for(intj=0;j<170;j++){for(inti=1;i<=size;i++){p7、op_adapt[i]=pop_adapt[i-1]+adapt(pop[i]);if(adapt(pop[i])>0.999){out();end=clock();printf("yestime=%uj=%d",end-st,j-1);return0;}}for(inti=1;i<=size;i++)pop_adapt[i]/=pop_adapt[size];update_next();}//doublet=0.6534;printf("%lf",adapt(t));return0;}
5、tion(tp1^tp4)/10000.0;}else*x1=(tp1^tp4)/10000.0;if(prd()6、i+1]=y;}}for(inti=1;i<=size;i++)pop[i]=temp[i];}voidout(){for(inti=1;i<=size;i++)printf("x=%lfadapt=%lfup=%lf:",pop[i],adapt(pop[i]),pop_adapt[i]);}intmain(){unsignedst,end;srand(time(0));st=clock();create_pop();pop_adapt[0]=0;for(intj=0;j<170;j++){for(inti=1;i<=size;i++){p7、op_adapt[i]=pop_adapt[i-1]+adapt(pop[i]);if(adapt(pop[i])>0.999){out();end=clock();printf("yestime=%uj=%d",end-st,j-1);return0;}}for(inti=1;i<=size;i++)pop_adapt[i]/=pop_adapt[size];update_next();}//doublet=0.6534;printf("%lf",adapt(t));return0;}
6、i+1]=y;}}for(inti=1;i<=size;i++)pop[i]=temp[i];}voidout(){for(inti=1;i<=size;i++)printf("x=%lfadapt=%lfup=%lf:",pop[i],adapt(pop[i]),pop_adapt[i]);}intmain(){unsignedst,end;srand(time(0));st=clock();create_pop();pop_adapt[0]=0;for(intj=0;j<170;j++){for(inti=1;i<=size;i++){p
7、op_adapt[i]=pop_adapt[i-1]+adapt(pop[i]);if(adapt(pop[i])>0.999){out();end=clock();printf("yestime=%uj=%d",end-st,j-1);return0;}}for(inti=1;i<=size;i++)pop_adapt[i]/=pop_adapt[size];update_next();}//doublet=0.6534;printf("%lf",adapt(t));return0;}
此文档下载收益归作者所有