【问题标题】:do we have to use encoding algorithm to represent chromosome in genetic algorithm or we can just encode on our own?我们必须使用编码算法来表示遗传算法中的染色体还是我们可以自己编码?
【发布时间】:2018-05-10 04:53:34
【问题描述】:

如果我们有老师作为基因并且有三位老师{harry,sam,bran} 然后我们使用 2 位二进制值并将值分配给教师:

harry=00 sam=01 bran=10

如果我们能做到这一点,那么对于那个未使用的二进制值 11 该怎么办?

【问题讨论】:

  • 您可以有一个“修复功能”,它将不可行的解决方案作为输入并输出一个可行的解决方案。例如,此函数可以用随机选择的 00、01 或 10 替换值 11。
  • 所以如果染色体包含无效组合,我们需要检查新种群中的每条染色体吗?如果存在,用有效的替换它??
  • 如果您想在可行的解决方案空间内工作,可以。否则,您可以选择使用不可行的解决方案,例如,对不可行的染色体进行适应度惩罚。
  • 感谢 Phillippe 提供的时间和解决方案 :)

标签: encoding genetic-algorithm


【解决方案1】:

在实践中,您可以gene % upperBound 在写入到基因型时(以确保所有基因型始终有效)或在读取基因型时(映射任何“原始”基因型转换为有效值)。

在某些类型的evolutionary algorithms 中使用非标准化的“原始”基因型可能是有益的,例如在grammatical evolution

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 2017-10-30
    • 2014-06-08
    • 2021-04-10
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多