早些时候就开始接触遗传算法,但是编的写程序出来的结果总是让人感觉到一点不安。今天再看了一遍,感觉又有一点收获。
1.我以前脑海中的遗传算法
第一,将问题转换到一个合适的编码,即所谓的染色体。
第二,初始化遗传算法的参数:多少染色体N,交叉概率Pc,变异概率Pm。随机初始化遗传算法的祖先染色体。
第三,交叉,交叉的染色体个数为Pc*N,这里是直接的选取了Pc*N个染色体来进行交叉,当然这些染色体配对都是随机选取了。
第四,对于所有染色体:包括父代及交叉的染色体进行变异。变异的也是采用Pm*N个数来选择,即每次都一定是变异Pm*N个基因。
第五,对父代,交叉所得及变异所得的染色体进行按适应度值排序,然后选取前M个染色体作为下一代的父代染色体。
2.今天看后所得的收获
第一, 将问题转换到一个合适的编码,即所谓的染色