【发布时间】:2016-11-04 20:30:03
【问题描述】:
我有一个关于遗传算法变异的抽象问题。我不包含任何代码 sn-p 来独立于编码环境提出我的问题。
我正在编写遗传算法代码,但我不知道如何实现变异。假设将要发生突变的后代是一个字符串,如 10110011110101000111,长度为 20。
必须以非常小的概率进行突变,例如 0.001。我们产生一个介于 0 和 1 之间的随机数,并据此决定后代是否应该突变。我的问题是我们必须生成 20 个随机数并为这个后代的每 20 位做出关于突变的决定?还是我们只需要为整个后代生成 1 个随机数并随机切换一下?
也就是说后代中的每一位都有机会根据生成的随机数发生变异还是只有一个位有变异的机会?
【问题讨论】:
-
这取决于。是任何突变的概率还是每个突变的概率?
-
这是一个设计选择。一个可能会胜过另一个。
-
亲爱的 jonrsharpe 我没有完全理解您的问题,但为了您的信息,我将突变率设置为 0.001 。我在 for 循环中生成一个随机数,如果生成的随机数低于此突变率,则切换位。这意味着所有位都有变异的机会。
-
两种选择都可以。使用效果最好的那个。
-
@MohammadAsasi 我投票结束这个问题过于宽泛,没有指定问题域、编码含义和概率 对于每个事件,您的问题都没有特定的答案。您在遗传算法中所做的工作很大程度上取决于这些元素,而您没有提供任何元素。
标签: genetic-algorithm mutation