使用matlab进行遗传算法的结果是-Inf或NaN

问题描述 投票:1回答:2

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

matlab nan genetic-algorithm
2个回答
2
投票

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

rng(0);

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

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


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.