Encoding 在遗传算法中编码为位字符串有什么帮助?

Encoding 在遗传算法中编码为位字符串有什么帮助?,encoding,genetic-algorithm,bitstring,Encoding,Genetic Algorithm,Bitstring,假设我们必须解决一个全局优化问题,其中我们必须找到5个变量的值,所有变量都是整数。假设我们有两条父染色体 家长1:6,10,3,5,12 家长2:12,10,3,8,11 如果我们在前两个元素之后进行交叉,我们会得到以下结果 孩子1:6,10,3,8,11 孩子2:12,10,3,5,12 在这里我们可以清楚地看到孩子们与父母有着千丝万缕的联系 但当我们编码为比特串时,每个染色体都被编码为一个比特串,我们可以随机选择任何交叉点。我不认为这比完全随机挑选任何试验解决方案更有益处 我有一个关于突变的

假设我们必须解决一个全局优化问题,其中我们必须找到5个变量的值,所有变量都是整数。假设我们有两条父染色体

家长1:6,10,3,5,12

家长2:12,10,3,8,11

如果我们在前两个元素之后进行交叉,我们会得到以下结果

孩子1:6,10,3,8,11

孩子2:12,10,3,5,12

在这里我们可以清楚地看到孩子们与父母有着千丝万缕的联系

但当我们编码为比特串时,每个染色体都被编码为一个比特串,我们可以随机选择任何交叉点。我不认为这比完全随机挑选任何试验解决方案更有益处


我有一个关于突变的类似问题。我们随机翻转一点。如果翻转的位具有较小的位置值,则更改将很小。但如果它有一个大的位置值,变化将是巨大的。这比完全随机改变染色体更好吗?

二进制编码仍然很常见,主要是因为关于遗传算法的第一部作品使用了这种编码

此外,它通常节省空间:
[6,10,3,5,12]
表示为整数序列可能需要
5*32
位;对于位字符串表示,
5*4
位就足够了(假设数字在
[0;15]
范围内)

在这方面,对于位字符串表示(每个位表示对应的对象是否在背包中)来说,是最好的情况

我们可以随机选择任何交叉点。我不认为这比完全随机挑选任何试验解决方案更有益处

一般来说,在一个数字中间选择一个交叉点引入一个具有破坏性(负)效应的数字的本质上任意的变异。 在《人工智能-现代方法》的“局部搜索算法和优化问题-遗传算法”一节中有一个很好的例子(Russel,Norvig)


再看看a。

你说得对。转换为位字符串通常没有帮助。有时候没关系。基本上不是。