关于遗传算法的实验报告一、实验目的:
理解和掌握遗传算法的应用及意义,能用一门自己擅长的语言实现遗传算法的基本功能,在此基础上进一步理解和巩固对遗传算法的重要,以便在今后的学习和工作中能有效的运用和借鉴!需要指出的是遗传算法并不是能保证所得到的就是最佳的答案但通过一定的方法可以将误差控制在一定的范围内!二、实验原理和题目:
1遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。其求解过程是个最优化的过程。一般遗传算法的主要步骤如下:
(1)随机产生一个确定长度的特征字符串组成的初始种群。(2)对该字符串种群迭代地执行下面的步骤a和步骤b,直到满足停止准则为止:
a计算种群中每个个体字符串的适应值;b应用复制、交叉和变异等遗传算子产生下一代种群。(3)把在后代中表现的最好的个体字符串指定为遗传算法的执行结果,即为问题的一个解。2通过编码、设置种群、设置适应度函数、遗传操作、解码产生需要的解。fxxsi
x1,x02求解fx的最大值和最小值。三、实验条件硬件:微型计算机。语言:本实验选用的为C语言。四、实验内容:建造针对fx的遗传算法程序,然后进行运行求解。五、实验步骤:1确定基本功能:本实验是实现f(x)的最大值和最小值的求解。2对fx进行编码:用一个二进制矢量表示一个染色体,由染色体来代表变量x的实数值,这里精度取小数点后6位数,变量x的域长为2,整个区间被分为21000000个等长的区间。由于21000000在23位二进制数的表示范围呢,所以,编码长度为23位。3设计适应度函数:由于要求f(x)的最值,所以适应度函数可根据f(x)做适当的改变。最大值:fxxsi
x5;最小值:fx1(xsi
x5)4针对fx的设计并且实现遗传算法程序:遗传操作主要包括复制、交叉和变异。复制是直接将父代遗传给子代,即根据个体的适应度函数值所度量的优劣程度决定它在下一代是被淘汰还是被遗传。交叉从能进入下一代的个体中选出两个,将两者的部分码值进行交换。变异是根据变异概率选出一个个体,随机对其某位编码进行改变。复制由voidSelectio
_operatio
boolflag实现;交叉由voidCrossover_operatio
实现;变异由void
Mutio
operatio
实现。
5设计初始种群:默认设置为50个随机产生的23位字节的染色体。6调试交叉和变异概率:在常用的交叉和变异概率范围内,结果r