提交 90a877b1 编写于 作者: W wizardforcel

9

上级 d1855b61
# 九、基于智能体的模型
> 原文:[Chapter 9 Agent-based models](http://greenteapress.com/complexity2/html/thinkcomplexity2010.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
我们迄今为止看到的模型可能具有“基于规则”的特征,因为它们涉及受简单规则支配的系统。 在本章和以后的章节中,我们将探索基于智能体(agent)的模型。
基于智能体的模型包含智能体,它旨在模拟人和其他实体,它们收集世界的信息,制定决策并采取行动。
......@@ -248,7 +256,7 @@ np.sum(frac_same) / np.sum(occupied)
## 9.6 实现糖域
糖域比以前的模型更复杂,所以我不会在这里介绍整个实现。 我将概述代码的结构,可以在 Jupyter 笔记本`chap09.ipynb`中查看本章的细节,它位于本书的仓库中。 如果你对细节不感兴趣,你可以跳到下一节。
糖域比以前的模型更复杂,所以我不会在这里介绍整个实现。 我将概述代码的结构,可以在 Jupyter 笔记本`chap09.ipynb`中查看本章的细节,它位于本书的仓库中。 如果你对细节不感兴趣,你可以跳到下一节。
以下是带有`step`方法的`Agent`类:
......@@ -304,7 +312,7 @@ class Sugarscape(Cell2D):
在每个步骤中,`Sugarscape`以随机顺序遍历智能体。 它调用每个智能体的`step`,然后检查它是否已经死亡。 所有智能体都移动后,一些糖会恢复。
如果您有兴趣更加了解 NumPy ,您可能需要仔细看看`make_visible_locs`,它构建一个数组,其中每行包含智能体可见的细胞坐标,按距离排序,但距离相同的细胞 是随机顺序。
如果你有兴趣更加了解 NumPy ,你可能需要仔细看看`make_visible_locs`,它构建一个数组,其中每行包含智能体可见的细胞坐标,按距离排序,但距离相同的细胞 是随机顺序。
你可能想看看`Sugarscape.make_capacity`,它初始化细胞的容量。 它演示了`np.meshgrid`的使用,这通常很有用,但需要一些时间才能理解。
......@@ -322,9 +330,72 @@ class Sugarscape(Cell2D):
结果是一系列离散的迁移波,每个波都像一个连贯的物体,就像我们在规则 110 CA 和生命游戏中看到的飞船(参见第?节)。
图?显示了初始条件下(左),6 个步骤(中)和 12 个步骤(右)之后的模型状态。 你可以看到,前两个波到达并穿过第二个山峰,留下了一串空细胞。 还可以看到这个模型的动画版本,其中波形更清晰可见。
图?显示了初始条件下(左),6 个步骤(中)和 12 个步骤(右)之后的模型状态。 你可以看到,前两个波到达并穿过第二个山峰,留下了一串空细胞。 还可以看到这个模型的动画版本,其中波形更清晰可见。
虽然这些波动由智能体组成,但我们可以将他们视为自己的实体,就像我们在“生命游戏”中想到的滑翔机一样。
这些波动的一个有趣的属性是,它们沿对角线移动,这可能是令人惊讶的,因为这些智能体本身只是向北或向东移动,从不向东北方移动。 像这样的结果 - 团队或“集合”拥有智能体没有的属性和行为 - 在基于智能体的模型中很常见。 我们将在下一章看到更多的例子。
## 9.8 涌现
本章中的例子展示了复杂性科学中最重要的想法之一:涌现。 涌现性是系统的一个特征,由它的成分相互作用而产生,而不是它们的属性。
为了澄清什么是涌现,考虑它不是什么会有帮助。 例如,砖墙很硬,因为砖和砂浆很硬,所以这不是涌现。 再举一个例子,一些刚性结构是由柔性部件构成的,所以这看起来像是一种涌现。 但它至多是一种弱例,因为结构特性遵循已知的力学定律。
相反,我们在谢林模型中看到的隔离是一种涌现,因为它不是由种族主义智能体造成的。 即使智能体只是轻微排外,系统的结果与智能体的决策意图有很大不同。
糖域中的财富分配可能是涌现,但它是一个弱例,因为我们可以根据视力,代谢和寿命的分布合理预测它。 我们在最后一个例子中看到的波动行为可能是一个更强的例子,因为波动显示出智能体显然没有的能力 - 对角线运动。
涌现性令人惊讶:即使我们知道所有规则,也很难预测系统的行为。难度不是偶然的;事实上,它可能是涌现的决定性特征。
正如沃尔夫勒姆在“新科学”中所讨论的那样,传统科学是基于这样的公理:如果你知道管理系统的规则,那么你可以预测它的行为。 我们所谓的“法律”通常是计算的捷径,它使我们能够预测系统的结果而不用建立或观察它。
但是许多细胞自动机在计算上是不可减少的,这意味着没有捷径。 获得结果的唯一方法是实现该系统。
一般而言,复杂系统可能也是如此。 对于具有多个成分的物理系统,通常没有产生解析解的模型。 数值方法提供了一种计算捷径,但仍存在质的差异。
解析解通常提供用于预测的恒定时间算法;也就是说,计算的运行时间不取决于预测的时间尺度`t`。 但数值方法,模拟,模拟计算和类似方法需要的时间与`t`成正比。 对于许多系统来说,我们无法计算出可靠的预测。
这些观察表明,涌现性基本上是不可预测的,对于复杂系统我们不应该期望,通过计算捷径来找到自然规律。
对某些人来说,“涌现”是无知的另一个名字; 根据这种思维,如果我们针对它没有还原论的解释,那么这个属性就是涌现的,但如果我们在将来更好地理解它,它就不再是涌现的。
涌现性的状况是有争议的话题,所以对此持怀疑态度是恰当的。 当我们看到明显的涌现性时,我们不应该假设永远不会有还原论解释。但我们也不应该假设必须有。
本书中的例子和计算等价原理提供了很好的理由,认为至少有些涌现性永远不会被古典还原论模型“解释”。
你可以在这里更加了解涌现:<http://en.wikipedia.org/wiki/Emergence>
## 9.9 练习
练习 1
本章的代码位于本书仓库的 Jupyter 笔记本`chap09.ipynb`中。打开这个笔记本,阅读代码,然后运行单元格。你可以使用这个笔记本来练习本章的练习。我的解决方案在`chap09soln.ipynb`中。
练习 2
《The Big Sort》的作者 Bill Bishop 认为,美国社会越来越由政见所隔离,因为人们选择生活在志趣相投的邻居之中。
Bishop 所假设的机制并不是像谢林模型中的智能体那样,如果他们是孤立的,他们更有可能移动,但是当他们出于任何原因移动时,他们可能会选择一个社区,其中的人与他们自己一样。
修改谢林模型的实现来模拟这种行为,看看它是否会产生类似程度的隔离。
有几种方法可以模拟 Bishop 的假设。在我的实现中,随机选择的智能体会在每个步骤中移动。每个智能体考虑`k`个随机选择的空位置,并选择相似邻居的比例最高的位置。隔离程度和`k`有什么关系?
练习 3
在糖域的第一个版本中,我们从不添加智能体,所以一旦人口下降,它就不会恢复。 在第二个版本中,我们只是在智能体死亡时才取代,所以人口是不变的。 现在让我们看看如果我们增加一些“人口压力”会发生什么。
编写糖域的一个版本,在每一步结束时添加一个新的智能体。 添加代码来计算每个步骤结束时,智能体的平均视力和平均消耗。 运行模型几百步,绘制人口,平均视力和平均消耗随时间的变化。
你应该能够通过继承`SugarScape`并覆盖`__init__``step`来实现这个模型。
练习 4
在心灵哲学中,强人工智能是这样的理论,即受到适当编程的计算机可以拥有思想,与人类拥有的思想相同。
约翰·塞尔(John Searle)提出了一个名为“中文房间”的思想实验,旨在表明强 AI 是虚假的。 你可以在 <http://en.wikipedia.org/wiki/Chinese_room> 上阅读。
对中文房间的论述的系统回复是什么? 你对涌现的认识如何影响你对系统回复的反应?
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册