1704532669
电路设计的进化
1704532670
1704532671
我们把我们这个人工系统的每一次运行视为一个实验。每个实验都从最原始的组件,通常为一个最基本的逻辑门开始行动,让计算机随机地以非循环的方式将几个组件连接在一起,以便生成新的电路。在运行过程中,所用的组件既可以是原始的逻辑门,也可以是用原始的逻辑门构建出来,并已经封装好的其他电路,即将它们视为具有指定的输入和输出引脚的芯片。在表7-1中,我们指定了一组“需求”或者说目标,它们是通过组合可以实现的有用的逻辑函数。这些“需求”类似于现实世界中驱动技术进化的真实需求。在理想的情况下,我们希望这些需求是由那些“居住”在这个人工世界中的行为主体产生的。在这个人工世界里,加法器和比较器等被证明是有用的。但是在这里,我们先不考虑这种复杂情况,而是直接列出了一组有用的逻辑函数。当适当的电路出现后,这些逻辑函数就可以实现了。
1704532672
1704532673
表7-1 需求表
1704532674
1704532675
1704532676
1704532677
1704532678
注:这是对通用的逻辑函数的一些需求(2≤n≤15,1≤k≤8,2≤m≤7)。
1704532679
1704532680
在我们这个人工系统中,既存在对逻辑函数的需求,同时也提供了用来实现它们的手段。采用这样一个人工系统的优点在于,可以容易地对需求和技术进行比对。对特定逻辑函数的每个需求,都可以用特定的真值表来表示:对于每个可能的输入值集合,给出与之相对应的预期输出值的集合。而且,每个创造出来的电路,即每种技术都提供了一个功能,它也可以用真值表来表示:对于提供给输入引脚的每一组二进制值,在输出引脚上产生特定的二进制值。这样一来,我们很容易就可以将实验中的技术与我们的需求表匹配起来。我们完全可以把一种技术的行为、它的真值表视为这种技术的“表型”,而其基因型则是实现这种功能的架构或内部电路。多种不同的基因型可以产生相同的表型。
1704532681
1704532682
因此,我们的计算机模型包括了:一组原始的电路、一组利用原始电路和其他组件构建而成的技术或组件,以及一组有待满足的需求。通常来说,我们只使用一个原始电路,即一个与非门,其表型为¬(x^y)。从根本上看,我们的实验是非常简单的。在每个进化步骤中,都会有新的电路从现有电路中创建出来,方法是根据一个用来指定选择概率的选择函数,从所有先前存在的技术中选出2至12个电路来,随机组合布线。同时,通过以不同顺序选择不同内部布线作为输出引脚,创建出新电路的不同表型。在每一步,都存在一组最能满足所有需求或目标的现有技术。在它们的真值表中,不正确元素的数量最少。因此,以这组现有技术为基准,对于每个候选电路,都可以有针对性地进行测试,以便搞清楚它是否对它们有所改进。改进大体上可以分为两类:第一类是这个候选电路与需求的真值表的匹配更好,第二类是它实现了同样的功能,但是比现有的电路成本更低。电路的成本取决于它的部件的数量和各个部件的成本。在上述两种有所改进的情况下,这个电路不仅会把它直接改进的那个电路替代掉,而且也会替换掉所有以那个电路为组件的电路。然后,这个电路将被封装起来,成为一个新的组件,在进一步的组合中,它可以作为一个构件。依此类推,一系列封装好的技术就被构建出来了。如果找到一个完全满足某种需求的真值表的新技术,那么我们就说这种需要得到了“满足”。当然,新创建的电路不能替代自己的某个组件。有用的组件会被赋予一个名字,如“tech-256”或“全加器-121”,并且可以在更高层次的技术中使用。能够完全、准确地满足某种需求的组件,则赋予一个便于记忆的、可以描述该种需求的名称,如三位加法器。用来实现这些一般算法的详细步骤,以及更多的细节,将在下一节中给出。
1704532683
1704532684
不过,关于这个人工系统与现实世界之间的对应关系,我们还要多说两句。现实世界中的新技术确实是现有技术的组合,但是现在几乎没有任何新技术是通过随机地将原有组件组合起来而发明出来的。但是,我们不难把我们这个进化过程的每一步,都想象为一系列用来深入探究一个新想法的、严格的实验室测试。或者更确切地说,我们可以认为,我们的过程对应于现代组合化学或合成生物学中所运用的那种过程:先以随机组合的方式产生新的功能,然后再对它们的有用性进行检验。在这个过程中,会出现一个不断增大的有用元素库,这些元素可以用于进一步组合。
1704532685
1704532686
更一般地说,我们还可以将这个过程视为一种算法。这种算法不是用来解决特定问题的,而是用来构建一个可以用于进一步组合的、由有用功能构成的“库”。这个算法很好地模拟了现实世界的技术进化过程,即首先构建能够满足简单需求的技术,再以这些技术为构件,一步步地将更加复杂的技术构建出来。
1704532687
1704532689
新技术的涌现
1704532690
1704532691
在我们的基本实验设计中,当经过了25万个进化步骤之后,被发明出来的最复杂的电路如下:
1704532692
1704532693
8路异或、8路与、8路或、3路按位异或、4位等于、3位小于以及4位加法器。
1704532694
1704532695
而在一个更加精简的实验设计中,当经过了25万个进化步骤之后,这个人工系统创造了一个8位加法器。它能够正确地进行8位加法,这并不是一个轻而易举的事情。在基本实验设计中,上述电路被发明出来的顺序在不同的实验中是不同的,而且也不是所有这些电路都一定会在一个实验中进化出来。
1704532696
1704532697
在实验的初期,一些简单的目标得到了实现。从图7-1中,我们可以看出,即便是对于简单的电路,也出现了一些并非显而易见的实现方法。这些电路随后被封装起来以备进一步地使用。
1704532698
1704532699
1704532700
1704532701
1704532702
图7-1 为了实现简单目标而“发明”的两种电路
1704532703
1704532704
随着进化过程的进一步展开,更复杂的电路开始由更简单的电路中被构建出来。如图7-2所示,二位加法器电路的出现,需要利用支持技术TECH-712。而后一种电路正是“中间技术”的一个很好的例子:它对满足二位加法器这个特定目标有用,但是仅凭自身是不能满足这个目标的,因为低阶位输出,即左侧位输出的计算是不正确的。二位加法器的正确电路由TECH-712电路,再加上一个能够修正该误差的电路构成。
1704532705
1704532706
1704532707
1704532708
1704532709
图7-2 利用TECH-712实现“2位加法器”的目标
1704532710
1704532711
因为低阶位在左侧,对于多位加法器,各输入位是交叉的。
1704532712
1704532713
在我们这些进化出来的电路中,还包括了部分未被使用的电路。图7-3右侧所示的三位加法器就是一个例子。在实验过程中,这种“冗余”通常很快会消失,因为成本“不那么昂贵”的电路,很快就会替换掉“不必要地复杂”的电路。
1704532714
1704532715
1704532716
1704532717
[
上一页 ]
[ :1.704532668e+09 ]
[
下一页 ]