版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、遗传算法实验报告一、实验目的:理解和掌握遗传算法的应用和意义,用自己擅长的语言实现遗传算法的基本功能。在此基础上,进一步理解和巩固遗传算法的重要性,使其能够在今后的学习和工作中得到有效的运用和借鉴!需要指出的是,遗传算法不能保证得到最好的答案,但是通过一定的方法可以将误差控制在一定的范围内!2.实验原理和主题:1.遗传算法是一种基于空间搜索的算法,它模拟自然进化过程,通过自然选择、遗传、变异和达尔文的适者生存理论来寻找问题的答案。它的求解过程是一个优化过程。通用遗传算法的主要步骤如下:(1)随机生成由一定长度的特征串组成的初始种群。(2)对字符串填充迭代执行以下步骤a和b,直到满足停止标准:a
2、 .计算群体中每个个体字符串的适应值;使用遗传算子,如复制、交叉和变异,产生下一代群体。(3)将后代中最佳的单个字符串指定为遗传算法的执行结果,这是问题的解决方案。2.通过编码、种群设置、适应度函数设置、遗传操作和解码,生成所需的解。F(x)=x*sin(x) 1,x0,2p,并求解F(x)的最大值和最小值。三、实验条件硬件:微型计算机。语言:本实验使用C语言。Iv .实验内容:建立f(x)的遗传算法程序,然后运行求解。V.实验步骤:1.确定基本函数:这个实验是求解f(x)的最大值和最小值。2.编码f(x):染色体由二进制向量表示,染色体代表变量x的实值,其中小数点后精度为6位,变量x的字段长
3、度为2p,整个区间分为2p*1000000个等长区间。由于2p*1000000在23位二进制数的表示范围内,编码长度为23位。3.设计适应度函数:因为需要f(x)的最大值,所以适应度函数可以根据f(x)适当改变。最大值:f(x)=x * sin(x)5;最小值:f(x)=1/(x * sin(x)5);4.f(x)遗传算法程序的设计与实现:遗传操作主要包括复制、交叉和变异。复制是将父代直接传给后代,即根据个体适应度函数值的大小来决定下一代是淘汰还是继承。交叉选择两个人谁可以进入下一代,并交换他们的部分代码值。变异是根据变异的概率选择一个个体,并随机改变它的一个编码。复制由void select
4、ion _ operation(bool flag)组成。实施;被无效的交叉操作()交叉;实施;该变体由无效多操作()组成;实施。5.设计初始群体:默认设置是50个随机生成的23位字节染色体。6.调试交叉和变异概率:在常用的交叉和变异概率范围内,结果随着交叉和变异概率的变化而变化,它们之间的差异相对不明显7.实验参数:实验中的主要参数是遗传代数、种群规模、交叉概率和变异概率。实验结果:寻求最大值:寻求最小值:该程序的主要代码如下(背景代码):GA级矢量流行音乐;向量子图;双Pc;双倍Pm。整数迭代;整数_人口;双重最优最大解;双重最优最小解;双重最优最大函数;双最优_最小_函数值;字符串优化_
5、个人;矢量伦潘;/浮动健身;public:GA()Pc=0.25Pm=0.01数量_人口=50;迭代次数=100;无效GA _ Init();无效交叉操作();无效选择_操作();无效变异_操作();无效评估(bool);无效的LunPan_Operation(布尔值);双功能(双);无效极值(布尔);无效显示(布尔、整数);无效显示_ M();/找出最大值和最小值无效GA:Extreme极值(布尔标志)if(标志)最佳_最大_函数_ Vlaue=-100;其他最佳_最小值_函数值=100;对于(向量:迭代器ITER=流行。开始();iter!=pop。结束();iter)双t=0.5双dec
6、num 1=0;/*字符串p=* iter*/代表(国际=(*)ITER .长度()-1;I=0。- i)t=t * 2;decnum 1=(*(ITER)I-48)* t;数字1=数字1 *(2 *)/字符串值;/CoutOptimize _ Max _ Function _ Vlaue)最佳_最大_函数_变量=温度;最优最大解=DecNum1最佳_个人=* iter/适合度=温度5;否则/找到最小值如果(温度:迭代器ITER=流行。开始();iter!=pop。结束();iter)/cout * ITER : ITER ITER=伦潘。开始();iter!=伦潘。结束();iter)if(
7、rnd=*iter)回推(*(流行音乐)。begin();/cout *(Pop)。(ITER-伦潘。ITERITER=伦潘。开始();iter!=伦潘。结束();iter)if(rnd=*iter)STRing=*(Pop。(ITER-伦潘。开始();双rnd1=0.0001*(rand()000);对于(向量:迭代器ITER 1=伦潘。开始();iter1!=伦潘。结束();iter1)if(rnd1=*iter1)字符串1=*(Pop。开始();int rnd 2=rand()#;炭温度;for(int I=rnd 2;迭代器ITER=伦潘。开始();iter!=伦潘。结束();iter)if(rnd=*iter)STRing=*(Pop。(ITER-伦潘。开始();int rnd 1=rand()#;if(STRingrnd1=0)STRingrnd1=1 .否则字符串rn D1=0;subPp。推回(_ StrIng);打破;/cout Variation :迭代器ITER=伦潘。开始();iter!=伦潘。结束();iter)/cout * ITER :迭代器ITER=主题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论