基因型表示

在实施遗传算法时,最重要的决定之一是决定我们将使用什么表示来表示我们的解决方案。据观察,不适当的表示会导致 GA 性能不佳。

因此,选择适当的表示,正确定义表型和基因型空间之间的映射对于 GA 的成功至关重要。

在本节中,我们介绍了一些最常用的遗传算法表示。但是,表示与问题高度相关,读者可能会发现这里提到的另一种表示或表示的混合可能更适合他/她的问题。

二进制表示

这是 GA 中最简单和最广泛使用的表示之一。在这种表示类型中,基因型由位串组成。

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

二进制表示

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

实值表示

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

实值表示

整数表示

对于离散值基因,我们不能总是将解决方案空间限制为二进制"是"或"否"。例如,如果我们想要编码四个距离 - 北、南、​​东和西,我们可以将它们编码为{0,1,2,3。在这种情况下,整数表示是理想的。

整数表示

排列表示

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

这种表示的一个典型例子是旅行商问题 (TSP)。在这个问题中,推销员必须走遍所有城市,每个城市只访问一次,然后回到出发城市。必须最小化旅行的总距离。这个 TSP 的解决方案自然是所有城市的排序或排列,因此使用排列表示对这个问题来说是有意义的。

排列表示