遗传算法解决数学等式(续)
查看原文:http://blog.foool.net/2018/08/%e9%81%97%e4%bc%a0%e7%ae%97%e6%b3%95%e8%a7%a3%e5%86%b3%e6%95%b0%e5%ad%a6%e7%ad%89%e5%bc%8f%ef%bc%88%e7%bb%ad%ef%bc%89/
之前的文章(http://blog.foool.net/2017/08/用遗传算法解决简单的数学等式问题/) 中介绍了过如何使用遗传算法解决数学等式问题,即寻找满足等式
(a + 2b + 3c + 4d) - 30 = 0
的一组解。适应函数确定后,影响算法好坏的主要依赖于交叉概率(crossover ratio),变异概率(mutation ratio)、初始基因组大小(即用于交叉变异的基因个数)和基因初始阈值。基因初始阈值指的是基因的取值范围,比如等式中变量a/b/c/d 的取值范围,我在实验中限定变量为大小不超过100 的整数。下面给出本文的几个结论。一、遗传算法也可以用于寻找唯一解
之前的文章 中寻找的是四元一次等式的一个解,这个解的个数是无穷的,遗传算法能够找到一个解,但每次找到的解也不相同。但如果要用遗传算法解一个包含四个等式的四元一次方程组(唯一解)也是可行的,只是时间话的需要更长。比如遗传算法解四元一次等式平均需294 次迭代,解四元一次方程组需11400 次迭代(所有参数同之前的文章)。本文使用的四元一次方程组为:(a + 2b + 3c + 4d) - 30 = 0
(2a + 2b + 2c + 2d) - 24 = 0
(3a + 1b + 7c + 1d) - 60 = 0
(4a + 3b + 2c + 1d) - 30 = 0