【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

这篇具有很好参考价值的文章主要介绍了【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


学习、参考链接:Anylogic入门基础课程

一、Agent类的概念

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

二、行人疏散仿真

2.1 仿真模型示意图

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

2.2 具体实现步骤

首先,新建模型

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
新建一个MyFloor1对象,代表第一个楼层
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
创建矩形墙,并放到原点

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
建立如下的模型,需要注意的是:

  • 服务的延迟时间、PedWait的延迟时间的单位都设置为分钟
  • PedSource、PedGoTo和PedWait都设置在矩形范围

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
修改PedSource到达根据为inject()函数调用

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
在启动时执行命令【作用是一次性生成20个人】:pedSource.inject(20);

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

回到Main窗口,将MyFloor1拖拽出来

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
放置视角区域和三维窗口

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
启动时执行命令:viewArea.navigateTo();

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
运行,查看效果

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

好像服务的延迟时间太长了,可以调小一点,设置为uniform(0.5, 1.0)

把等待时间设置长一点,设置为uniform(1.5, 2.0)

接下来,我们让行人可以成功撤离

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

根据上述逻辑,布局如下

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

进行连线

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

新增两个目标线和两个墙
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

回到Main窗口,往布局中加入一个按钮

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
为按钮加上单击事件

myFloor1.pedService.cancelAll();
myFloor1.pedGoTo.cancelAll();
myFloor1.pedWait.cancelAll();

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

为了控制人们的逃生目的地,我们先拖拽一个集合出来

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

修改集合的相关属性

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

打开行动图
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

拖拽一个行动图出来
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
定义当前搜索到的最小距离

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

拖拽出一个for循环
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
获取人离当前遍历到的出口的距离

ped.distanceTo(colOut.get(i).getX(),colOut.get(i).getY())

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

加入逻辑判断
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

k = i;
minDistance = curDistance;

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
定义返回值

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
设置pedGoTo1的目的地

colOut.get(actionChart(ped));

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
运行查看效果

接下来我们创建二楼

首先复制MyFloor1
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
删除部分组件

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
删掉这两个目标线

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

创建一个行人类型

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
在Ped中加入变量

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
修改变量类型和名称
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
把所有enter和pedSource的智能体类型设置为Ped

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
设置MyFloor2中的pedGoTo

进入时执行代码:ped.stairIndex=actionChart(ped);

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

修改疏散按钮的点击事件为

myFloor1.pedService.cancelAll();
myFloor1.pedGoTo.cancelAll();
myFloor1.pedWait.cancelAll();
myFloor2.pedService.cancelAll();
myFloor2.pedGoTo.cancelAll();
myFloor2.pedWait.cancelAll();

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

在MyFloor1中,选择colOut,按照Ctrl键移动,复制一个colOut1出来

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
修改colOut1的属性

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
设置pedEnter的目标线:

colIn.get(ped.stairIndex);

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

在Main中,把MyFloor2拖拽出来

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

到MyFloor2中,设置exit离开时执行代码:

main.myFloor1.enter.take(agent);

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

为了实现对一楼和二楼不同的疏散时间,复制之前的按钮,创造两个新按钮分别对一楼和二楼进行控制

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
为了区分一楼和二楼,在Main中调整MyFloor2的高度为40

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

运行查看最终效果

全部疏散的效果
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

先疏散一楼再疏散二楼

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解

先疏散二楼再疏散一楼

【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解文章来源地址https://www.toymoban.com/news/detail-450732.html

到了这里,关于【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Anylogic仿真系统的节假日城市轨道交通大客流优化—以春熙路地铁站为例

    目 录 1绪论 1 1.1研究背景与意义 1 1.2国内外研究现状 1 1.2.1国外研究现状 1 1.2.2国内研究现状 2 1.3研究内容 2 2春熙路地铁站交通特性分析 4 2.1车站布局分析 4 2.1.1春熙路站概况 4 2.1.2站厅层设施布局分析 4 2.1.3站台层设施布局分析 5 2.2车站运营流程分析 6 2.2.1乘客进出站流程 6

    2024年02月02日
    浏览(34)
  • Spark第三课

    shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多 修改分区规则 3.HashMap扩容为什么必须是2的倍数? 当不是2的倍数时, 好多

    2024年02月11日
    浏览(29)
  • Kafka第三课

    Flume 由三部分 Source Channel Sink 可以通过配置拦截器和Channel选择器,来实现对数据的分流, 可以通过对channel的2个存储容量的的设置,来实现对流速的控制 Kafka 同样由三大部分组成 生产者 服务器 消费者 生产者负责发送数据给服务器 服务器存储数据 消费者通过从服务器取数据 但

    2024年02月13日
    浏览(26)
  • MyBatis第三课

    目录 回顾  #和$区别 #(预编译SQL)和$(即时SQL,它是进行的字符串拼接)的区别,其中之一就是预编译SQL和即时SQL的区别 原因: 两者的共同点 MaBits可以看作是Java程序和Mysql的沟通桥梁,底层还是(jdbc) 访问数据库还得是Mysql 多表查询(慢) 1.通常情况下,数据库集群是很多

    2024年01月20日
    浏览(28)
  • 第三课:GPT

    GPT出现的原因 未标注的文本数据远多于已标注的文本数据,并且对于不同的下游任务会存在不同的标注方式 GPT的方法原理 半监督学习 基于大量未标注的文本数据,训练预训练语言模型 使用已标注文本数据,对模型针对某一特定下游任务进行finetune,只更改output layer(线性层

    2024年01月21日
    浏览(33)
  • springboot综合案例第三课

    Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。 (https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原

    2024年02月12日
    浏览(24)
  • 初步认识OSPF的大致内容(第三课)

     直连路由(Directly Connected Route)是指网络拓扑结构中相邻两个网络设备直接相连的路由,也称为直接路由。如果两个设备属于同一IP网络地址,那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择的表格,其中记录着直连路由的信息。直连路由表中

    2024年02月11日
    浏览(25)
  • 第三课:C++实现PDF去水印

    目录 1.功能概述与实现方法 2.代码实现 3.代码使用方法 4.PDF加水印原理和方法 4.1.使用“优速水印工厂”给pdf加水印 4.2.使用Acrobat XI软件给pdf加水印 4.3.使用优米处理器给pdf加水印 4.4.使用云朵办公给pdf加水印 4.5.使用livePDF给pdf加水印 PDF去水印是一项非常复杂的任务,需要一定

    2024年02月09日
    浏览(27)
  • C语言第三课-----------加油 加油 加油

     欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com ________________________________________ 紧接上一课,上一篇博客我已经简单介绍了 变量的作用域和生命周期,常量,字符串+转义字符+注释,选择语句,循环语句,函数这些下面我们再接着来介绍C语言其他的 前面可能有些小可爱对

    2024年02月09日
    浏览(24)
  • 昇思MindSpore技术公开课——第三课:GPT

    1.1Unsupervised Language Modelling GPT代表“生成预训练”(Generative Pre-trained Transformer)。GPT模型是由OpenAI公司开发的一种基于Transformer架构的人工智能语言模型。它在大规模文本数据上进行预训练,学习了丰富的语言知识和语境,并能够执行多种自然语言处理任务。 GPT模型的核心思

    2024年01月18日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包