房间内人群疏散的python简单模拟
房间内人群疏散的python简单模拟
- 说明
- 代码
说明
在11乘11的元胞空间 随机生成5个人,然后人物寻找房门疏散出去.
代码
import numpy as np
import matplotlib.pyplot as pltpeople_number = 5 # 人物生数成设定5
world_size = 11 # 房间长宽11个元胞class People:world = np.zeros((world_size, world_size)) # 这里是定义的静态变量 同一类的 实例对象 共享这一个door = np.array((0, 3)).reshape((1, 2)) # 可注意到这里的变量名前不用写 self.def __init__(self):self.position = None # # 在这里初始化实例对象属性def generate(self, x, y):People.world[x, y] = 1self.position = np.array((x, y)).reshape((1, 2)) def move(self):if (self.position == self.door).all():return 1else:move_matrix = np.array([[-1, -1],[-1, 0],[-1, 1],[ 0, -1],[ 0, 0],[ 0, 1],[ 1, -1],[ 1, 0],[ 1, 1]])distance = np.zeros(9) # distance 初始化for i in range(9):distance[i] = np.sum(np.abs(self.position + move_matrix[i, :] - self.door)) # 路径选择(最近临胞)choose = distance.argmin()# 房间更新People.world[self.position[0, 0], self.position[0, 1]] = 0self.position += move_matrix[choose, :]People.world[self.position[0, 0], self.position[0, 1]] = 1return 0if __name__ == '__main__':a = []for i in range(people_number):a.append(People())a[i].generate(np.random.randint(0, world_size), np.random.randint(0, world_size)) # 随机产生人物时可能重叠fig = plt.figure()plt.imshow(People.world)plt.xticks(())plt.yticks(())plt.ion()plt.show()# print(People.world, '\n') # 类名.属性名 直接访问# a[0].world = xxx # 这样会创建一个同名的 实例对象的属性flags = np.zeros((1, people_number))while np.sum(flags) < people_number:for i in range(people_number):flags[0, i] = a[i].move()plt.imshow(People.world)plt.pause(0.5)
房间内人群疏散的python简单模拟相关推荐
- 用Python简单模拟《原神》抽卡系统
用Python简单模拟<原神>抽卡系统[抽卡模拟器] 简介 代码思想 保底机制 概率 概率公式 代码构建 导入软件包random和os 初始化概率 增加概率 保底机制 创建文件夹 抽卡次数 ...
- python简单模拟登录网站(以登录教务系统为例)
简单参考 Python3实现网站模拟登录 写了个python模拟登录教务系统,具体用到了selenium浏览器自动测试框架,参考了 Flask 的文档 作接口.代码供参考. import time f ...
- 使用Python简单模拟Linux系统的tree工具
Linux系统中有个tree工具可以用比较好看的形式来显示指定文件夹的目录结构.例如下图(来自于网络): 本文代码使用Python对Linux系统的tree命令简单进行了模拟,不过还不是特别像,大家可 ...
- 操作系统银行家算法python简单模拟
40个进程随机申请资源,满足则分配资源. import numpy as np import time import random as rd class PCB:safe_seq=[]#安全序列X= ...
- 用 Python 简单做个 动态模拟太阳系运转 吧
提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...
- 用python画太阳系_用 Python 动态模拟太阳系运转
提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...
- python绘制动态模拟图-如何利用Python动态模拟太阳系运转
前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...
- python模拟太阳系_用 Python 动态模拟太阳系运转
提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...
- 如何利用Python动态模拟太阳系运转
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 前 ...
- 用 Python 动态模拟太阳系运转
文 | 野客 来源:Python 技术「ID: pythonall」 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣 ...
最新文章
- Linux如何实现断点续传文件功能?
- SqlServer在附加数据库时提示:无法打开物理文件**.mdf 操作系统错误拒绝访问
- Java中的HashMap和HashTable到底哪不同?(原文参考来自码农网)
- python的常量和变量_python变量和常量
- 再讲IQueryablelt;Tgt;,揭开表达式树的神秘面纱
- 文石服务器维护,文石BOOX OS 2.0新系统即将上线,联合京东读书推出BOOX书城
- Razor 视图引擎学习
- T研究:国内云BPM市场规模尚小,预计2018年仅为3.29亿元
- vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建
- es6—变量的解构赋值
- java毕业设计水库洪水预报调度系统源码+lw文档+mybatis+系统+mysql数据库+调试
- Eclipse ADT插件版本下载大全
- CameraLink传输协议
- 计算机网络管理员二级考试题,计算机网络管理员(二级)操作鉴定试题A
- 贝叶斯公式的理解【转】
- “智慧路灯”、“一杆多用”、“智慧灯杆”将成为新型智慧城市建设的重要决策部署
- mysql中端口的概念_端口的概念,端口的分类
- Router入门0x205: react-route + redux + react 集成
- 英语思维导图大全 阅读理解(二十一)
- 友华改设备标识命令_电信路由器密码怎么修改,路由器牌子是友华通信
热门文章
- 恋与抽卡模拟器网页_恋与制作人抽卡模拟器-恋与制作人抽卡模拟器软件下载v1.14.1202-k73游戏之家...
- 6. ROS编程入门--路径跟随(Trajectory following)
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- win10局域网 开启网络发现,无法找到本机
- 树莓派WiFi设置固定IP地址
- 资料:《大学英语》精读修订版(全六册)原文及全文翻译
- Oracle基本知识点总结
- 经济机器是如何运行的(观后感)
- linux 卸载skype,在Ubuntu 20.04系统下使用snap和apt安装Skype的方法
- 《MLB棒球创造营》:走近棒球运动·坦帕湾光芒队