遗传算法是借鉴生物的自然选择和遗传进化机制而开发出的一种全局优化自适应概率搜索算法。摒弃了传统的搜索方式,模拟自然界生物进化过程,对目标空间进行随机搜索。广泛应用于最优化问题求解中。
生物遗传概念&术语 | 算法中的作用 |
适者生存 | 算法停止时,最优目标值的可行解有最大的可能被留住 |
个体 | 可行解 |
种群 | 个体的集合 |
染色体 | 可行解的编码 |
基因 | 编码的元素 |
环境 | 适应函数 |
适应性 | 适应度函数值 |
种群 | 根据适应度函数值选取的一组可行解 |
交配 | 通过交配原则产生一组新可行解的过程 |
变异 | 编码的某一分量发生变化的过程 |
基因型 | 基因组合的模型,染色体的内部表现。如1001 |
表现型 | 染色体决定形状的外部表现。如9 |
编码 | 从表现型到基因型的映射 |
解码 | 从基因型到表现型的映射 |
适应度函数 | 问题中的全体个体与其适应度之间的一个对应关系,一般是一个实值函数。该函数就是遗传算法中指导搜索的评价函数。 |
遗传算法 基本操作 | 描述 |
选择/复制 | 【概念】 根据各个个体的适应值,按照一定的规则或方法,从第t代群体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中。 把当前种群中的染色体按照与适应值成正比例的概率复制到新的种群中。 【主要思想】 适应值较高的染色体有较大的选择机会。通过适应度函数计算适应度值,在所有个体中选择适应度值较高的个体 【实现方法】 轮盘赌策略、锦标赛选择策略 [轮盘赌策略] 通过适应度函数计算每个个体的适应度值,把所有个体的适应度值加起来得到整体的适应度值。将每个个体的适应度值除以整体的适应度值,得到每个个体被选择的概率。之后再计算累计概率。在选择时,根据随机产生的数值与累计概率的对比进行选择。 [锦标赛策略] 每次在群体中选择一定数量的个体,采取放回抽样的方式进行不断的选择,每次从一定数量的个体中选择最优的个体进入下一代种群,重复此过程,直到新的种群规模和原来的种群规模达到一致。 |
交叉 | 【概念】 模拟生物进化过程的繁殖现象,将群体P(t)内的各个个体随机搭配成对,以某个交叉概率Pc交换它们之间的部分基因,从而形成两个新的个体的过程。 【实现方法】 交叉方式:单点交叉、两点交叉、多点交叉、均匀交叉。 单点交叉:一个交叉点。交叉点左侧部分保留,右侧部分交换继承。 两点交叉:两个交叉点之间的部分交换,之外的部分保留。 均匀交叉:父母之间相同的部分保留,不同的部分按照一半的几率交叉继承。 |
变异 | 对群体P(t)内的每一个个体,以某个变异概率Pm改变某一个或一些基因座上基因值为其它的等位基因 |
【适应度函数】
有些时候,直接将目标函数转化为适应函数
若目标函数为最大化问题:Fitness(f(x))=f(x)
若目标函数为最小化问题:Fitness(f(x))=-f(x)
【算法停止准则】
1) 种群中个体的最大适应值超过预设定值
2) 种群中个体的平均适应值超过预设定值
3) 种群中个体的进化代数超过预设定值(使用相对广泛)
【遗传算法过程】
1) 随机产生初始种群;
2) 计算种群中每个个体的适应度值,判断是否满足停止条件,若不满足,则转第三步,否则转第六步;
3) 按由个体适应值所决定的某个规则选择将进入下一代的个体;
4) 按交叉概率Pc进行交叉操作,生产新的个体;
5) 按变异概率Pm进行变异操作,生产新的个体;
6) 输出种群中适应度最优的染色体作为问题的满意解或最优解
【用遗传算法解决最优化问题】
例:求解f(x)=x²的最大值 x={0,1,2,...,31} 解变量x并优化求解
步骤:编码-产生父代个体-GA基本操作
【编码】
优化问题的解空间为{0,1,2,...,31}——>考虑用二进制编码,5位无符号二进制数
【产生父代个体】
采用随机方法产生染色体数字串,组成初始化种群,适应度函数即为f(x)=x²对随机生成的几个数字串分别求相应的适应度值,并计算相应的选择概率和累计概率。
【GA基本操作】
根据随机数与累计概率的比对情况,通过轮盘赌方式选中个体;选中的个体每两个一组,每组的两个个体从区间[0,1]随机产生一个随机数,若其小于假设的交叉概率,则进行交叉,否则将个体保留到子代中。随机选择交叉点,进行基因重组;为了避免局部最优,按照变异概率对个体进行变异操作。
【迭代】
产生新的个体重复上述操作。直至达到停止条件。