什么是遗传算法上下文中的陷阱函数?

人工智能 定义 遗传算法 进化算法 陷阱函数
2021-11-13 05:15:07

什么是遗传算法上下文中的陷阱函数?它与局部最优和全局最优的概念有什么关系?

2个回答

引入“陷阱”函数是为了讨论 GA 在函数上的行为方式,其中对大部分搜索空间进行采样会为算法提供压力,使其朝错误的方向移动(在远离全局最优的意义上是错误的)。

例如,考虑一个四位函数 f(x),使得

f(0000) = 5
f(0001) = 1
f(0010) = 1
f(0011) = 2
f(0100) = 1
f(0101) = 2
f(0110) = 2
f(0111) = 3
f(1000) = 1
f(1001) = 2
f(1010) = 2
f(1011) = 3
f(1100) = 2
f(1101) = 3
f(1110) = 3
f(1111) = 4

即一个字符串的适应度等于字符串中1的个数,除了f(0000)为5,即最优解。这个函数可以被认为由两个不相交的部分组成:一个包含全局最优 (0000),另一个包含局部最优 (1111)。除了这些之外的所有点都具有适应值,因此标准进化算法动力学将导致算法趋向于 1111 处的局部最优而不是 0000 处的全局最优。

这基本上就是陷阱函数的含义。你可以考虑这个主题的变化,但这就是它的要点。

这个答案已经给出了陷阱函数(有时称为欺骗函数)是什么的概念。然而,鉴于文献中关于陷阱函数的工作并不丰富(至少我的一本参考书没有广泛涉及这个主题,即本书,第 211 页,练习 11.7,只提到了一个特定的欺骗函数,但是没有定义陷阱函数是什么),让我也为您提供一些参考,以防您正在寻找更多细节和公式。

Evolutionary Computation 1: Basic Algorithms and Operators一书也多次提到欺骗函数和欺骗问题。此外,Python 包GA_kit包含一个用于评估具有欺骗性功能的 GA 的模块,以防您通过查看或玩代码来了解更多信息。