我目前正在阅读“人工智能:现代方法”(Russell + Norvig)和“机器学习”(Mitchell) - 并尝试学习AINN的基础知识。
为了理解一些基本的东西,我有两个“新手”问题:
Q1:遗传算法给出了两个父母A和B分别具有染色体001110和101101,以下哪个后代可能是由一点交叉引起的?
a:001101
b:001110
Q2:上述后代中的哪一个可能是由两点交叉导致的?为什么?
请告知。
答案 0 :(得分:7)
如果您不知道逆交叉函数,则无法找到父母(因此AxB =>(a,b)&(any a)=>(A,B))。
通常1点交叉功能是:
a = A1 + B2
b = B1 + A2
即使您知道 a 和 b ,也无法解决系统(2个方程式的系统包含4个变量)。
如果您知道任何A或/和B的任何2个部分,则可以解决(具有2个变量的2个方程的系统)。当您同时提供A和B时,就是您的问题。
通常交叉功能不具有反函数,您只需要逻辑地找到解决方案,或者如果您认识父母,则执行交叉并比较。
因此,要为您制作通用公式,我们应该知道两件事:
第二个通常不用于GA,因为它不是必需的。
现在,我只想回答你的问题。
Q1:在给出的遗传算法中 两个父母A和B同 染色体001110和101101, 分别是以下哪一项 后代可能是由一个人造成的 一点交叉?
查看 a 和 b 我可以看到交叉点在这里:
1 2
A: 00 | 1110
B: 10 | 1101
通常使用此公式:
完成交叉a = A1 + B2
b = B1 + A2
以便可能的孩子:
a: 00 | 1101
b: 10 | 1110
不包括问题中的选项b 所以Q1的答案结果是孩子是:001101假设给出交叉功能
Q2:上述后代中的哪一个可以 是两点造成的 交叉?为什么?
观察a和b我可以看到交叉点可以在这里:
1 2 3
A: 00 | 11 | 10
B: 10 | 11 | 01
2点交叉的常用公式是:
a = A1 + B2 + A3
b = B1 + A2 + B3
所以孩子们会:
a = 00 | 11 | 10
b = 10 | 11 | 01
将它们与您提出的选项(小 a 和 b )进行比较,我们可以说答案:
<强> Q2。答: a 或 b 都不是 AxB 的2点交叉结果给定的交叉功能。
再次不可能在不知道交叉功能的情况下回答您的问题。
我提供的功能在GA中很常见,但你可以发明很多这样的功能,这样他们就可以回答这个问题了(参见下面的评论):
答案 1 :(得分:2)
一点交叉是当你从每个父节点进行一次连接时,两点交叉就是当你进行两次连接时。即两个来自一个父母,一个来自其他父母。
有关详细信息,请参阅crossover(维基百科)。
答案 2 :(得分:2)
关于Q1,(a)可能是由一点交叉产生的,从父A获取0-4位,从父B获取第5位。(b)不能除非你的交叉算法允许空贡献,即空权重的父贡献。在这种情况下,父母A可以贡献其完整的染色体(位0-5),父母B贡献零,产生(b)。
关于Q2,(a)和(b)都是可能的。有几种组合可供测试;写作太繁琐,但你可以用笔和纸做。 : - )