如何定义适应度函数?

时间:2011-09-07 07:42:03

标签: artificial-intelligence genetic-algorithm evolutionary-algorithm fitness

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

但是,我并没有找到任何解释如何定义自己的健身功能的网站。我所拥有的只是它是遗传算法的一部分,而这就是我所得到的。那么,我可以在这里给出一些指示吗?

2 个答案:

答案 0 :(得分:16)

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

说明显而易见的是,该功能必须能够衡量结果的好坏程度。特别是,它必须能够在各种数据中保持平滑 - 无论数据如何,您的健身功能都必须显示正确的改进方法。

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

健身功能随着事情的好转而增加,但不能确定最佳解决方案也不是很好,因为你的人口会提高到某一点然后就会卡住。

因此,您需要坐下来,写出一些数据示例,然后考虑一下您可以使用哪种功能。您需要的东西可以为坏数据提供低值,为高数据提供高值。而这在两者之间调整得很好。

尝试一下你能想到的任何疯狂的想法,然后看看你如何把它变成一个好的数学形式。只是头脑风暴并继续尝试和迭代...你可能会发现你的第一选择并不是那么好,一旦你运行GA,你将能够更详细地看看发生了什么并改进它。

答案 1 :(得分:2)

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

正如你所说,健身功能是遗传算法中使用的东西。它在算法的每次迭代中用于评估当前总体中针对您的问题的所有建议解决方案的质量。适应度函数评估群体中单个解决方案的好坏程度,例如,如果你试图通过遗传算法找到一个函数具有y值的x值,那么单位的适应度函数可能只是负y值(适应度函数越高值)。

我基本上试图说,健身功能不会对这些属性进行大量处理,只是评估结果。

如果要选择包含属性的最具代表性的数据样本,您是否还应该研究分类或聚类方法?您没有提供有关所选方案的表示方式的详细信息,但您可能可以对数据进行聚类(您可以尝试k-means聚类算法并尝试增加聚类数量,直到分类错误停止显着下降?)和如果您有方案要求,请选择具有代表性的数据集群?

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

然后,如果你的唯一目标是学习遗传算法或AI /机器学习领域的任何其他部分,你应该完全按照phs的建议去寻找书籍,音频讲座,参加课程或者类似的东西。