复杂系统学习(六):细胞自动机II:实现一个模型
目录
1. 引言
2. 模型的实现
3. 应用:Lotka-Volterra
3.1 Lotka-Volterra模型的CA版本
4. 应用:流行病
4.1 SIR疾病模型的CA版本
4.1.1 SIR疾病模型的第一版CA
4.1.2 SIR疾病模型的第二版CA
5. 探索我们的模型行为
6. 基本CA模型的扩展
7. 为什么使用CA?
1. 引言
细胞自动机的局限性,不能够直接分析行为。
本节的目的是:
- 认识到在实现CA模型时需要做出的一些关键决策
- 理解基于ODE模型指定CA模型所涉及的步骤
- 欣赏模型设计的创造性方面
2. 模型的实现
空间
我们需要思考的问题有:
- 空间是如何表现的?
- agent 如何在空间中定位?
并且需要考虑:
- 离散与连续的空间
- 单个与多个 cells 占用
- proximate 与 long-range 的相互作用
时间
我们需要考虑的问题有:
- 时间是如何体现的?
- 事件的顺序如何影响行为?
并且需要考虑:
每个单元的状态被更新的顺序
- 系统的每个组件都会同时更新吗?(同步更新)
- 还是一次一次地更新?(异步更新)
- 如果是异步更新,这些组件将以什么顺序被更新?
离散时间与连续时间
- 离散:检查每个时间步长会发生什么。
- 连续:接下来会发生什么事件,何时发生?
信息
我们需要考虑的问题有:
- 组件(cells / agents)使用什么信息?
- 它们是如何获得的?
并且需要考虑:
- 变量的范围:global、cell(patch)、agent(turtle)。
- 如何访问和修改这些变量
- 感知的(空间)范围:随着范围的扩大会发生什么?(即,什么是邻域?)
状态更新
我们需要考虑的问题有:
- 更新是确定性的还是随机性的?
- 这个决定如何影响行为?
并且需要考虑:
- 一个组件的未来状态是否将由其当前的输入、环境等唯一指定?(确定性更新)
- 还是会涉及一些随机性?(随机更新)
3. 应用:Lotka-Volterra
Lotka-Volterra模型:
- 猎物(兔子):
- 捕食者(红狐狸):
参数:
兔子数量的增长率
狐狸捕食(吃)兔子的速度
狐狸种群的增长率
由于死亡和迁移导致的狐狸种群的衰减率
3.1 Lotka-Volterra模型的CA版本
我们不是直接对每个人口的规模(宏观变量)进行建模,而是明确表示每个个体,然后观察(测量)人口的规模。
空间:
- 我们将在一个二维规则格子(网格)上表示每个个体的位置,而不是假设我们的种群混合得很好。
- 我们将做一个新的假设,即在任何时间点上只有一只动物可以占据一个网格空间。
时间:
- 我们将使用离散的时间步骤,而不是连续处理时间。
信息:
- 我们将假设每个动物个体只知道它的近邻。
状态更新:
- 我们的二维格子中的每个单元将取三个值中的一个:
更新规则:
从我们的格子中随机挑选一个单元(A)。
随机选择A的一个邻居(B)。
更新如下:
- 如果A包含一只兔子,B是空的,那么,在概率为α的情况下,兔子会繁殖,B现在包含一个新的兔子——猎物繁殖
- 如果A中有一只狐狸,B中有一只兔子,或者如果A中有一只兔子,B中有一只狐狸,那么兔子被吃掉的概率为
;并且,如果发生这种情况,以概率
,原先含有兔子的细胞现在含有新的狐狸——猎物死亡和捕食者繁殖
- 如果A中有一只狐狸,而B为空,那么狐狸死亡的概率为
——捕食者死亡
- 如果A是空的,而B包含一只狐狸或一只兔子,那么相邻的动物就会从B移动到A——动物移动
4. 应用:流行病
SIR疾病模型:
状态变量:
目前易受感染的人口比例
目前具有传染性的人口比例
目前已康复的人口比例
- 注:因此,
参数:
易感者和传染者之间的有效接触率
感染者的康复率
4.1 SIR疾病模型的CA版本
我们不是直接测量每个疾病区间的人口比例(宏观变量),而是明确表示每个个体,标记他们当前的疾病状态,然后观察(测量)每个状态的人口比例。
空间:
- 我们不是假设我们的种群是很好的混合,而是将每个个体的位置表示在一个二维规则格子(网格)上。
- 我们将作出新的假设,即一个人同时占据一个网格单元,而且人们的位置在一段时间内是固定的(即他们不会移动!)。
时间:
- 我们将使用离散的时间步骤,而不是连续处理时间。
信息:
- 最初,人口中的一部分p是有传染性的,其余的人口是易受感染的。
4.1.1 SIR疾病模型的第一版CA
状态更新:
- 我们的二维格子中的每个单元将取三个值中的一个:
更新规则:
- 一个易感者可以被一个有传染性的邻居感染的概率为
- 一个受感染的人恢复的概率为
4.1.2 SIR疾病模型的第二版CA
请注意,对于任何现实世界的系统,我们可能有多种可能的模型可供选择:
如前所述,每个站点对某种疾病可以是易感的()、传染的(
)或恢复的(
)。现在,免疫是暂时的,人们以
的速率再次易感。因此,平均而言,人们是:
- 感染:
天
- 恢复(免疫)为:
天
状态更新:
现在每个单元格可以在 范围内取值,如下所示:
更新规则:
- 如果一个易感者的邻居中至少有一个人具有传染性,那么这个易感者就会受到感染。
- 感染者在
天后恢复过来
- 康复者在
天后失去免疫力并成为易感者(免疫力减退)。
5. 探索我们的模型行为
参数扫描:
描述模型行为的一种常见方法是进行参数扫描:系统地改变每个参数的值,以了解其对系统行为的影响。
例如(SIR疾病模型的第二版CA),对以下每个组合运行模型:
(传染病人的初始比例)
(一个人感染的天数)
(一个人恢复/免疫的天数)
- 即,
种可能的组合
参数扫描:
- 因为我们的模型行为是随机的,我们可能想把每个参数组合运行几次,考虑系统的平均行为。
- 对于轨迹(即随时间变化的状态序列),这可能是困难的。通常情况下,我们确定一些全局测量,记录每次模拟运行的值,并报告平均值和标准差。
6. 基本CA模型的扩展
异步或同步CA
基本的CA在每个时间步骤中同步(在同一时间)更新所有单元。我们也可以在不同时间更新单元。
概率性CA
基本CA的更新规则是确定性的(Cx.05例子)。我们也可以使用概率/随机的更新规则(Cx.06的例子)。
非同质性CA
基本CA对每个单元都适用相同的更新规则。我们也可以使用上下文敏感的规则。
网络结构的CA
基本CA用网格相邻关系来定义邻域。我们也可以使用更复杂的邻居网络拓扑结构(我们将在后面看这个)。
7. 为什么使用CA?
优势:
- 它们(相对)简单,容易实现
- 它们可以表示难以用ODEs建模的相互作用和行为
- 它们反映了系统组件的内在个性
缺点:
- 它们是相对受限制的(拓扑结构、相互作用、个体行为)。
- 全局行为可能难以解释
复杂系统学习(六):细胞自动机II:实现一个模型相关推荐
- JMS学习六(ActiveMQ消息传送模型)
JMS学习六(ActiveMQ消息传送模型) ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/ ...
- 复杂系统学习(四):ODE模型II:流行病
目录 引言:模型术语 1. 基本的SIR模型 2. 基本SIR模型的一个简单实现 2.1 计算出一个事件是否发生? 2.2 运行我们的模型 2.3 人口接触问题 3. 计算感染风险的不同方法 4. 修 ...
- swift4.1 系统学习六
swift学习笔记6 字符和字符串 在swift中,String类型也是结构体,属于值类型,而不是引用类型.这一点,与OC是不一样的. // // main.swift // swift06 // / ...
- 复杂系统学习(三):ODE模型I:捕食者—猎物
目录 1. Lotka-Volterra 模型 1.1 模型假设 1.2 模式制定 2. 解决ODEs问题的一些方法 2.1 用欧拉法解决ODEs问题 2.2 使用中点来提高准确性 2.3 使用Run ...
- 捷联惯导系统学习7.5(低成本组合导航系统模型)
低成本组合导航系统模型 低精度MEMS惯性/卫星/地磁组合导航系统中,选择惯导系统的姿态失准角ϕ\phiϕ.速度误差δvn\delta v^nδvn.定位误差δpn\delta p^nδpn.陀螺仪相 ...
- 系统学习机器学习之系统认识
机器学习(MachineLearning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能, ...
- SAS系统学习之初探
以前在学校接触过SAS,跟着课程学习并将SAS用于统计理论的实现,学习期间断断续续,不成系统.2013年有幸参与SAS在高校举办的首次数据分析大赛,并获得"团体十强"的荣誉,之后很 ...
- 用python设计一个管理系统思路_Python大佬一个月打造的Python系统学习流程图!
对于刚开始接触Python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件环境安装好后就不知所措了!接下来我给大家分享下多位大牛倾力打造的python系统学习流程,一个月才设计完的! Pytho ...
- python逻辑运算的一些流程图_Python大牛历时一个月打造的Python系统学习流程图,超详细!...
对于刚开始接触Python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件环境安装好后就不知所措了!接下来我给大家分享下多位大牛倾力打造的python系统学习流程,一个月才设计完的! Pytho ...
- 13位Python大牛历时一个月打造的Python系统学习流程图,超详细!
对于刚开始接触Python的小伙伴来说,没有思路方法,不知道从何开始学习,把软件环境安装好后就不知所措了!接下来我给大家分享下多位大牛倾力打造的python系统学习流程,一个月才设计完的! #Pyth ...
最新文章
- PTA数据结构与算法题目集(中文)7-37
- Mahout-协同过滤-CF-推荐算法基本概念及代码示例
- fiddler设置抓取https请求后打开网页总是报“你的连接不是私密链接”的解决办法
- asp 与 database (3)
- 云架构的基础转变会带来哪些变化?
- 0到1:闲鱼高复杂度高性能社区圈子开发实录
- linux设置php时间,修改 linux 时区时间和 php 时区(示例代码)
- idea连接Mysql报错
- 解除webservice上下传文件大小限制
- matlab中度数化成度分秒,度分秒转换:32.68度用度、分、秒表示=? 求解释!?请帮忙...
- dnf加点模拟器最新版85级版
- 小米平板2刷哪个系统更流畅_你想用什么系统的小米平板2,Win10还是MIUI7?
- 第三章第二十四题(游戏:抽牌)(Game: pick a card)
- 【数据库自习室#003】Mysql数据库函数
- 有密码Win10创建新用户
- VGA、HDMI、DP你都懂吗?显示接口大盘点
- 生鲜超市 学习进阶第三天 xadmin的后台管理
- 关于项目连接docker数据库报错不存在表的问题
- 【日常】某B视频网站模拟登录尝试
- 日产轩逸如何与安卓手机完成智能互联