实现:

]# -*- coding: utf-8 -*-
''' NS模型场景:周期型边界道路长度:cell=1000个元胞车辆初始分布为均匀分布初始速度:v0=vmax=5随机慢化概率:p=0.1仿真时步为2000时步,从500时步开始采样-1表示元胞,其他值表示车辆要求:绘制车辆加速度的分布图(密度:0.05, 0.2, 0.4, 0.6)
'''#import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import os#设置车辆初始均匀分布,车辆密度ρ=0.05, 0.2, 0.4, 0.6
def InitDist(v0=5, ρ=0.05, cell=1000):arra = np.zeros(1000, dtype=int)#创建1000个元胞arra = np.array([-1] * cell)v_count = int(ρ*cell)           #车辆数temp = np.linspace(0, 999, num=v_count).astype(int)#生成均匀分布数for i in temp:arra[i] = v0return v_count,arra #返回车辆初始分布与车辆数#NS建模
def NS(cell=1000, n=InitDist()[0],v0=5, vmax=5, p=0.1,times=2000, start=500):cell_arr = np.zeros((times,cell), dtype=int)#NS模型演化过程表df = pd.DataFrame(cell_arr).apply(lambda x: x.iloc[:] - 1)df.loc[0,:] = InitDist()[1]                 #设置车辆初始状态#根据车辆数n生成相应的任意随机慢化概率,支持文件导入p_rand = pd.DataFrame()if(os.path.exists('p_array.csv')==False):p_rand = pd.DataFrame(np.random.randint(0, 10, size=(times, n)))p_rand = p_rand.apply(lambda x: x.iloc[:] / 10)p_rand.to_csv("p_array.csv",index=True,header=True)else:p_rand = pd.DataFrame(pd.read_csv('p_array.csv',index_col=0))#NS演化规则i = 0for i in range(times - 1):index = []                      #保存车辆所在元胞的下标d_temp = list(df.iloc[i,:])     #每次取出当前路段元胞的车辆分布情况p_temp = list(p_rand.iloc[i,:]) #每次取出当前路段车辆的换道概率for j in range(cell):if d_temp[j] >= 0:index.append(j)         #将车辆的当前位置保存#对每一辆车进行处理for k in range(n):v = d_temp[index[k]]        #获取当前速度#加速if(v < vmax):v = min(v+1, vmax)#减速if index[(k+1)%n] > index[k]:gap = index[(k + 1) % n] - index[k] - 1   #两车相隔gap个元胞else:gap = cell - index[k] + index[(k+1)%n] - 1#周期型边界,需处理边界问题if (gap < vmax):v = min(v,gap)#随机慢化if(p > p_temp[k]):v = max(v-1,0)#print(v)#运动s = index[k] + vs = s % cell         #边界处理df.loc[i+1,s] = v    #更新下一轮车辆状态变化值df.to_csv("result.csv")return dfif __name__ == "__main__":df = NS()print(df)

