遗传算法(GA)干货

来源:互联网 发布:java接口怎么写 编辑:程序博客网 时间:2024/05/19 13:09
遗传算法其实是一种优化算法,对于不可解析的问题,传统的优化方法如:共轭梯度法、拟牛顿法、单纯形法都是局部优化方法,而遗传算法是一种全局优化算法,与其类似的还有随机漫步、模拟退火等算法。


原理:
仿生思想:可行解的逐步优化--染色体的优胜劣汰
可行解--染色体(可行解得到的目标函数值--染色体的适应值)
可行解的基--染色体的基因
对于染色体基因的操作:
1、选择;2、交换;3、变异。
染色体即一串二进制编码, 基因基即编码中的一位
初始,随机产生一定数量的染色体,称为初始种群
选择,计算各染色体的适应度,适应度越大,被选择的概率越高,被选择的染色体进行复制,
交换,两个染色体互换基因,即交换部分位的编码
变异,染色体的部分编码变化,最常见的即取反(1--0, 0--1)


如此重复,最后即逐渐收敛到最优解。


重要参数:
种群规模,即染色体个数
交叉率,即参与交叉的染色体的比例
变异率,即参与变异的基金的比例


步骤总结:
寻找合适的编码方式,将可行解表示为一串二进制代码
寻找合适的适应度函数,评价染色体对应的可行解的目标函数值
指定N个初始可行解,即N个染色体,构成初始种群S0;
计算适应度函数值,按照适应度越大,选择概率越大的原则,从中有放回挑出N个染色体, 组成种群S1;
按照指定的比例,从S1种群中,挑出部分染色体,两两一组,随机选择某位,断开,交换,组成新的染色体,替换原有染色体,组成种群S2。
按照指定比例,从上步种群中,挑出部分染色体, 选择其中某位, 变异,然后放回,组成种群S3;
重复上述步骤,直至达到约定的迭代次数。
结束时,适应度最大的染色体,解码得到最优解
原创粉丝点击