优化设计之遗传算法
遗传算法(Genetic Algorithm,GA)是优化设计中常用的一个智能优化算法,它是通过模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局最优化概率搜索算法。
遗传算法的基本运算过程如下:
(1)对种群个体进行编码,生成初始种群,为保证优化收敛,需要规划群体中的个体数和最大进化代数;
(2)根据评价规则对个体进行评价,计算种群中每个个体的适应度,如果发现符合适应度要求的个体,则取出最大适应度的个体进行解码输出,遗传结束;
(3)如果上一步没有找到满足适应度要求的个体,则对所有的个体进行遗传运算(选择运算、交叉运算、变异运算),得到下一代群体;
(4)对得到的新群体重复进行2、3步运算,直到找到满足适应度要求的个体,或者是达到最大进化代数,运算结束。
遗传算法的运算流程图如下所示:

下面对其中的关键步骤解释如下:
1、编码与解码
编码即通过一定的规则生成每个个体的染色体,常用的编码方法有:二进制编码、浮点数编码、符号编码、格雷码编码等。编码越复杂(每个染色体中所包含的基因个数越多),种群数量越大,计算量越大。
有编码公式就要有对应的解码公式,当进化出满足适应度要求的个体时需要对个体的编码进行解码,才能得到我们想要的数据。
2、个体评价
个体评价是对染色体的遗传概率进行计算的操作,通过计算每个个体的适应度,决定该个体被遗传到下一代的概率。
3、选择运算
通过选择运算实现个体的优胜劣汰,常用的选择算法为比例选择运算。通过轮盘法产生一个0到1之间的随机数,如果这个数在某个染色体的概率区间,那么,我们就选择这个染色体进入下一代。个体被遗传到下一代的概率与个体的适应度大小成正比。
4、交叉运算
目前常用的交叉运算是单点交叉运算,在个体编码中随机设置一个交叉点,并在该交叉点上相互交换两个配对个体的基因,形成新的个体。
5、变异运算
为防止优化过程进入“奇点”,需要对个别个体进行变异操作。常用的变异运算方法是基本位变异,例如在二进制编码中,随机地将基因中的某一位或某几位的0替换成1或者将1替换成0.
以上为遗传算法基本的概念和程序编写流程。现在很多优化设计软件中都提供有专门的遗传算法模块或遗传算法函数,可以直接运用。如MATLAB的优化设计工具箱、Hyperworks中的Hyperstudy模块都提供有专门的遗传算法函数可以使用。Python中也有很多开源的遗传算法库可以使用,例如Geatpy进化算法工具箱就提供了多种遗传算法函数,并提供了一个高度模块化、耦合度低的面向对象的进化算法框架,可用于求解单目标优化、多目标优化、复杂约束优化、组合优化、混合编码进化优化等,并且能和SCOOP等框架紧密配合进行分布式计算。
1 条留言 访客:0 条 博主:0 条 引用: 1 条
来自外部的引用: 1 条