【发布时间】:2017-03-07 12:14:22
【问题描述】:
我熟悉变异技术并在我的项目中实现了一些,但是我从来没有真正知道在实现变异算子时应该变异多少基因。我们以边界突变为例;我们随机选择一个基因并将其替换为该基因的下限或上限。
但是,我不确定我应该只突变 1 个基因,还是突变更多基因。因此,我想到了两种我认为可行的策略:
- 为每个基因分配一个随机概率,以确定是否 基因会发生突变。为每个基因掷骰子,如果出现则对其进行突变 落在概率之内。然后停下来继续下一个 染色体。
- 随机选择一个基因并对其进行突变。然后停下来继续 下一条染色体。
我的方向是否正确?什么时候我应该更喜欢一种策略而不是另一种?还是有另一种方法来确定要突变的基因数量?还是针对特定问题?
【问题讨论】:
-
我现在实际上正在写一个 GA,我选择了选项 1;基本上。选项 2 的问题是你有一个由染色体长度决定的恒定突变率。如果它有 5 个基因长,那么你就有 1/5 的机会发生基因突变。
-
我只是害怕使用选项 1 会导致野生突变而不是细微突变,因为在最坏的情况下所有基因都会发生突变。但是,我只能通过细微的突变来控制四肢。感谢您的意见!
-
我现在使用的突变率大约为 0.1%,因此不太可能发生野生突变。
-
你的意思是你对所有基因使用 0.1% 的概率,它们会发生突变?或者将其用作甚至启动突变程序的概率?然后计算每个基因突变的概率。
-
每个基因有 0.1% 的几率(大约)发生突变。每一代,每条染色体的每个基因都有机会发生突变,我允许突变的基因成为任何可能的基因,而不仅仅是极端。不是说我的方法是正确的,而是我一直在使用的。
标签: genetic-algorithm mutation