我有一个遗传算法,个体由2000位组成,我尝试优化4个变量。是否有任何(相对直接的优先)经验法则来设置人口规模,世代数和变异概率等参数?
答案 0 :(得分:5)
简单地说:不,没有简单的方法来选择这些数字。一切都取决于您的域名和所需的结果。
种群大小可以通过实验相对较快地确定:尝试100,1000,10K,100K和100万。哪一个给你一个更好的结果 - 顺其自然。
世代数是最难确定的。通常在处理开始时改进最佳结果的天空火箭,然后减速几乎停止。通常,这是停止并获取最佳结果或更改某些参数(如突变率)的时间。因此,您需要决定结果何时足够好:通常是花费的时间和改进率之间的平衡。
在我的实验中并经科学文献证实,在处理开始时,建议将突变率降至最低(如0.01%)。一旦您的改进速度减慢,引入更多突变以探索更广泛的解决方案。有一次,我把突变率提高到了荒谬的程度,比如50%。这有助于扰乱系统的稳定状态,但系统恢复到稳定状态非常快,最终结果并没有比“核弹”之前更好。我得出的结论是,最高变异(在我的领域)应该不超过5%,并且只有当改善率几乎为零时才会出现。
希望这对你有所帮助,但你所要求的并不是微不足道的,人们会分别就每个主题撰写论文。我还建议您阅读有关主题的几篇文章 - 这将对您有所帮助。