遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
设置种群参数
1 | private int ChrNum = 10; // 染色体数量 |
初始化种群中的每一个染色体
1 | private String initChr() { |
基因编码
染色体的基因编码与变量的值转换,以目标函数fitness作为每个染色体的适应度值
1 | private double[] calculatefitnessvalue(String str) { |
选择
计算群体上每个个体的适应度值,按由个体适应度值所决定的某个规则选择将进入下一代的个体,同时记录下该种群中的最优解
1 | private void select() { |
交叉
交叉率为60%,平均为60%的染色体进行交叉
1 | private void cross() { |
变异
基因突变具有不定向性,不能保证解的绝对优化,但可以防止陷入局部最优解,这里选取1%的基因进行变异操作
1 | private void mutation() { |
主函数
1 | public static void main(String args[]) { |
运行结果
1 | 最小值1.0000297643275602 |