遗传算法-求函数零点-C语言代码.doc_第1页
遗传算法-求函数零点-C语言代码.doc_第2页
遗传算法-求函数零点-C语言代码.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

遗传算法求函数的零点 本文适合初学者刚刚学会一点遗传算法,并成功用代码实现,希望与大家分享。本文主要以求函数零点来说明遗传算法,没有大段的理论描述,代码是主要的!例:已知函数y = 2x + x*x - 2 ; 求它在区间(0,1)上,y=0时x的值。解:函数y = 2x + x*x 2的图像为区间(0,1)上,函数的零点大致为0.6左右。我们采用遗传算法来求方程2x + x*x 2=0在区间(0,1)上的根。网上有很多关于遗传算法的理论知识,估计这并不是初学者所关心的,所以这里就直接给出代码.#include#include#include#include#include#define size 40/种群大小#define wei 14/染色体长度#define pc 0.9/交叉概率#define pm 0.03/变异概率/y=pow(2.0,x)+x*x-2;(0,1) 9999=10011100001111 14位double popsize+1,pop_adaptsize+1;double prd()/产生0,1)之间的随机数return (rand()%10000)/10000.0;void create_pop()/建立初始种群for(int i=1;i=size;i+)popi=prd();double adapt(double x)/适应度double temp;temp=fabs(pow(2.0,x)+x*x-2);return pow(8.0,-temp);double chose()/自然选择,适者生存double x;x=prd();for(int i=1;i=size;i+)if(xpop_adapti)return popi;else continue;int variation(int x)/变异int length,t;length=rand()%wei;t=1length)length)length;tp4=tp3yy;if(prd()pm)*x1=variation(tp1tp4)/10000.0;else *x1=(tp1tp4)/10000.0;if(prd()pm)*y1=variation(tp2tp3)/10000.0;else *y1=(tp2tp3)/10000.0;void update_next()/产生下代double tempsize+1,x,y;for(int i=1;i=size;i+=2)x=chose();y=chose();if(prd()pc)cross(x,y,&tempi,&tempi+1);else tempi=x;tempi+1=y;for(int i=1;i=size;i+)popi=tempi;void out()for(int i=1;i=size;i+)printf(x=%lf adapt=%lf up=%lf:n,popi,adapt(popi),pop_adapti);int main()unsigned st,end;srand(time(0);st=clock();create_pop();pop_adapt0=0;for(int j=0;j170;j+)for(int i=1;i0.999)out();end=clock();printf(yes time=%un j=%dn,end-st,j-1); return 0;for(int i=1;i=size;i+)pop_adapti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论