【讲座】遗传算法简介

算法流程图参见附录。
第一步:编码、并形成初始结果集合
这一步将所要解决的问题结果用某一种方式编码为一个结果(通常为一维数组,如生物信息学里面的 DNA、RNA、蛋白质序列,等),并利用这种方式,随机生成多个初始的结果。注意,这里的初始结果可能不是最优的。
第二步:集合中每一个结果的适应度评估
也就是找到一个函数,来计算每一个结果的“适应度”(即,“最优”的程度)。
第三步:选择
从当前的结果集合中选择出“适应度”比较好的那些结果,拿来做下一步操作(也就是下面的 交叉、变异),利用它们作为父辈来繁殖下一代子孙。
第四步:交叉
例如,利用两个父辈结果 A 和 B,把他们分别分割为两块,如:A=(A1, A2) 和 B=(B1, B2),然后生成两个子孙结果:(A1, B2) 和 (B1, A2)。
当然,具体的操作可能还有其他一些限制条件。
第五步:变异
即将某一个父辈结果的某一些位进行随机的变异(当然,需要考虑的变异的罚分函数),来得到一个新的子孙结果。
接下来,重复以上操作,直到得到一个较好的结果,或者时间达到一个上界。
不知道以上说明是否可以让大家对遗传算法有一个初步的了解?
有感兴趣的同志,欢迎与我联系、讨论。
