NS元胞自动机模型--python实现

2023-10-27

在这里插入图片描述
实现:

]# -*- 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] = v0
    return 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 = 0
    for 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] + v
            s = s % cell         #边界处理
            df.loc[i+1,s] = v    #更新下一轮车辆状态变化值

    df.to_csv("result.csv")
    return df

if __name__ == "__main__":
    df = NS()
    print(df)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NS元胞自动机模型--python实现 的相关文章

  • 漂亮的地图打印机会抛出类型错误

    我已经使用配置了漂亮的打印机http wiki eclipse org CDT User FAQ How can I inspect the contents of STL containers 3F http wiki eclipse o
  • 如何将 Google Cloud Storage 中的许多文件设为私有?

    我进行了很多研究 但无法为此提出解决方案 以下是我用来在 GCP 中公开所有文件的代码 def make blob public bucket name blob name Makes a blob publicly accessible
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 从 Python 将分层 JSON 数据写入 Excel xls?

    我想将一些数据从 python 写入 xlsx 我目前将其存储为 JSON 但它从 Python 中输出什么并不重要 单个文章的 JSON 如下所示 Word Count 50 Key Words Blah blah blah Foo Fr
  • 从 Spark 数据帧中过滤大量 ID

    我有一个大型数据框 其格式类似于 ID Cat date 12 A 201602 14 B 201601 19 A 201608 12 F 201605 11 G 201603 我需要根据大约 500 万个 Is 的列表来过滤行 最直接的方
  • 如何解决CDK CLI版本不匹配的问题

    我收到以下错误 此 CDK CLI 与您的应用程序使用的 CDK 库不兼容 请将CLI升级到最新版本 云程序集架构版本不匹配 支持的最大架构版本为 8 0 0 但发现为 9 0 0 发出后cdk diff命令 我确实跑了npm instal
  • 多个列表和大小的所有可能排列

    在 python 中使用以下命令很容易计算简单的排列itertools permutations https docs python org 3 library itertools html itertools permutations 你
  • 如何不断地将 STDOUT 发送到我的 python TCP 服务器?

    我有简单的 python echo 服务器 它使用套接字 并向客户端回显随机数 我有另一个程序 每 2 秒将值打印到标准输出 如果它只是一个脚本 我可以像这样重定向 stdout python script py 并像这样在脚本中获取它da
  • 将带有 md5 消息摘要和 DESede/CBC/PKCS5Padding 的 3DES 加密的 java 代码转换为 python

    我有这个工作java代码 它使用3DES加密对密码进行加密 import java security MessageDigest import java util Arrays import java util Base64 import
  • telethon 库:如何通过电话号码添加用户

    我正在研究 Telegram 的 Telethon 库 它可以使用 Telegram API 充当 Telegram 客户端 重要提示 这是电报客户端 API https core telegram org telegram api 而不是
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • 安塞布尔 + 10.11.6

    我在 非常 干净地安装 10 11 6 时遇到了 Ansible 的奇怪问题 我已经安装了brew zsh oh my zsh Lil snitch 和1password 实际上没有安装其他任何东西 我安装了ansible brew ins
  • 如何在自定义 django 命令中抽象出命令代码

    我正在我的应用程序下编写自定义 django 命令management commands目录 目前我在该目录中有 6 个不同的文件 每个文件都有不同的命令来解决独特的需求 然而 有一些实用程序是它们所共有的 抽象出这些公共代码的最佳方法是什
  • 如何使用 Python 实现并行 gzip 压缩?

    使用python压缩大文件 https stackoverflow com questions 9518705 big file compression with python给出了一个很好的例子来说明如何使用例如bz2 纯粹用 Pytho
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 向结构化 numpy 数组添加字段

    将字段添加到结构化 numpy 数组的最简洁方法是什么 是否可以破坏性地完成 或者是否有必要创建一个新数组并复制现有字段 每个字段的内容是否连续存储在内存中 以便可以有效地完成此类复制 如果您使用 numpy 1 3 还有 numpy li
  • 如何输入可变的默认参数

    Python 中处理可变默认参数的方法是将它们设置为无 https stackoverflow com a 366430 5049813 例如 def foo bar None bar if bar is None else bar ret
  • Django 按小时过滤

    我找到了那个链接 http code djangoproject com attachment ticket 8424 time filters diff http code djangoproject com attachment tic
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim

随机推荐

  • valgrind使用心得

    1 definitely lost 有的时候实际上应该是still reachable 2 uninitialised value s 如 int c GetC if c gt 3 问题不出在c 实际是在GetC里的东西没初始化的 3 换行
  • 冒泡排序及其优化

    冒泡排序及其优化 图解冒泡排序 算法排序步骤 依次比较相邻两个元素 如果第一个比第二个大 则交换两个元素位置 对每一对相邻元素做同样的工作 直到最后一对 这样每次最后一对的元素排序后都是最大的 重复以上步骤直到排序完成 基本算法实现 pub
  • Salesforce解散中国团队,国产SaaS软件如何完美替代

    近日 全球最大的SaaS软件公司Salesforce突然宣布 解散中国区团队 同时关闭位于中国香港的办公室 转由阿里云代销业务 Salesforce的中国淘金之路彻底折戟 国产软件替代外资软件 水土不服等多重因素导致巨头败退 作为全球Saa
  • UKN服务器找不到,ukn6eo.top服务器iP

    2020 10 30 2021 05 02 31 13 76 99 2020 10 30 2021 05 02 31 13 97 245 2020 10 30 2021 05 02 69 63 189 16 2020 11 02 2021
  • 【STM32+ESP-12S连接腾讯云物联网开发平台 1】云平台的创建和AT固件烧录

    腾讯云物联网开发平台创建和ESP 12S的固件烧录 前言 一 腾讯云物联网开发平台的创建 1 创建产品 2 配置产品和创建设备 3 设备三元组说明 二 ESP 12S固件烧录 1 固件获取 2 固件烧录 三 连接测试 1 连接WiFi 2
  • tcp与udp

    tcp 服务端回复完SYN ACK之后 就建立连接 1 为什么是三次 而不是两次 服务端回复完SYN ACK之后 就建立连接 这是为了防止因为已失效的请求报文 突然又传到服务器引起错误 意思就是 假设采用两次握手建立连接 客户端向服务端发送
  • Win10编译64位curl(支持https)

    前期准备 1 安装NASM 官网https www nasm us 安装完成需要设置环境变量PATH 2 安装ActivePerl Download Install Perl ActiveState 3 下载openssl zlib cur
  • 矩阵乘法(C语言)

    Description 矩阵乘法是线性代数中最基本的运算之一 给定三个矩阵 请编写程序判断 是否成立 Input 输入包含多组数据 每组数据的格式如下 第一行包括两个整数p和q 表示矩阵A的大小 后继p行 每行有q个整数 表示矩阵A的元素内
  • 在VMware15.5上安装Ubuntu16.04(18.04)的具体流程及可能出现的问题(保姆级)

    在VMware15 5上安装Ubuntu16 04 18 04 的具体流程及可能出现的问题 保姆级 用镜像安装时已经下载好了两个可用的Ubuntu选项分别是Ubuntu16 04和Ubuntu18 04两个版本 下载时注意与两个版本兼容的R
  • 查看字符对应utf-8编码

    查看字符对应utf 8编码 http www mytju com classcode tools encode utf8 asp
  • 第十二章 微服务核⼼组件之⽹关

    1 什么是微服务的 关和应 场景 什么是 关 API Gateway 是系统的唯 对外的 介于客户端和服务器端之间的中间层 处理 业务功能提供路由请求 鉴权 监控 缓存 限流等功能 统 接 智能路由 AB测试 灰度测试 负载均衡 容灾处理
  • python pymssql_python pymssql — pymssql模块使用指南

    前言 最近在学习python 发现好像没有对pymssql的详细说明 于是乎把官方文档学习一遍 重要部分做个归档 方便自己以后查阅 pymssql是python用来连接Microsoft SQL Server的一个工具库 package 其
  • T5、RoBERTa、悟道·天鹰、紫东太初、CPM作者谈基础模型前沿技术丨大模型科研、创业避坑指南...

    导读 大语言模型日益火爆 学者们的研究方向是指明灯 那么相关大模型重要项目的主要贡献者怎么看 6月9日的北京智源大会 基础模型前沿技术 论坛邀请了T5 RoBERTa 悟道 天鹰 紫东太初 CPM等重要模型工作作者出席 图注 五位嘉宾现场讨
  • Deeplearning4j 实战 (19):基于胶囊网络(Capsule Network)的手写体数字识别

    Eclipse Deeplearning4j GitChat课程 https gitbook cn gitchat column 5bfb6741ae0e5f436e35cd9f Eclipse Deeplearning4j 系列博客 ht
  • 阿里云盘开启公测,这些“暗号”助你云盘容量扩容2.5T(内含10+兑换码)

    关注ITValue 看企业级最新鲜 最价值报道 上次发了阿里云盘内测福利码之后 不少盆友后台哭诉 名额有限 没领到内测福利 不过很快啊 今天 阿里云盘 正式开启了公测 这次我又收集了一些 码 他们分别是 上云上阿里云 阿里云购爆款 达摩院招
  • 大数据毕设 - 大数据二手房数据分析与可视化(python 爬虫)

    文章目录 1 前言 1 课题背景 2 实现效果 2 1 二手房基本信息可视化分析 2 2 二手房房屋属性可视化分析 3 数据采集 3 1 链家网网站结构分析 3 2 网络爬虫程序关键问题说明 4 数据清洗 4 1 原始数据主要需要清洗的部分
  • 菜鸟入门之一:在Ubuntu18.04下利用VS code编写C语言的配置

    出于学 zhuang 习 bi 开始接触linux 所以尝试在电脑上安装了ubuntu 不想一发不可收拾 逐渐被Linux的魅力所征服 作为一名ITboy自然首先想到的是如何解决写代码的问题 由于Linux水平还处于菜鸟水准 所以什么利用v
  • Centos中ifcfg-ens33文件参数解释

    DEVICE 接口名 设备 网卡 USERCTL yes no 非root用户是否可以控制该设备 BOOTPROTO IP的配置方法 none static bootp dhcp 引导时不使用协议 静态分配IP BOOTP协议 DHCP协议
  • java JSONObject转换为String格式

    在使用微信支付时 需将从前台接收的JSONObeject 格式数据转换为String类型 其具体的转换过程如下 JSONObject jsonObject JSONObject parseObject XmltoJsonUtil xml2J
  • NS元胞自动机模型--python实现

    实现 coding utf 8 NS模型 场景 周期型边界 道路长度 cell 1000个元胞 车辆初始分布为均匀分布 初始速度 v0 vmax 5 随机慢化概率 p 0 1 仿真时步为2000时步 从500时步开始采样 1表示元胞 其他值