基因型表征


实现遗传算法时要做的最重要的决定之一是决定我们将用来表示解决方案的表示形式。据观察,不正确的表示会导致遗传算法的性能不佳。

因此,选择正确的表示形式,对表型和基因型空间之间的映射进行正确的定义对于遗传算法的成功至关重要。

在本节中,我们将介绍一些最常用的遗传算法表示形式。然而,表示是高度特定于问题的,读者可能会发现另一种表示或此处提到的表示的混合可能更适合他/她的问题。

二进制表示

这是遗传算法中最简单且使用最广泛的表示形式之一。在这种类型的表示中,基因型由位串组成。

对于某些问题,当解空间由布尔决策变量(是或否)组成时,二进制表示是自然的。以 0/1 背包问题为例。如果有 n 个项目,我们可以用 n 个元素的二进制字符串表示解决方案,其中第 x元素表示项目 x 是否被选中 (1) 或未被选中 (0)。

二进制表示

对于其他问题,特别是那些处理数字的问题,我们可以用二进制表示形式来表示数字。这种编码的问题在于不同的位具有不同的意义,因此变异和交叉运算符可能会产生不良后果。使用格雷编码可以在一定程度上解决这个问题因为一位的变化不会对解决方案产生巨大影响。

真实价值代表

对于我们想要使用连续变量而不是离散变量定义基因的问题,实值表示是最自然的。然而,这些实数值或浮点数的精度仅限于计算机。

真实价值代表

整数表示

对于离散值基因,我们不能总是将解空间限制为二元“是”或“否”。例如,如果我们想对四个距离——北、南、东、西进行编码,我们可以将它们编码为{0,1,2,3}。在这种情况下,需要整数表示。

整数表示

排列表示

在许多问题中,解决方案由元素的顺序表示。在这种情况下,排列表示是最合适的。

这种表示的一个典型例子是旅行商问题(TSP)。在这种情况下,推销员必须游览所有城市,每个城市恰好访问一次,然后返回起始城市。旅行的总距离必须最小化。这个 TSP 的解决方案自然是对所有城市进行排序或排列,因此使用排列表示对于这个问题是有意义的。

排列表示