提交 b68f74f3 编写于 作者: W wizardforcel

11.

上级 7519a84d
......@@ -325,3 +325,53 @@ class Mutant(Agent):
平衡中的占用位置的数量,取决于突变率和生存差异的程度。 在这些模拟中,任何点处的独特占用位置的数量通常为 10-20。
重要的是要记住,这个模型中的智能体不会移动,就像生物体的基因型没有改变一样。 当智能体死亡时,它可能会留下一个空位。 当发生突变时,它可以占据一个新的位置。 当智能体从某些地方消失并出现在其他地方时,种群会在景观中移动,就像生命游戏中的滑翔机一样。 但生命体不会进化;但种群可以。
## 11.9 物种形成
进化论说,自然选择改变了现有的物种并创造了新的物种。 在我们的模型中,我们看到了变化,但我们并没有看到新的物种。 在模型中,还不清楚新物种是什么样。
在有性繁殖的物种中,如果两种生物能够繁殖并产生丰富的后代,则被视为同一物种。 但是模型中的智能体不会再现性行为,所以这个定义不适用。
在无性繁殖的生物中,如细菌,物种的定义并不明确。 一般来说,如果一个种群的基因型形成一个簇,那么它就被认为是一个物种,也就是说,如果种群内的遗传差异比种群间的差异小。
在我们可以对新物种建模之前,我们需要能够识别景观中的智能体簇,这意味着我们需要定义位置之间的距离。 由于位置是用二进制数字串表示的,因此我们将距离定义为基因型中不同的位数。 `FitnessLandscape`提供了`distance `方法:
```py
# class FitnessLandscape
def distance(self, loc1, loc2):
return np.sum(np.logical_xor(loc1, loc2))
```
![](img/11-5.png)
图 11.5:智能体随时间变化的平均距离
`logical_xor`函数计算“异或”,不同的元素为`True`,相同的元素为`False`
为了量化种群的分散,我们可以计算每对智能体之间距离的平均值。 在本章的笔记本中,您会看到`MeanDistance`仪器,它会在每个时间步骤后计算这个度量。
图? 展示了智能体随时间的平均距离。 因为我们从相同的突变开始,所以初始距离为 0。随着突变的发生,平均距离增加,在种群遍布景观时达到最大值。
一旦智能体发现最佳位置,平均距离就会减小,直到种群达到平衡,由于突变引起的距离增加通过距离的减小而平衡,因为远离最佳位置的智能体更有可能死亡。 在这些模拟中,平衡时的平均距离接近 1.5;也就是说,大多数智能体距离最佳位置只有 1-2 个突变。
现在我们准备寻找新的物种。 为了模拟一种简单的物种形成,假设一个种群在不变的环境中演化,直到它达到稳定状态(就像我们在自然界发现的一些物种,似乎在很长一段时间内变化很小)。
现在假设我们改变环境,或者将种群转移到新的环境中。 一些旧环境中适应性较高的特性,可能会在新环境中适应性较低,反之亦然。
我们可以通过运行模拟来模拟这些情景,直到种群达到稳定状态,然后改变适应性景观,然后恢复模拟,直到种群再次达到稳定状态。
![](img/11-6.png)
图 11.6:随时间变化的适应性均值。在 500 步之后,我们改变了适应性景观
图?展示了这样的模拟结果。 再次,我们从随机位置开始,使用 100 个相同的突变体,并运行 500 个时间步骤的模拟。 在这个时候,许多智能体处于最佳位置,在这个例子中,其适应性接近 0.65。 智能体的基因型形成一个簇,智能体之间的平均距离接近 1。
经过 500 步之后,我们运行`FitnessLandscape.set_values`,这改变了适应性景观; 然后我们恢复模拟。 平均适应性会立即下降,因为旧景观中的最佳位置并不比新景观中的随机位置好。
然而,当种群迁移到新景观时,平均适应性会迅速增加,最终会找到新的最佳值,其适应度接近 0.75(在这个例子中恰好更高,但不一定是)。
一旦种群达到稳定状态,它就会形成一个新的簇,智能体之间的平均距离再次接近 1。
现在,如果我们计算智能体之前和之后的位置之间的距离,平均而言,它们相差超过 6。 簇之间的距离远大于每个簇内的距离,因此我们可以将这些簇解释为不同的物种。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册