【问题标题】:Genetic algorithms-Java- Schema Theory遗传算法-Java-模式理论
【发布时间】:2011-07-19 21:05:12
【问题描述】:

嗨 我一直在阅读模式理论,虽然我确实理解它背后的理论,但我很难理解如何在我的遗传算法 java 代码中实现它。有没有人有这个的伪代码?我应该定义四个对我的程序的适应度函数特别感兴趣的模式(例如,1*···* 和 0*···*)。 我不知道该怎么做。

问题

使用适应度比例选择、轮盘赌抽样、种群大小 100、单点交叉率 pc = 0.7 和按位突变率 pm = 0.001 实现一个简单的 GA。试试下面的适应度函数:ƒ(x) = x 中的个数,其中 x 是长度为 20 的染色体。(我已经编码了这部分)

基于 GA 中的代码但在一个单独的文件中,定义对上述问题 1 的适应度函数特别感兴趣的四个模式(例如,1*···* 和 0*···*)。像问题 1 一样重新运行 GA(使用相同的参数),并在每一代记录每个模式的种群中有多少实例

【问题讨论】:

  • 删除了 java 标签,因为它与语言无关

标签: schema theory genetic-algorithm


【解决方案1】:

模式本质上是一种带有一些通配符的基因型。所以模式 01** 可以指代基因型 0100、0101、0110 或 0111。

问题是要求您为单数适应度函数提出四个相关模式。因此,您有兴趣了解在 GA 运行过程中,1 的数量如何增加 - 您的第一个模式可能只有几个,其余的则作为通配符。然后,您可以通过将其中一些通配符替换为更多通配符来形成其他模式。

然后它要求您计算每一代人口中有多少人与这些模式中的每一个匹配 - 所以如果您的模式是 11111***************,那么您d 计算有多少人在前 5 位中有 1。

【讨论】:

  • 谢谢,我已经实现了四个模式并记录了每一代的实例。根据我的结果,我将使用哪个公式来决定我是否同意模式理论?
【解决方案2】:

Jivlain 的回答非常明确,但如果您想了解更多关于该主题的信息,Goldberg 的 Genetic Algorithms in Search, Optimization, and Machine Learning 详尽地涵盖了模式理论以及如何识别给定域的模式(带有示例)。

【讨论】:

    【解决方案3】:

    我已经在遗传算法中进行了广泛的编码,如果您可以准确地回答您的问题,那么您也许可以除了准确的答案之外......此外,为了更好地理解图式理论,请参阅 Melanie Mitchell 在 GA 上的书。它以非常清晰的方式给出。

    AViD

    【讨论】:

    • 我已经添加了上面的完整问题,设法完成了第一部分(简单 GA),但不知道如何完成架构部分。将搜索您提到的书。
    猜你喜欢
    • 2010-12-24
    • 2014-01-23
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 2012-07-07
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多