10

我正在开发一个项目,该项目将具有一组选定的数据,并且每个数据将具有不同的属性。我将需要使用适应度函数来使用属性选择与我选择的场景最匹配的数据。

但是,我真的没有找到任何解释如何定义我自己的适应度函数的网站。我所拥有的只是它是遗传算法的一部分,这就是我所拥有的。那么,我可以在这里得到一些指示吗?

4

2 回答 2

16

这是 GA 的难点(嗯,那个和数据表示),实际上你只能通过经验学习。

显而易见,该功能必须是衡量结果有多好的东西。特别是,它必须在广泛的数据中保持平滑 - 无论数据如何,您的适应度函数都必须显示正确的改进方法。

因此,例如,除非答案正确,否则为零的适应度函数是不好的,因为它无法帮助您在开始时接近正确答案。

适应度函数会随着情况的好转而增加,但无法确定最佳解决方案也不是那么好,因为您的人口将提高到某个点然后卡住。

所以你需要坐下来,写出一些你数据的例子,然后想想你可以使用什么样的函数。您想要一些对坏数据给出低值而对好的数据给出高值的东西。这在两者之间可以很好地调整。

尝试任何你能想到的疯狂想法,然后看看你如何把它变成一个很好的数学形式。只需集思广益,继续尝试和迭代……您可能会发现您的第一选择不是那么好,一旦您运行 GA,您将能够更详细地查看正在发生的事情并对其进行改进。

于 2011-09-07T13:38:40.690 回答
2

你确定你需要的实际上是一个健身功能吗?

正如您所说,健身功能是遗传算法中使用的东西。它用于算法的每次迭代,以评估当前人群中针对您的问题提出的所有解决方案的质量。适应度函数评估群体中单个解决方案的好坏程度,例如,如果您尝试使用遗传算法查找函数的 y 最小值的 x 值,则单位的适应度函数可能只是负 y -value(值越小适应度函数越高)。

我基本上想说的是,适应度函数并没有太多地处理属性,只是评估结果。

如果您想选择包含属性的最具代表性的数据样本,也许您还应该研究分类或聚类方法?您没有提供太多信息以何种方式表示所选场景,但也许您可以对数据进行聚类(您可以尝试 k-means 聚类算法并尝试增加聚类数量,直到分类错误不再显着下降?)和比一旦你有场景需求就选择一个有代表性的数据集群?

如果您提供了有关如何根据数据表示表示查询的更多详细信息,您可能会从某人那里得到不同(或更好)的答案。

再说一次,如果你的唯一目标是学习遗传算法或人工智能/机器学习领域的任何其他部分,你应该完全按照 phs 的建议去做,并寻找一本书、音频讲座、为此或类似的课程注册。

于 2011-09-07T10:20:50.103 回答