【发布时间】:2018-07-11 23:09:24
【问题描述】:
如果我有一个 x 整数列表,那么改变该列表的最佳方法是什么?
一种方法是选择一个随机整数并更改它,但我怀疑如果必须更改 2 个或更多元素才能获得更好的结果,这会导致问题。
那么最好的方法是什么?生成一个新的随机列表?改变随机数量的元素?也许是另一种方式?
【问题讨论】:
标签: genetic-algorithm mutation dplyr
如果我有一个 x 整数列表,那么改变该列表的最佳方法是什么?
一种方法是选择一个随机整数并更改它,但我怀疑如果必须更改 2 个或更多元素才能获得更好的结果,这会导致问题。
那么最好的方法是什么?生成一个新的随机列表?改变随机数量的元素?也许是另一种方式?
【问题讨论】:
标签: genetic-algorithm mutation dplyr
首先,这可能有点偏离主题,您应该注意一些交叉操作可能会引入突变作为副作用。例如,假设您使用二进制编码并且解决方案的某些离散元素 E 使用多个位进行编码,那么如果交叉点位于 E 的二进制表示的中间,则生成的子元素很可能具有其 E 元素与父母的E元素不同。
在您的情况下,我建议您对列表中一定比例的元素进行变异。这个百分比不需要固定,如果不固定可能会更好(例如,您可以选择在 1% 到 3% 的整数之间进行变异,随机选择)。
如果您使用二进制编码,请查看Gray code,如果您希望您的孩子的突变更“本地化”(即,更靠近他们父母的社区),这可能会很有趣。
【讨论】:
没有最好/最优的方法。你所有的建议似乎都不错。尝试每一个,看看哪个效果最好。
定义“更好的性能”意味着什么是重要的(并且经常被忽略)。拥有此度量将帮助您调整参数(例如突变率)。通常,性能是某种形式的适应度收敛速度。祝你好运!
【讨论】: