python实现元胞自动机——超简单的流言模型
关于元胞自动机,这个ppt讲得挺不错的:
https://wenku.baidu.com/view/86050cb9aeaad1f347933f28.html
下面实现一个流言模型:
from matplotlib import pyplot as plt
#元胞自动机、流言模型def count_rumour(matrix,rumour):#二维矩阵,计算流言的数目sum_rumour=0for sublist in matrix:sum_rumour+=sublist.count([0,rumour])+sublist.count([rumour,rumour])return sum_rumourdef spread(size,rumour,start_x,start_y):# 初始化rumour_matrix = [[[0, 0] for i in range(size)] for j in range(size)]rumour_spread = []rumour_matrix[start_x][start_y] = [1, 1]rumour_spread.append(count_rumour(rumour_matrix, rumour))# 个体更新while count_rumour(rumour_matrix, rumour) < size * size:for i in range(size):for j in range(size):# 制定流言传播规则1、准备传播流言的传播给邻居(上下左右)2、上次听到流言的,变为准备传播流言if rumour_matrix[i][j][0] == rumour:if i - 1 >= 0:rumour_matrix[i - 1][j] = [rumour,rumour]#已经遍历了if i + 1 < size:rumour_matrix[i + 1][j][1] = rumourif j - 1 >= 0:rumour_matrix[i][j - 1] = [rumour,rumour]#已经遍历了if j + 1 < size:rumour_matrix[i][j + 1][1] = rumourelif rumour_matrix[i][j][1] == rumour:rumour_matrix[i][j][0] = rumourrumour_spread.append(count_rumour(rumour_matrix, rumour))print(rumour_spread[:10])#打印前十个时间步流言传播的速度plt.plot(rumour_spread)#设置参数
size=200
rumour=1
#最里面的列表中第2个元素为rumour说明更新刚听到流言,第1个元素为rumour说明准备传播流言
center_x,center_y=int(size/2),int(size/2)
spread(size,rumour,center_x,center_y)
spread(size,rumour,0,0)
plt.show()
输出:
[1, 5, 13, 25, 41, 61, 85, 113, 145, 181]
[1, 3, 6, 10, 15, 21, 28, 36, 45, 55]
还有张图:
蓝色代表流言在中心传播,橙色则是在最角落传播。可以做改进的地方很多,懒得去弄了,目的是简单地了解一下元胞自动机。
python实现元胞自动机——超简单的流言模型相关推荐
- 【元胞自动机】基于元胞自动机模拟双车道交通流模型含靠右行驶matlab源码
元胞自动机的初步理解 对元胞自动机的初步认识\ 元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法.典型的元\ 胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状\ 态.变化规 ...
- 【元胞自动机】基于元胞自动机模拟3D森林火灾模型含Matlab源码
1 简介 森林火灾威胁森林安全,导致生命财产与环境损失,动态模拟森林火灾对于预判森林火灾发展趋势,减少森林火灾危害,科学开展森林火灾灭火工作具有重要理论与现实意义.为更加形象,直观地展示林火三维可视化 ...
- vissim跟驰模型_MATLAB——基于元胞自动机的单向3车道模型
输出效果 本模型是在NaSch模型基础上加入安全条件以及换道概率的单向3车道模型. 基本思路是一个时间步分为两个部分,前半部分执行换道过程,后半个部分执行跟驰过程,即,NaSch四步. 换道流程是,先 ...
- Python实现元胞自动机——十字路口
十字路口绿灯亮50秒,最多可以通过多少辆汽车? 规则: 1.通过十字路口的车各不相同,但遵循50%的车长L为2米,50%的车长L为2.5米. 2.假设每一辆车在前一辆车已经启动的前提下由于自身原因犹豫 ...
- 【机器学习】通俗的元胞自动机算法解析和应用
[机器学习]通俗的元胞自动机算法解析和应用 文章目录 1 元胞自动机的定义 2 元胞自动机的组成 3 元胞自动机的特征 4 Python实现元胞自动机(生命游戏) 5 总结 6 Github(华盛顿州 ...
- 元胞自动机:更接近人类思考的智能模型
前段时间,一则"计算机首次通过图灵测试"的新闻被众多媒体报道,似乎人工智能已然离我们不远了. 在未来,计算机真的会拥有人类一样的自主思考.学习能力吗,甚至出现未来的"机器 ...
- 元胞自动机与相关理论和方法
元胞自动机与相关理论和方法的发展有着千丝万缕的联系,一方面,元胞自动机的发展得益于相关理论的研究,如逻辑数学.离散数学.计算机中的自动机理论,图灵机思想;另一方面,元胞自动机的发展也促进了一些相关学科 ...
- 元胞自动机(Cellular Automata)
元胞自动机(Cellular Automata,简称CA,也有人译为细胞自动机.点格自动机.分子自动机或单元自动机).是一时间和空间都离散的动力系统.散布在规则格网 (Lattice Grid)中的每 ...
- 元胞计算机系统,元胞自动机
元胞自动机(cellular automata,CA) 是一种时间.空间.状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力.[1] 中文名 元胞自动机 ...
最新文章
- 『Lucas定理以及拓展Lucas』
- Storm on yarn 安装
- 合泰单片机 熔丝_合泰单片机HT66F018红外发射C程序及电路图
- 设计模式之_Iterator_03
- h.264 html播放,浏览器 – 我如何播放H264视频?
- linux 挂载san存储,新手看招:Linux操作系统下挂载SAN资源
- 天池 在线编程 木材加工(二分查找)
- 滤波电容的选择(调试中)
- php 内部 邮件,php电子邮件形式内部服务器错误
- java后台与ISO端app对接
- 浅谈seo行业白菜价泛滥
- Java与MySQL连接错误_mysql连接错误
- WNM6002 N通道增强功能MOS场效应晶体管
- Java2022面试题集锦
- java游戏局域网实现的_java学习笔记: 实现简易局域网聊天程序
- java计算机毕业设计九宫格日志网站源码+数据库+系统+lw文档+mybatis+运行部署
- 集美大学校园网绑定/认证报错异常及解决方案
- STM32MP157系统移植(TF-A,U-Boot,Linux)
- PJzhang:今天才搞清身份证、银行卡……的编码规则
- 罗技推出可蓝牙连接的5.1环绕立体声扬声器