描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111740117
编辑推荐
本书全面介绍了基于agent的系统仿真模型的核心概念、方法及应用,可帮助求解复杂问题
内容简介
本书系统介绍了基于agent的系统仿真,并使用仿真软件NetLogo进行实践,通过大量的案例,使读者全面学习和快速掌握基于agent的建模技术。
目 录
译者序
前言
第0章 为什么需要基于agent的建模技术 1
0.1 一个思维实验 2
0.2 复杂系统与涌现 4
0.3 理解复杂系统和涌现 5
例1:群体考量 6
例2:个体考量 6
0.4 使用基于agent的建模作为重构的代表性基础架构 9
案例:捕食者–猎物互动模型 10
案例:森林火灾 12
第1章 什么是基于agent的建模技术 15
1.1 蚁群 15
1.1.1 创建蚂蚁觅食模型 16
1.1.2 Ants模型的仿真结果及观测 19
1.1.3 Ants模型的价值 20
1.2 什么是基于agent的建模技术 22
1.2.1 基于agent的模型与其他建模方法之比较 22
1.2.2 随机性与确定性 24
1.2.3 何时使用ABM最有效 24
1.2.4 ABM的权衡 26
1.2.5 理解ABM需要具备哪些知识 27
1.3 本章小结 27
习题 28
第2章 创建几个简单的ABM模型 31
2.1 Game of Life模型 31
2.2 Heroes and Cowards模型 46
2.3 Simple Economy模型 58
2.4 本章小结 65
习题 66
第3章 探索和扩展基于agent的模型 68
3.1 Fire模型 69
3.1.1 Fire模型介绍 70
3.1.2 第一次扩展:增加一个火焰的传播概率 75
3.1.3 第二次扩展:添加风的因素 77
3.1.4 第三次扩展:允许火焰远程传播 79
3.1.5 Fire模型小结 80
3.1.6 高级建模应用 80
3.2 DLA模型 81
3.2.1 DLA模型概述 82
3.2.2 第一次扩展:引入概率 83
3.2.3 第二次扩展:邻居的影响 84
3.2.4 第三次扩展:不同的聚合方式 86
3.2.5 DLA模型小结 88
3.2.6 高级建模应用 88
3.3 Segregation模型 89
3.3.1 Segregation模型概述 90
3.3.2 第一次扩展:增加更多种群 92
3.3.3 第二次扩展:允许使用多个阈值 94
3.3.4 第三次扩展:增加热衷于社区多元化的个体 96
3.3.5 Segregation模型小结 97
3.3.6 高级城市建模应用 97
3.4 El Farol模型 98
3.4.1 El Farol模型概述 98
3.4.2 第一次扩展:为做出成功
预测的agent标记颜色 99
3.4.3 第二次扩展:显示平均、最低和最高奖励值 101
3.4.4 第三次扩展:绘制奖励直方图 102
3.4.5 El Farol模型小结 104
3.4.6 高级建模应用 104
3.5 本章小结 106
习题 106
第4章 创建基于agent的模型 110
4.1 设计模型 111
4.1.1 选择待研究的问题 113
4.1.2 一个具体的例子 114
4.2 选择你的agent 115
4.2.1 选择agent的属性 116
4.2.2 筛选agent的行为 117
4.2.3 选择模型的参数 118
4.2.4 Wolf Sheep Simple模型
设计小结 119
4.3 检查模型 134
4.4 Predator–Prey模型:补充情境 136
4.5 本章小结 139
习题 139
第5章 ABM的组件 142
5.1 概述 142
5.2 agent 143
5.2.1 属性 144
5.2.2 行为(活动) 146
5.2.3 agent种类大全 147
5.2.4 agent的粒度 156
5.2.5 agent认知 158
5.2.6 其他agent种类 163
5.3 环境 165
5.3.1 空间环境 165
5.3.2 基于网络的环境 169
5.3.3 几类特殊的环境 174
5.4 行为交互 180
5.5 观察者/用户界面 184
5.6 时间进度表 188
5.7 整合 190
5.8 本章小结 193
习题 193
第6章 分析ABM模型 198
6.1 度量类型 198
6.2 疾病的传播建模 198
6.2.1 ABM的统计分析:超越原始数据 200
6.2.2 多次运行ABM的必要性 202
6.2.3 在ABM中使用图检验结果 206
6.2.4 在ABM中分析网络 208
6.2.5 环境数据和ABM 211
6.3 本章小结 214
习题 215
第7章 模型的校核、验证与复现 218
7.1 模型的正确性 218
7.2 校核 218
7.2.1 沟通 219
7.2.2 描述概念模型 220
7.2.3 校核测试 221
7.2.4 超越“校核” 223
7.2.5 敏感性分析与稳健性评价 226
7.2.6 校核的益处与问题 228
7.3 验证 228
7.3.1 宏观验证和微观验证 231
7.3.2 表面验证和经验验证 232
7.3.3 验证的优点和问题 235
7.4 复现 235
7.4.1 计算模型的复现:维度与标准 236
7.4.2 复现的优点 238
7.4.3 对模型复现者的建议 239
7.4.4 对模型作者的建议 241
7.5 本章小结 242
习题 242
第8章 高级主题与应用 245
8.1 ABM中的高级主题 245
8.1.1 模型设计的指导方针 246
8.1.2 规则提取 249
8.1.3 使用ABM进行沟通、说服和教育 258
8.1.4 人类agent、嵌入式agent和虚拟agent通过“中介”进行对话 260
8.1.5 混合计算方法 269
8.1.6 NetLogo中的一些高级计算方法 273
8.1.7 ABM扩展 281
8.1.8 高级数据源与数据输出集成 282
8.1.9 运行速度 295
8.2 ABM应用 296
8.3 ABM的未来 299
习题 299
附录 ABM的计算基础 304
参考文献 315
软件与模型 326
前言
第0章 为什么需要基于agent的建模技术 1
0.1 一个思维实验 2
0.2 复杂系统与涌现 4
0.3 理解复杂系统和涌现 5
例1:群体考量 6
例2:个体考量 6
0.4 使用基于agent的建模作为重构的代表性基础架构 9
案例:捕食者–猎物互动模型 10
案例:森林火灾 12
第1章 什么是基于agent的建模技术 15
1.1 蚁群 15
1.1.1 创建蚂蚁觅食模型 16
1.1.2 Ants模型的仿真结果及观测 19
1.1.3 Ants模型的价值 20
1.2 什么是基于agent的建模技术 22
1.2.1 基于agent的模型与其他建模方法之比较 22
1.2.2 随机性与确定性 24
1.2.3 何时使用ABM最有效 24
1.2.4 ABM的权衡 26
1.2.5 理解ABM需要具备哪些知识 27
1.3 本章小结 27
习题 28
第2章 创建几个简单的ABM模型 31
2.1 Game of Life模型 31
2.2 Heroes and Cowards模型 46
2.3 Simple Economy模型 58
2.4 本章小结 65
习题 66
第3章 探索和扩展基于agent的模型 68
3.1 Fire模型 69
3.1.1 Fire模型介绍 70
3.1.2 第一次扩展:增加一个火焰的传播概率 75
3.1.3 第二次扩展:添加风的因素 77
3.1.4 第三次扩展:允许火焰远程传播 79
3.1.5 Fire模型小结 80
3.1.6 高级建模应用 80
3.2 DLA模型 81
3.2.1 DLA模型概述 82
3.2.2 第一次扩展:引入概率 83
3.2.3 第二次扩展:邻居的影响 84
3.2.4 第三次扩展:不同的聚合方式 86
3.2.5 DLA模型小结 88
3.2.6 高级建模应用 88
3.3 Segregation模型 89
3.3.1 Segregation模型概述 90
3.3.2 第一次扩展:增加更多种群 92
3.3.3 第二次扩展:允许使用多个阈值 94
3.3.4 第三次扩展:增加热衷于社区多元化的个体 96
3.3.5 Segregation模型小结 97
3.3.6 高级城市建模应用 97
3.4 El Farol模型 98
3.4.1 El Farol模型概述 98
3.4.2 第一次扩展:为做出成功
预测的agent标记颜色 99
3.4.3 第二次扩展:显示平均、最低和最高奖励值 101
3.4.4 第三次扩展:绘制奖励直方图 102
3.4.5 El Farol模型小结 104
3.4.6 高级建模应用 104
3.5 本章小结 106
习题 106
第4章 创建基于agent的模型 110
4.1 设计模型 111
4.1.1 选择待研究的问题 113
4.1.2 一个具体的例子 114
4.2 选择你的agent 115
4.2.1 选择agent的属性 116
4.2.2 筛选agent的行为 117
4.2.3 选择模型的参数 118
4.2.4 Wolf Sheep Simple模型
设计小结 119
4.3 检查模型 134
4.4 Predator–Prey模型:补充情境 136
4.5 本章小结 139
习题 139
第5章 ABM的组件 142
5.1 概述 142
5.2 agent 143
5.2.1 属性 144
5.2.2 行为(活动) 146
5.2.3 agent种类大全 147
5.2.4 agent的粒度 156
5.2.5 agent认知 158
5.2.6 其他agent种类 163
5.3 环境 165
5.3.1 空间环境 165
5.3.2 基于网络的环境 169
5.3.3 几类特殊的环境 174
5.4 行为交互 180
5.5 观察者/用户界面 184
5.6 时间进度表 188
5.7 整合 190
5.8 本章小结 193
习题 193
第6章 分析ABM模型 198
6.1 度量类型 198
6.2 疾病的传播建模 198
6.2.1 ABM的统计分析:超越原始数据 200
6.2.2 多次运行ABM的必要性 202
6.2.3 在ABM中使用图检验结果 206
6.2.4 在ABM中分析网络 208
6.2.5 环境数据和ABM 211
6.3 本章小结 214
习题 215
第7章 模型的校核、验证与复现 218
7.1 模型的正确性 218
7.2 校核 218
7.2.1 沟通 219
7.2.2 描述概念模型 220
7.2.3 校核测试 221
7.2.4 超越“校核” 223
7.2.5 敏感性分析与稳健性评价 226
7.2.6 校核的益处与问题 228
7.3 验证 228
7.3.1 宏观验证和微观验证 231
7.3.2 表面验证和经验验证 232
7.3.3 验证的优点和问题 235
7.4 复现 235
7.4.1 计算模型的复现:维度与标准 236
7.4.2 复现的优点 238
7.4.3 对模型复现者的建议 239
7.4.4 对模型作者的建议 241
7.5 本章小结 242
习题 242
第8章 高级主题与应用 245
8.1 ABM中的高级主题 245
8.1.1 模型设计的指导方针 246
8.1.2 规则提取 249
8.1.3 使用ABM进行沟通、说服和教育 258
8.1.4 人类agent、嵌入式agent和虚拟agent通过“中介”进行对话 260
8.1.5 混合计算方法 269
8.1.6 NetLogo中的一些高级计算方法 273
8.1.7 ABM扩展 281
8.1.8 高级数据源与数据输出集成 282
8.1.9 运行速度 295
8.2 ABM应用 296
8.3 ABM的未来 299
习题 299
附录 ABM的计算基础 304
参考文献 315
软件与模型 326
前 言
当世界越来越紧密地联系在一起,呈现出纷繁复杂的形态时,我们也必须培养相应的能力管窥其中。当今我们所面临的很多问题都无法借助简单模型获取答案。高速计算能力的出现和普及,使得我们能够处理更复杂的问题,可以构建更复杂的模型,并使用它进行分析。由此形成了一个新的知识领域—复杂系统。本书旨在介绍复杂系统研究的一种简单方法—我们称之为“基于agent的建模”(agent-based modeling,ABM),它是一种基于计算机实验的科研新手段。
计算机的广泛应用导致了数据量的激增,新知识和新数据呈指数级增长,所有学科领域莫不如此。从物理学到化学,从生物学到生态学,从政治学到经济学,从管理科学到营销科学,科研人员正以远超往昔的速度采集数据。在拿到这么多数据之后,我们就可以研究关于复杂系统的问题了,迄今为止,我们还无法以数据驱动的方式对复杂系统进行研究。比如:众多物种如何通过影响和竞争来实现一个稳定的生态系统?我们怎样才能设计出能够与复杂社会进程协同工作并与之互动的机器人?
当这些复杂问题被提出,未来的科学家、研究人员、工程师、企业家、政治家等相关人士都被要求作答,那么复杂系统方法工具箱就是他们每个人必须掌握的,基于agent的建模技术在这个工具箱中占据中心地位。那些从事自然科学、社会科学与工程应用等领域的研究人员(如果有兴趣研究各自领域中的复杂系统问题),阅读本书可以获得一些关于ABM的基础知识。
本书将从广泛的学科领域中选取应用案例,以尽力呈现ABM方法的威力。我们将提供很多具备可操作性的案例,帮助读者理解如何使用ABM解决现实问题。我们编写本书案例的时候,遵从“低门槛,高上限”的指导原则。也就是说,一方面,不需要太多的预备知识,读者就可以使用本书所提供的案例模型进行学习,另一方面,对于掌握了相关知识技能的读者来说,他们可以在案例模型的基础上进一步构建超级复杂的模型。
在帮助我们理解复杂系统方面,ABM是一个有用的工具。虽然冠以“Introduction”(导论)之名,本书还是提供了必要的工具,以帮助读者研究问题,构建自己的模型。
本书的目标读者
由于ABM适用于诸多领域,因此本书可应用于广泛的情景中。本书若作为教材,既可以用于有关复杂系统研究的跨学科本科生课程,也可以用于介绍ABM的计算机科学相关课程。此外,本书还可以作为一些本科生课程(这些课程包含了关于ABM知识的教学内容)的辅助教材,由于所涉课程甚多,在此无法一一列出。本书中的一些内容曾经用于:自然科学课程,比如物理、化学和生物;社会科学课程,比如心理学、社会学和语言学;工程类课程,比如材料科学、工业工程和土木工程。为了尽可能全面地覆盖上述学科领域,我们对书中的案例进行了取舍,保证每个领域至少纳入一个典型案例。当然,为了满足这一要求,我们就无法针对某一个或几个领域进行深入的研究与探索。随着ABM研究与应用的发展,我们期盼针对特定领域进行深度探索的教材能够不断涌现。
本书编写之初,我们的目标读者是高年级本科生和低年级研究生,但是我们同时也希望本书能够被其他读者采用。阅读和学习本书内容并不需要太多的预备知识,无论是何种学科背景,只要对ABM感兴趣,都可以使用本书进行学习。同样,对于许多研究生课程来说,ABM也是比较新的知识,我们期望本书可以作为不同领域研究生课程的补充教材来使用。ABM方法在科研实验、商业领域、政治学领域的应用也在不断增长,我们期待这些领域的专业人士能从本书所提供的知识和案例中受益。本书所使用的材料是在过去二十多年间由Uri Wilensky和William Rand在他们各自的计算机科学和学习科学(Learning Science)的课程(本科生和研究生)中经过充分检验的,同时这些材料也在上述两位作者组织的数百个工作坊、研讨会以及夏校课程中使用过。
我们在原书名中特别强调了“natural, social, and engineered complex systems”(自然、社会和工程领域中的复杂系统)。自然系统涉及生物学和物理学领域,其中的复杂系统是自然演化而成的。社会系统包含众多可以彼此交互的个体,社会系统可以是自然形成的,也可以是人为干预的结果。工程应用系统是由人设计并达成特定目标的系统。
读者学习本书基本不需要什么预备知识。数学方面只需要代数知识即可,计算机方面不需要读者具有编程能力,在第6~8章中,我们假设读者具有基本的统计学知识,例如,知晓什么是正态分布。然而,我们希望读者能够对NetLogo有所了解,建议大家先去学习NetLogo软件用户手册中的前三个教程。NetLogo可以从网上下载(http://ccl.northwestern.edu/netlogo/)。
使用本书进行学习,需要读者阅读和编写软件代码,有些读者可能不具备此项技能。虽然相当多的人认为计算机编程是一项非常困难以至于无法完成的挑战,但我们数十年的教学经验表明,实际上所有学生都可以学会并使用NetLogo进行编程。我们希望书中的代码不会吓跑你,只要花点时间学习、阅读和编写代码,你就一定能够学会。我们坚信,只要花时间去学习,就一定会有收获。
NetLogo与本书的关系
目前有很多不同的ABM语言,在我们编写本书的时候
计算机的广泛应用导致了数据量的激增,新知识和新数据呈指数级增长,所有学科领域莫不如此。从物理学到化学,从生物学到生态学,从政治学到经济学,从管理科学到营销科学,科研人员正以远超往昔的速度采集数据。在拿到这么多数据之后,我们就可以研究关于复杂系统的问题了,迄今为止,我们还无法以数据驱动的方式对复杂系统进行研究。比如:众多物种如何通过影响和竞争来实现一个稳定的生态系统?我们怎样才能设计出能够与复杂社会进程协同工作并与之互动的机器人?
当这些复杂问题被提出,未来的科学家、研究人员、工程师、企业家、政治家等相关人士都被要求作答,那么复杂系统方法工具箱就是他们每个人必须掌握的,基于agent的建模技术在这个工具箱中占据中心地位。那些从事自然科学、社会科学与工程应用等领域的研究人员(如果有兴趣研究各自领域中的复杂系统问题),阅读本书可以获得一些关于ABM的基础知识。
本书将从广泛的学科领域中选取应用案例,以尽力呈现ABM方法的威力。我们将提供很多具备可操作性的案例,帮助读者理解如何使用ABM解决现实问题。我们编写本书案例的时候,遵从“低门槛,高上限”的指导原则。也就是说,一方面,不需要太多的预备知识,读者就可以使用本书所提供的案例模型进行学习,另一方面,对于掌握了相关知识技能的读者来说,他们可以在案例模型的基础上进一步构建超级复杂的模型。
在帮助我们理解复杂系统方面,ABM是一个有用的工具。虽然冠以“Introduction”(导论)之名,本书还是提供了必要的工具,以帮助读者研究问题,构建自己的模型。
本书的目标读者
由于ABM适用于诸多领域,因此本书可应用于广泛的情景中。本书若作为教材,既可以用于有关复杂系统研究的跨学科本科生课程,也可以用于介绍ABM的计算机科学相关课程。此外,本书还可以作为一些本科生课程(这些课程包含了关于ABM知识的教学内容)的辅助教材,由于所涉课程甚多,在此无法一一列出。本书中的一些内容曾经用于:自然科学课程,比如物理、化学和生物;社会科学课程,比如心理学、社会学和语言学;工程类课程,比如材料科学、工业工程和土木工程。为了尽可能全面地覆盖上述学科领域,我们对书中的案例进行了取舍,保证每个领域至少纳入一个典型案例。当然,为了满足这一要求,我们就无法针对某一个或几个领域进行深入的研究与探索。随着ABM研究与应用的发展,我们期盼针对特定领域进行深度探索的教材能够不断涌现。
本书编写之初,我们的目标读者是高年级本科生和低年级研究生,但是我们同时也希望本书能够被其他读者采用。阅读和学习本书内容并不需要太多的预备知识,无论是何种学科背景,只要对ABM感兴趣,都可以使用本书进行学习。同样,对于许多研究生课程来说,ABM也是比较新的知识,我们期望本书可以作为不同领域研究生课程的补充教材来使用。ABM方法在科研实验、商业领域、政治学领域的应用也在不断增长,我们期待这些领域的专业人士能从本书所提供的知识和案例中受益。本书所使用的材料是在过去二十多年间由Uri Wilensky和William Rand在他们各自的计算机科学和学习科学(Learning Science)的课程(本科生和研究生)中经过充分检验的,同时这些材料也在上述两位作者组织的数百个工作坊、研讨会以及夏校课程中使用过。
我们在原书名中特别强调了“natural, social, and engineered complex systems”(自然、社会和工程领域中的复杂系统)。自然系统涉及生物学和物理学领域,其中的复杂系统是自然演化而成的。社会系统包含众多可以彼此交互的个体,社会系统可以是自然形成的,也可以是人为干预的结果。工程应用系统是由人设计并达成特定目标的系统。
读者学习本书基本不需要什么预备知识。数学方面只需要代数知识即可,计算机方面不需要读者具有编程能力,在第6~8章中,我们假设读者具有基本的统计学知识,例如,知晓什么是正态分布。然而,我们希望读者能够对NetLogo有所了解,建议大家先去学习NetLogo软件用户手册中的前三个教程。NetLogo可以从网上下载(http://ccl.northwestern.edu/netlogo/)。
使用本书进行学习,需要读者阅读和编写软件代码,有些读者可能不具备此项技能。虽然相当多的人认为计算机编程是一项非常困难以至于无法完成的挑战,但我们数十年的教学经验表明,实际上所有学生都可以学会并使用NetLogo进行编程。我们希望书中的代码不会吓跑你,只要花点时间学习、阅读和编写代码,你就一定能够学会。我们坚信,只要花时间去学习,就一定会有收获。
NetLogo与本书的关系
目前有很多不同的ABM语言,在我们编写本书的时候
评论
还没有评论。