遗传算法的设计与实现人工智能第二次实验报告一.实验题目: 遗传算法的设计与实现二.实验目的: 通过人工智能课程的学习,熟悉遗传算法的简单应用
三.实验内容 用遗传算法求解 f (x) = x2 的最大值,x∈ [0,31],x 取整数
可以看出该函数比较简单,只要是为了体现遗传算法的思想,在问题选择上,选了一个比较容易实现的,把主要精力放在遗传算法的实现,以及核心思想体会上
实验过程:1
实现过程 (1)编码使用二进制编码,随机产生一个初始种群
L 表示编码长度,通常由对问题的求解精度决定,编码长度 L 越长,可期望的最优解的精度也就越高,过大的 L 会增大运算量
针对该问题进行了简化,因为题设中 x∈ [0,31],所以将二进制长度定为 5 就够用了;(2)生成初始群体种群规模表示每一代种群中所含个体数目
随机产生 N 个初始串结构数据,每个串结构数据成为一个个体,N 个个体组成一个初始群体,N 表示种群规模的大小
当 N 取值较小时,可提高遗传算法的运算速度,但却降低种群的多样性,容易引起遗传算法早熟,出现假收敛;而 N 当取值较大时,又会使得遗传算法效率降低
一般建议的取值范围是 20—100
(3)适应度检测根据实际标准计算个体的适应度,评判个体的优劣,即该个体所代表的可行解的优劣
本例中适应度即为所求的目标函数;(4)选择从当前群体中选择优良(适应度高的)个体,使它们有机会被选中进入下一次迭代过程,舍弃适应度低的个体
本例中采用轮盘赌的选择方法,即个体被选择的几率与其适应度值大小成正比 (5)交叉遗传操作,根据设置的交叉概率对交配池中个体进行基因交叉操作,形成新一代的种群,新一代中间个体的信息来自父辈个体,体现了信息交换的原则
交叉概率控制着交叉操作的频率,由于交叉操作是遗传算法中产生新个体的主要方法,所以交叉概率通常应取较大值;但若过大的话,又可能破坏群