因此,如果我有一个x整数列表,那么改变该列表的最佳方法是什么?
执行此操作的方法是选择一个随机整数并更改它但我怀疑如果必须更改2个或更多元素以获得更好的结果,这会导致问题。
那么最好的方法是什么?生成一个新的随机列表?改变元素的随机数?也许是另一种方式?
答案 0 :(得分:0)
首先,这可能稍微偏离主题,你应该注意一些交叉操作可能会引入突变作为副作用。例如,假设您使用二进制编码并且解决方案的某些离散元素E使用多个位编码,那么如果交叉点位于E的二进制表示的中间,则生成的子级很可能具有其E元素与父母的E元素不同。
在您的情况下,我建议您改变列表中某个百分比的元素。这个百分比不需要修复,如果不是这样可能会更好(例如,你可以选择在整数的1%到3%之间进行变异,随机选择)。
如果您使用二进制编码,请查看Gray code,如果您希望您的孩子的突变更“本地”(即,更接近父母的邻居),这可能会很有趣。
答案 1 :(得分:0)
没有最佳/最佳方式。你的所有建议似乎都很好。尝试每一个,看看哪个最好。
重要的(并且经常被忽略)是定义“更好的表现”意味着什么。采用这种方法可以帮助您调整参数(例如变异率)。通常,表现是某种形式的适应度收敛率。祝好运!