【问题标题】:meet -Inf or NaN as the result for genetic algorithm using matlab满足 -Inf 或 NaN 作为使用 matlab 进行遗传算法的结果
【发布时间】:2014-01-08 14:26:05
【问题描述】:

当我使用 matlab ga 工具箱进行最小化时,有时会得到 -Inf 或 NaN 作为目标函数的最终值。但是,如果我使用完全相同的选项设置再次进行优化,我会得到一个有限的答案......谁能告诉我为什么会这样?我该如何解决这个问题?非常感谢!

【问题讨论】:

  • 如果没有看到代码,我们将无法帮助解决 NaN/Inf 问题。调试是一个不错的选择。开始打印每一行,看看哪一个变坏了,然后回溯。

标签: matlab nan genetic-algorithm


【解决方案1】:

ga 的文档和示例对此很不好,几乎没有提到这种方法的随机性(尽管如果你正在使用它,也许你会知道)。如果您希望获得可重复的结果,则在执行随机模拟时应始终指定种子值。这可以通过至少两种方式来完成。你可以使用rng函数:

rng(0);

其中0 是种子值。或者,如果您将优化指定为problem structure,则可以使用'rngstate' 字段。在reproducing results 上查看更多信息。

如果您要进行任何类型的实验,您应该指定一个种子。这样,您可以在必要时重复运行以检查可能发生某些事情的原因或获取更细粒度的数据。如果您想再次运行,只需将种子值更改为另一个正整数即可。

【讨论】:

    【解决方案2】:

    遗传算法是一种随机算法,这意味着它不会在每次运行时探索相同的问题空间。在每次运行时,它都会尝试不同的解决方案,并且偶尔会遇到目标函数表现不佳的解决方案。

    在不了解您的具体问题的情况下,我真正建议的是您仔细查看您的目标函数,看看您是否可以限制它,使其不会爆炸到负无穷大。当你得到这些疯狂的目标值时,看看 GA 返回的解,看看你是否可以调整你的目标函数,使其不会为这些解返回无限值。

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多