我正面临参数选择问题,我想用遗传算法(GA)来解决。我应该从3000个可能的参数中选择不超过4个参数。使用二进制染色体表示似乎是一种自然的选择。评估函数惩罚太多“选定”属性,如果属性数量可接受,则评估选择。
问题在于,在这些稀疏的条件下,遗传算法难以改善人口。几代人的平均健身成本和“最差”个体的适应性都没有提高。我所看到的只是最佳个体得分的微小(甚至微小)改善,我认为这是随机抽样的结果。
使用参数索引编码问题也不起作用。这很可能是因为染色体是定向的,而选择问题不是(即染色体[1,2,3,4]; [4,3,2,1]; [3,2, 4,1]等是相同的)
您建议使用什么问题?
如果这很重要,我会使用PyEvolve。
答案 0 :(得分:2)
我对PyEvolve并不熟悉,但是从我记忆中的遗传算法来看,你关注的是4个步骤,
我认为你可以用列表做到这一点。你需要重载一些运算符,但它看起来像PyEvolve lets you do this一个简单的事情就是保持列表表示,只需在返回染色体之前对它们进行数字排序。
我需要更多地了解您的问题,但这是我的建议。由于您具有可变数量的参数,因此需要为染色体中的参数数量提供某种概率分布。我会假设在1,2,3,4上有一个统一的随机,但如果你更喜欢那么你可以尝试别的东西。我要打电话给这个发行版P_n。
现在,有很多方法可以解决这个问题,那么对你的问题最有意义的是什么。
答案 1 :(得分:0)
我认为,由于参数数量的限制,奇异值分解(http://en.wikipedia.org/wiki/Singular_value_decomposition)可能更合适。