遗传算法的理论问题

时间:2009-12-09 00:17:46

标签: artificial-intelligence machine-learning genetic-algorithm

我目前正在阅读“人工智能:现代方法”(Russell + Norvig)和“机器学习”(Mitchell) - 并尝试学习AINN的基础知识。

为了理解一些基本的东西,我有两个“新手”问题:

Q1:遗传算法给出了两个父母A和B分别具有染色体001110和101101,以下哪个后代可能是由一点交叉引起的?

a:001101

b:001110

Q2:上述后代中的哪一个可能是由两点交叉导致的?为什么?

请告知。

3 个答案:

答案 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时,就是您的问题。

通常交叉功能不具有反函数,您只需要逻辑地找到解决方案,或者如果您认识父母,则执行交叉并比较

因此,要为您制作通用公式,我们应该知道两件事:

  1. 交叉功能。
  2. 反交叉功能。
  3. 第二个通常不用于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)都是可能的。有几种组合可供测试;写作太繁琐,但你可以用笔和纸做。 : - )