编写完基本的代码流程后,本节我们进行代码的调试,并分析在不同参数下的结果分析比对。
五、解决过程
5.1 main function:
5.2算法复杂度分析:
以lastmax(N = 1000; N_chrom = 2;iter = 2000;mut = 0.05; acr = 0.8; best = 1;)为例,采用代码运行时间和函数调用次数模糊反应算法复杂度:
![遗传算法(三):算法的调试3 遗传算法(三):算法的调试3](https://cms-pic.yhzz.com.cn/1683810123609.jpg)
六、实验结果
6.1实际函数
F使用matlab直接求区间最值得到:
6.2通过meshgrid绘图得到函数最值:
![遗传算法(三):算法的调试6 遗传算法(三):算法的调试6](https://cms-pic.yhzz.com.cn/1683810123726.jpg)
实际函数图像(蓝色高亮显示为最大值)
6.3 改变参数对比实验结果
参数:
N(种群个体数目);
N chrom(染色体节点数);
iter(迭代次数);
mut(变异概率);
acr(交叉概率)
(1)N = 100; N_chrom = 2;iter = 2000;mut = 0.05; acr = 0.8; best = 1;
![遗传算法(三):算法的调试9 遗传算法(三):算法的调试9](https://cms-pic.yhzz.com.cn/1683810123853.jpg)
(2)N = 1000; N_chrom = 2;iter = 2000;mut = 0.05; acr = 0.8; best = 1;
初始种群个数至1000反倒收敛速度减慢,通过实验对比初始种群数量为15左右时候收敛速度最快。
![遗传算法(三):算法的调试11 遗传算法(三):算法的调试11](https://cms-pic.yhzz.com.cn/1683810123936.jpg)
(3)N = 100; N_chrom = 2;iter = 200;mut = 0.05; acr = 0.8; best = 1;
缩减迭代次数至200,仍然可以收敛到期望的最值。通过实验发现大约迭代次数少于50次时,开始有一定概率无法收敛到期望的最值。
![遗传算法(三):算法的调试13 遗传算法(三):算法的调试13](https://cms-pic.yhzz.com.cn/1683810124021.jpg)
(4)N = 100; N_chrom = 2;iter = 2000;mut = 0.5; acr = 0.8; best = 1;
增大变异概率,可通过图像看出迭代运算时,平均适应度抖动很厉害,
说明变异概率对算法稳定度的影响,即变异概率越大,适应度毛刺越多。收敛过程越不线性。
![遗传算法(三):算法的调试15 遗传算法(三):算法的调试15](https://cms-pic.yhzz.com.cn/1683810124102.jpg)
(5)N = 100; N_chrom = 2;iter = 2000;mut = 0.05; acr = 0.2; best = 1;
缩小交叉概率可以通过图像发发现,与变异概率0.8并没有很大区别。
![遗传算法(三):算法的调试17 遗传算法(三):算法的调试17](https://cms-pic.yhzz.com.cn/1683810124185.jpg)
到这里使用遗传算法来解决实际函数优化问题就全部讲解结束了。如果有什么问题欢迎在评论区提问交流。