每个候选解称为染色体。染色体是一串基因,用适应度函数来测量它们的生存能力。染色体可以通过进化来复制自己,交配和突变。
精英主义:候选解决方案组合在一起,在每个迭代算法中产生后代。被称为一代人。后代也可以成为候选解决方案。从父母和孩子,一组适者生存下来,成为在下一代产生后代的父母。
繁殖:通过繁殖,GA通过选择具有较高适应性评级的父母或通过给予这些父母更大的选择概率来促进繁殖过程,从而产生新一代的潜在改进解决方案。
交叉:一串二进制符号(响应决策变量)来表示染色体(潜在解),交叉意味着在字符串中选择一个随机位置,并将该点右侧或左侧的段与另一个字符串的段交换。
突变:是染色体表示的任意(和最小)变化。它通常用于防止算法卡在局部最优状态。该过程随机选择一条染色体(给具有更好适应值的染色体更多的概率),并随机识别染色体中的一个基因并反转其值(从0到1或从1到0),从而为下一代生成一条新染色体。突变的发生通常设定为非常低的概率(0.1%)。
精英主义:遗传算法的一个重要方面是保留一些最好的解决方案,以便在几代人中发展。这样,您就可以保证最终获得该算法当前应用的最佳解决方案。在实践中,一些最佳解决方案将迁移到下一代。
标识包含 6 个二进制数字的字符串
猜一个二进制字符串:001010
默认策略:随机试验和错误。你需要尝试64个猜测,其中一个是你的答案。平均将是32个猜测。
改进策略:遗传算法的使用
以迭代的方式,利用遗传算法过程和遗传算子,找到对手的数字序列
1.展示四个字符串,随机选择。(任意选择四个。通过实验,你可能会发现五六个会更好。假设您选择了以下四个:
(A) 110100;分数 = 1(即,正确猜测的一位数字)
(B)111101;分数 = 1
(C)011011;得分 = 4
(D) 101100;得分 = 3
2. 由于没有一个字符串是完全正确的,请继续。
3.但是,我们可以删除(A)和(B),因为它们的分数很低。保留 C 和 D 并命名 (C) 和 (D) 父项。
4.通过在第二位和第三位数字之间拆分每个数字来“配对”父母(拆分的位置是随机选择的):
(C) 01:1011
(D) 10:1100
现在将 (C) 的前两位数字与 (D) 的最后四位数字组合在一起(这称为交叉)。结果是(E),第一个后代:
(E) 011100;得分 = 3
同样,将 (D) 的前两位数字与 (C) 的最后四位数字组合在一起。结果是(F),第二个后代:
(F) 101011;得分 = 4
看起来后代并不比父母好多少。
5. 现在复制原件(C)和(D)。
6.配对和交叉新父母,但使用不同的分割。现在你有两个新的后代,(G)和(H):
(C) 0110:11
(D) 1011:00
(G) 0110:00;得分 = 4
(H) 1011:11;得分 = 3
接下来,重复步骤2:从所有先前的解决方案中选择要重现的最佳“耦合”。
您有几个选项,例如 (G) 和 (C)。选择 (G) 和 (F)。
现在复制和交叉。结果如下:
(F) 1:01011
(G) 0:11000
(I) 111000;得分 = 3
(J) 001011;得分 = 5
生成更多后代:
(F) 101:011
(G) 011:000
(K) 101000;得分 = 4
(L) 011011;得分 = 4
现在,以 (J) 和 (K) 作为父级重复这些过程,并复制交叉:
(J) 00101:1
(K) 10100:0
(M) 001010;得分 = 6
就是这样!经过13次猜测,您已经找到了解决方案。与随机猜测策略的预期平均值32相比,这并不坏。