遗传算法(GA)可以看成是基于自然选择的优化算法,通过驱动进化过程的机制,用于解决有限和无约束的优化问题。
遗传算法的灵感来自于达尔文进化论,在自然选择的过程中,只有优秀的个体会存活并繁衍。在遗传算法中,解决方案被看成是种群,将较差的解决方案替换为好的解决方案,只有最适合的解决方案才被允许复制迭代。这一概念是不是和进化算法很相似,但遗传算法和进化算法还是有不同点的。
遗传算法通常用于生成优化和搜索问题的高质量解决方案。
遗传算法的两个主要特征
1.适应度函数:决定了设计的重要性,适应度等级越高表明设计越有效。适应度函数可以用多种方式定义。
2.交叉:称为交叉的遗传算子用于将染色体繁殖,为了产生优良的后代,从交配池中随机选择两个字符串进行交叉。
遗传算法工作原理
典型的遗传算法需要一组候选解,这组解称为染色体或种群,还需要一个用于评估每个候选解成本的适应度函数以及用于从现有候选解生成新候选解的遗传算子。
创建一个搜索空间,其中累积了所有个体。所有个体都在搜索空间的有限长度内编码。
搜索空间中的每个个体都有一个适应度分数,表明其与其他个体竞争的能力。
遗传算法会寻找和维护所有具有各自适应度分数的个体,并为具有高适应度分数的个体提供繁殖的机会。即对新解决方案进行评估并与上一代解决方案进行比较,保留较好的解决方案,丢弃差的解决方案。
重复此过程,直到算法完成收敛,新的方案没有比老的方案有任何增益属性或特征。
最后,输出最佳的解决方案。
遗传算法的好处
使用遗传算法有很多好处,它们能够找到传统方法难以或不可能解决的问题的解决方案。它们在处理大量数据方面也非常有效,并且可以轻松并行化。遗传算法可以在嘈杂的环境中执行。也可以在复杂和离散的问题的情况下工作。 此外,遗传算法不需要其他优化方法通常需要的有关问题的导数或其他信息。
遗传算法的局限性
使用遗传算法也有一些限制。算法可能对用于初始化的参数敏感,并且算法最终完成收敛的周期会比较长。
遗传算法的应用
遗传算法已被应用于工程设计、经济、金融、制造、医学等多个领域。一些现实应用包括功能优化、调度、资源分配、故障诊断、电路设计和数据挖掘,在人工智能和机器学习的应用有神经网络、模糊逻辑、密码破译、过滤和信号处理等等。