NS元胞自动机模型--python实现相关推荐

  1. python元胞自动机模拟交通_大师兄带你复现 -gt; 难度超高的二维CA元胞自动机模型...

    最近过上了在家躺着就为祖国做贡献的生活. 然而,热心的知友们找我私信,询问"怎么画二维CA(元胞自动机)模型的仿真界面呀?""菜鸟如何做CA仿真?" 刚交完稿子 ...

  2. c#元胞自动机_基于元胞自动机模型的行人排队行为模拟

    06 系统工程理论与方法 基于元胞自动机模型的行人排队行为模拟 廖明军 1, 2 , 孙

  3. 元胞自动机模型—interesting应用

    最近回忆起元胞自动机模型,让我们来康一康这个模型的基本原理: 元胞自动机是由计算机之父冯·诺伊曼模拟生命系统的自复制功能提出来的.元胞自动机采用离散的空间布局和时间间隔,将元胞分成有限种状态.元胞个体 ...

  4. 元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B

    是新朋友吗?记得先点蓝字关注我哦- 第三章 元胞自动机 B 2020/01/23 3.3 投票模型(Voting) 课程导读 无论是国内国外,投票结果的预测都异常受到关注.在众多唐斯模型.中间选民模型 ...

  5. 简单元胞自动机实现—Python

    一.简单元胞自动机简介 设定指定空间中的每个细胞的初始状态后依据一定生存规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案. 二.游戏规则 (一)对于确定细胞的周边范围,我们将 ...

  6. 元胞自动机交通流模型c++_MATLAB——含出入匝道的交织区快速路元胞自动机模型...

    输出效果 本模型为包含一条变速车道和出入匝道的快速路交织区仿真模型. 车道编号 换道规则和不含出入匝道的路段的区别在于换道分为自由换道和强制换道.车辆在不同区域有不同换道状态,而车辆本身又有出匝道和直 ...

  7. 元胞自动机:更接近人类思考的智能模型

    前段时间,一则"计算机首次通过图灵测试"的新闻被众多媒体报道,似乎人工智能已然离我们不远了. 在未来,计算机真的会拥有人类一样的自主思考.学习能力吗,甚至出现未来的"机器 ...

  8. python元胞自动机模拟交通_结构专栏 | 解析DEFORM软件中的元胞自动机法

    点击上方蓝色字体,关注我们 导语 金属材料的性能取决于内部的微观组织结构,而好的材料性能和价格是产品最大的优势.随着现代物理冶金.热成形技术.热处理技术和计算机技术的兴起与发展,使预测和控制金属材料热 ...

  9. python元胞自动机模拟交通_基于立体网格的放射性污染物扩散过程模拟与表达

    作 者 信 息 施加松1,余接情2,常芸芬1,童晓冲3 (1.防化研究院,北京 102205:2.中国矿业大学 环境与测绘学院,江苏 徐州 221116:3.信息工程大学,河南 郑州 450001) ...

最新文章

  1. 弗洛伊德算法(Floyd)简介
  2. 采用Android的MediaPlayer+SurfaceView设计视频播放器
  3. 第一个实例-----我与node.js的第一步接触
  4. 线性递推式+求第N项,用矩阵快速幂 如何构造初始矩阵
  5. mysql5.5.20安装图解_mysql5.5.20的安装步骤
  6. spring boot 引用外部配置文件
  7. Linux 常用系统命令-20160504
  8. 996 的程序员,只能云养娃吗?
  9. 1到100的平方和 java,java 1个数等于几个数平方和
  10. 2021华为软挑初探——代码实现
  11. MIKE水动力笔记6_如何自己制作实测数据的时间序列文件dfs0
  12. 计算机二级办公软件高级应用有什么用,考计算机二级办公软件高级应用技术证书有什么用途...
  13. FreeBSD安装MySQL
  14. 和平精英显示模拟服务器已满,和平精英模拟器注册已经达到了上限怎么办?原因及解决方法分享...
  15. 通用搜索引擎和垂直搜索引擎的区别
  16. Linux编写脚本实现统计文件和目录
  17. 跟我一起学软考吧 | (中级)多媒体应用设计师—备考软件推荐
  18. 网站首页设计怎么排版?
  19. Pixhawk学习5.2——传感器标定之陀螺仪
  20. GNSS高边坡在线监测预警系统解决方案

热门文章

  1. 微软校时服务器,Microsoft School丨中国南部唯一一所微软学校在哪里?
  2. 教师考编如何选学段?
  3. ParsePosition 作用
  4. 怎么看ssd有没有4k对齐?3分钟包教包会!
  5. Angular教程英雄之旅版本踩坑记录
  6. 手机App自动化测试
  7. 1007 -- Fibonacci 数
  8. ScalaNote11-面向过程练习题2
  9. 盈透证券集团开设新加坡办事处
  10. 九度OJ 1531 货币面值