实验目的
- 了解遗传算法的概念
- 掌握遗传算法的使用
实验内容
设计并实现一个简单的遗传算法程序,用该算法求解在区间[0,31]上的二次函数y=x2的最大值,程序能显示优化计算过程,直至给出最优解。
实验过程
问题描述
1.染色体及其编码
遗传算法以生物细胞中的染色体(chromosome)代表问题中个体对象(即可能解)。一般用字符串表示,而基因也就是字符串中的一个个字符。例如,假设数字9是某问题中的个体对象,则我们就可以用它的二进制数串1001作为它的染色体编码。
2. 适应度与适应度函数
适应度(fitness)就是借鉴生物个体对环境的适应程度,而对所求解问题中的对象(即染色体)设计的一种表征优劣的测度。适应度函数(fitness function)就是问题中的全体对象与其适应度之间的一个对应关系,即对象集合到适应度集合的一个映射。
3. 种群
种群(population)就是模拟生物种群而由若干个染色体组成的群体,它一般是整个论域空间的一个很小的子集。遗传算法就是通过在种群上实施所称的遗传操作,使其不断更新换代而实现对整个论域空间的搜索。
4. 遗传操作
遗传算法中有三种关于染色体的运算:选择-复制*、交叉和变异,称为遗传操作或遗传算子(genetic operator)。
选择-复制
选择概率P(xi)的计算公式为
其中,f为适应度函数,f(xi)为xi的适应度。
按概率选择的方法可用一种称为赌轮的原理来实现。算法中赌轮选择法可用下面的子过程来模拟:
① 在[0,1]区间内产生一个均匀分布的伪随机数r;
② 若r≤q1,则染色体x1被选中;
③ 若qk-1<r≤qk (2≤k≤N),则染色体xk被选中。
其中的qi称为染色体xi(i=1, 2, …, n)的积累概率,其计算公式为