房间内人群疏散的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简单模拟相关推荐

  1. 用Python简单模拟《原神》抽卡系统

    用Python简单模拟<原神>抽卡系统[抽卡模拟器] 简介 代码思想 保底机制 概率 概率公式 代码构建 导入软件包random和os 初始化概率 增加概率 保底机制 创建文件夹 抽卡次数 ...

  2. python简单模拟登录网站(以登录教务系统为例)

    简单参考 Python3实现网站模拟登录 写了个python模拟登录教务系统,具体用到了selenium浏览器自动测试框架,参考了 Flask 的文档 作接口.代码供参考. import time f ...

  3. 使用Python简单模拟Linux系统的tree工具

    Linux系统中有个tree工具可以用比较好看的形式来显示指定文件夹的目录结构.例如下图(来自于网络): 本文代码使用Python对Linux系统的tree命令简单进行了模拟,不过还不是特别像,大家可 ...

  4. 操作系统银行家算法python简单模拟

    40个进程随机申请资源,满足则分配资源. import numpy as np import time import random as rd class PCB:safe_seq=[]#安全序列X= ...

  5. 用 Python 简单做个 动态模拟太阳系运转 吧

    提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...

  6. 用python画太阳系_用 Python 动态模拟太阳系运转

    提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...

  7. python绘制动态模拟图-如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  8. python模拟太阳系_用 Python 动态模拟太阳系运转

    提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周边行星 ...

  9. 如何利用Python动态模拟太阳系运转

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 前 ...

  10. 用 Python 动态模拟太阳系运转

    文 | 野客 来源:Python 技术「ID: pythonall」 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣 ...

最新文章

  1. Linux如何实现断点续传文件功能?
  2. SqlServer在附加数据库时提示:无法打开物理文件**.mdf 操作系统错误拒绝访问
  3. Java中的HashMap和HashTable到底哪不同?(原文参考来自码农网)
  4. python的常量和变量_python变量和常量
  5. 再讲IQueryablelt;Tgt;,揭开表达式树的神秘面纱
  6. 文石服务器维护,文石BOOX OS 2.0新系统即将上线,联合京东读书推出BOOX书城
  7. Razor 视图引擎学习
  8. T研究:国内云BPM市场规模尚小,预计2018年仅为3.29亿元
  9. vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建
  10. es6—变量的解构赋值
  11. java毕业设计水库洪水预报调度系统源码+lw文档+mybatis+系统+mysql数据库+调试
  12. Eclipse ADT插件版本下载大全
  13. CameraLink传输协议
  14. 计算机网络管理员二级考试题,计算机网络管理员(二级)操作鉴定试题A
  15. 贝叶斯公式的理解【转】
  16. “智慧路灯”、“一杆多用”、“智慧灯杆”将成为新型智慧城市建设的重要决策部署
  17. mysql中端口的概念_端口的概念,端口的分类
  18. Router入门0x205: react-route + redux + react 集成
  19. 英语思维导图大全 阅读理解(二十一)
  20. 友华改设备标识命令_电信路由器密码怎么修改,路由器牌子是友华通信

热门文章

  1. 恋与抽卡模拟器网页_恋与制作人抽卡模拟器-恋与制作人抽卡模拟器软件下载v1.14.1202-k73游戏之家...
  2. 6. ROS编程入门--路径跟随(Trajectory following)
  3. 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
  4. win10局域网 开启网络发现,无法找到本机
  5. 树莓派WiFi设置固定IP地址
  6. 资料:《大学英语》精读修订版(全六册)原文及全文翻译
  7. Oracle基本知识点总结
  8. 经济机器是如何运行的(观后感)
  9. linux 卸载skype,在Ubuntu 20.04系统下使用snap和apt安装Skype的方法
  10. 《MLB棒球创造营》:走近棒球运动·坦帕湾光芒队