本書從大量跨學(xué)科、跨領(lǐng)域的實際案例入手,循序漸進(jìn)地講解了NetLogo的使用方式、基本語法、設(shè)計思想,以及背后的計算機(jī)模擬、多主體建模、復(fù)雜性科學(xué)的基本理念和數(shù)理建模的常用方法,包括數(shù)值計算、微分方程、動力系統(tǒng)、概率統(tǒng)計等。通過學(xué)習(xí),讀者可以學(xué)會搭建一個人工生命的世界、一個人工經(jīng)濟(jì)系統(tǒng),以及一個人工生態(tài)系統(tǒng);通過計算機(jī)模擬,讀者可以理解大自然的捕食依存關(guān)系、病毒傳播和疫情暴發(fā)的原理,還能對人類社會財富分布不均衡的起源有新的認(rèn)識。
1.無需編程基礎(chǔ),從基礎(chǔ)知識開始循序漸進(jìn)講解NetLogo的使用方式、設(shè)計思想以及數(shù)理建模的常用方法。
2.本書精選七大跨學(xué)科、跨領(lǐng)域的實戰(zhàn)案例,幫助讀者自己動手搭建模型。
3.本書配有清晰的示例代碼和講解視頻,幫助讀者深入學(xué)習(xí)和動手實戰(zhàn)。
4.本書由集智俱樂部張江教授精心打造,歐洲科學(xué)院院士陳關(guān)榮等人作序推薦。
集智俱樂部(Swarma Club),成立于2003年,是一個從事學(xué)術(shù)研究、享受科學(xué)樂趣的探索者團(tuán)體,也是國內(nèi)較早研究人工智能、復(fù)雜系統(tǒng)的科學(xué)社區(qū)之一,倡導(dǎo)以平等開放的態(tài)度、科學(xué)實證的精神,進(jìn)行跨學(xué)科的研究與交流,力圖搭建一個中國的沒有圍墻的研究所。編寫、翻譯過多本科普作品,有《科學(xué)的極致:漫談人工智能》《走近2050:注意力、互聯(lián)網(wǎng)與人工智能》《深度學(xué)習(xí)原理與PyTorch實戰(zhàn)》,譯作有《深度思考:人工智能的終點與人類創(chuàng)造力的起點》等。
序一 iii
序二 iv
序三 vii
前言 ix
作者簡介 xi
第 1章 復(fù)雜系統(tǒng)與多主體模擬 2
1.1 如何探索復(fù)雜系統(tǒng) 2
1.2 多主體模擬 3
1.3 為什么要學(xué)習(xí)NetLogo 5
1.4 生命游戲 6
1.5 鳥群模型 9
1.6 財富分布模型 11
1.7 小結(jié) 14
第 2章 小球宇宙:認(rèn)識NetLogo 15
2.1 什么是小球宇宙 15
2.2 搭建宇宙框架 17
2.2.1 創(chuàng)建小球 18
2.2.2 讓小球動起來 21
2.2.3 修改宇宙屬性 24
2.3 模擬程序的流程圖 25
2.4 NetLogo的特點 26
2.5 學(xué)習(xí)資源 27
2.6 小結(jié) 29
第3章 通過生命游戲認(rèn)識patch 30
3.1 什么是生命游戲 30
3.2 認(rèn)識patch 32
3.3 創(chuàng)建模擬世界 32
3.3.1 random-float命令 33
3.3.2 初始化模擬世界 33
3.3.3 用patches-own自定義添加patch屬性 34
3.4 讓生命游戲運轉(zhuǎn)起來 35
3.5 NetLogo 語法的注意事項 39
3.6 小結(jié) 41
第4章 朗頓的螞蟻 42
4.1 什么是朗頓的螞蟻 42
4.2 創(chuàng)建螞蟻 44
4.2.1 turtle的方法與屬性 45
4.2.2 random命令 45
4.3 讓螞蟻動起來 46
4.3.1 turtle和patch之間的交互 47
4.3.2 使用tick計時 48
4.4 小結(jié) 50
第5章 從羊-草生態(tài)系統(tǒng)深入turtle與plot畫圖 51
5.1 羊-草生態(tài)系統(tǒng)的規(guī)則 51
5.2 初始化羊-草生態(tài)系統(tǒng) 53
5.3 添加to go程序 55
5.3.1 add_food 55
5.3.2 turtle_move 56
5.3.3 turtle_breed 57
5.3.4 turtle_die 57
5.4 追蹤某一個具體的turtle或者patch的行為 58
5.5 變量的主體 61
5.6 添加繪圖框 61
5.7 小結(jié) 63
第6章 人工經(jīng)濟(jì)模型與turtle間的互動 66
6.1 貨幣轉(zhuǎn)移模型 66
6.2 NetLogo添加全局變量 69
6.3 初始化模擬世界 70
6.4 主體之間如何交互 70
6.4.1 transaction子模塊 72
6.4.2 變量作用域 73
6.5 使用命令中心 74
6.6 繪制財富分布直方圖 76
6.7 小結(jié) 78
第7章 文件導(dǎo)出與復(fù)雜曲線繪制 79
7.1 人工經(jīng)濟(jì)模型回顧及遺留問題 79
7.2 NetLogo導(dǎo)出文件 80
7.3 洛倫茲曲線 85
7.4 用 NetLogo實現(xiàn)洛倫茲曲線 89
7.4.1 繪圖語句 90
7.4.2 表示財富分布不均衡的折線的繪制 91
7.4.3 洛倫茲曲線的繪制 92
7.5 小結(jié) 94
第8章 使用行為空間做實驗 95
8.1 更新人工經(jīng)濟(jì)模型的基本規(guī)則 95
8.2 程序修改 97
8.3 兩種規(guī)則下的財富分布對比 99
8.4 基尼系數(shù)的定義及程序?qū)崿F(xiàn) 100
8.4.1 什么是基尼系數(shù) 100
8.4.2 基尼系數(shù)的計算方法 101
8.4.3 基尼系數(shù)的程序?qū)崿F(xiàn) 101
8.5 參數(shù)變化對財富分布不均衡性的影響 105
8.6 使用行為空間做重復(fù)實驗 106
8.7 小結(jié) 110
第9章 透過人工鳥群模型Boids學(xué)習(xí)list的使用 111
9.1 人工鳥群模型Boids 112
9.2 矢量以及矢量運算的基本知識 113
9.2.1 矢量的加法 114
9.2.2 矢量的減法 114
9.2.3 矢量的數(shù)乘 115
9.3 Boids模型需要的矢量運算 116
9.3.1 靠近力 118
9.3.2 對齊力 119
9.3.3 斥力 119
9.3.4 合力 120
9.4 讓Boids動起來 121
9.5 NetLogo的列表list 122
9.6 Boids模型程序?qū)崿F(xiàn) 124
9.7 小結(jié) 128
第 10章 用link建模網(wǎng)絡(luò)動力學(xué) 129
10.1 病毒傳播SIR模型 129
10.2 構(gòu)建網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu) 131
10.3 NetLogo中的link對象 131
10.4 SIR模型搭建 132
10.5 SIR模型代碼實現(xiàn) 133
10.5.1 給turtle設(shè)置state屬性 134
10.5.2 to setup代碼塊 135
10.5.3 setup-network函數(shù) 135
10.5.4 to go代碼塊 138
10.6 參數(shù)變化對模擬結(jié)果的影響 139
10.7 SIR模型的弊端與無標(biāo)度網(wǎng)絡(luò) 141
10.8 改進(jìn)網(wǎng)絡(luò)模型 142
10.9 修改程序?qū)崿F(xiàn)改進(jìn)的網(wǎng)絡(luò)模型 142
10.10 小結(jié) 144
第 11章 重訪羊-草模型與系統(tǒng)動力學(xué)建!145
11.1 多主體建模的弊端 145
11.2 羊-草的系統(tǒng)動力學(xué)模型 145
11.2.1 代數(shù)求解羊-草的系統(tǒng)動力學(xué)模型 146
11.2.2 用計算機(jī)求解羊-草的系統(tǒng)動力學(xué)模型 147
11.3 系統(tǒng)動力學(xué)建模工具求解微分方程 148
11.4 讓羊-草模型運行起來 151
11.5 重新構(gòu)建羊-草生態(tài)系統(tǒng) 152
11.5.1 用流-存的方法建!153
11.5.2 羊-草生態(tài)系統(tǒng)模型的動力學(xué)方程 153
11.6 羊-草生態(tài)系統(tǒng)模型的系統(tǒng)動力學(xué)搭建 154
11.7 調(diào)試羊-草生態(tài)系統(tǒng)模型 157
11.7.1 如何設(shè)定各個參數(shù)的數(shù)值 158
11.7.2 設(shè)置dt取值 158
11.8 更一般的微分動力系統(tǒng) 160
11.9 小結(jié) 160
結(jié)束語 162
后記 165