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

简介: 为了实现对一楼和二楼不同的疏散时间,复制之前的按钮,创造两个新按钮分别对一楼和二楼进行控制。在MyFloor1中,选择colOut,按照Ctrl键移动,复制一个colOut1出来。好像服务的延迟时间太长了,可以调小一点,设置为uniform(0.5, 1.0)为了区分一楼和二楼,在Main中调整MyFloor2的高度为40。把等待时间设置长一点,设置为uniform(1.5, 2.0)为了控制人们的逃生目的地,我们先拖拽一个集合出来。在Main中,把MyFloor2拖拽出来。

@[toc]


一、Agent类的概念

在这里插入图片描述

二、行人疏散仿真

2.1 仿真模型示意图

在这里插入图片描述

2.2 具体实现步骤

首先,新建模型

在这里插入图片描述
新建一个MyFloor1对象,代表第一个楼层
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建矩形墙,并放到原点

在这里插入图片描述
建立如下的模型,需要注意的是:

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

在这里插入图片描述
修改PedSource到达根据为inject()函数调用

在这里插入图片描述
在启动时执行命令【作用是一次性生成20个人】:pedSource.inject(20);

在这里插入图片描述

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

在这里插入图片描述
放置视角区域和三维窗口

在这里插入图片描述
启动时执行命令:viewArea.navigateTo();

在这里插入图片描述
运行,查看效果

在这里插入图片描述

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

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

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

在这里插入图片描述

根据上述逻辑,布局如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进行连线

在这里插入图片描述

新增两个目标线和两个墙
在这里插入图片描述

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

在这里插入图片描述
为按钮加上单击事件

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

在这里插入图片描述

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

在这里插入图片描述

修改集合的相关属性

在这里插入图片描述

打开行动图
在这里插入图片描述

拖拽一个行动图出来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
定义当前搜索到的最小距离

在这里插入图片描述

拖拽出一个for循环
在这里插入图片描述
获取人离当前遍历到的出口的距离

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

在这里插入图片描述

加入逻辑判断
在这里插入图片描述

k = i;
minDistance = curDistance;

在这里插入图片描述
定义返回值

在这里插入图片描述
设置pedGoTo1的目的地

colOut.get(actionChart(ped));

在这里插入图片描述
运行查看效果

在这里插入图片描述

接下来我们创建二楼

首先复制MyFloor1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除部分组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删掉这两个目标线

在这里插入图片描述
在这里插入图片描述

创建一个行人类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在Ped中加入变量

在这里插入图片描述
修改变量类型和名称
在这里插入图片描述
把所有enter和pedSource的智能体类型设置为Ped

在这里插入图片描述
设置MyFloor2中的pedGoTo

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述
修改colOut1的属性

在这里插入图片描述
设置pedEnter的目标线:

colIn.get(ped.stairIndex);

在这里插入图片描述

在Main中,把MyFloor2拖拽出来

在这里插入图片描述

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

main.myFloor1.enter.take(agent);

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
为了区分一楼和二楼,在Main中调整MyFloor2的高度为40

在这里插入图片描述

运行查看最终效果

全部疏散的效果
在这里插入图片描述

先疏散一楼再疏散二楼

在这里插入图片描述

先疏散二楼再疏散一楼

在这里插入图片描述

目录
相关文章
|
8月前
|
机器学习/深度学习 算法 计算机视觉
基于深度学习网络的美食检测系统matlab仿真
基于深度学习网络的美食检测系统matlab仿真
|
8月前
|
机器学习/深度学习 算法 计算机视觉
m基于深度学习网络的美食识别系统matlab仿真,带GUI界面
m基于深度学习网络的美食识别系统matlab仿真,带GUI界面
96 0
|
供应链 BI Windows
基于Flexsim的供应链建模与仿真课程设计(上)
基于Flexsim的供应链建模与仿真课程设计
410 0
基于Flexsim的供应链建模与仿真课程设计(上)
|
供应链 数据挖掘
基于Flexsim的供应链建模与仿真课程设计(下)
基于Flexsim的供应链建模与仿真课程设计
465 0
【仿真建模】第四课:AnyLogic入门基础课程 - 轨道交通仿真入门讲解
拖拽出一个trainSource,设置其车厢数量为4(默认为11,车厢太多会超出轨道,导致报错),设置轨道上的位置为起点。运行查看效果(我这里运行前设置trainSource的间隔时间为1分钟了)其中,中间的trainMoveTo的方向要设置为反向,因为列车需要倒车。其中每个trainMoveTo的路线都设置为从当前到目标轨道自动计算。加入延迟,不让列出顺利到达和销毁,而是在到达后等一段时间再销毁。改造轨道,弧形是按住Alt键得到的。定义轨道上的起点和终点。创建车型类型:列车头。创建车厢类型:列车身。
292 0
【仿真建模】第四课:AnyLogic入门基础课程 - 轨道交通仿真入门讲解
|
索引
【仿真建模】第二课:AnyLogic入门基础课程 - 行人仿真空间逻辑讲解
每个智能体都有个属性index,从0到n,所以我们创建多层建筑没必要一层一层建立,只需要把一层建筑封装成一个类,然后拖动出来,使用类似for循环的机制,去复制即可。指定初始位置,index*20,代表每层高度为20,通过index自增的索引进行高度自增。这里要注意,一定要将矩形墙的中心对准原点,因为在复制封装好的类时,它会以原点为参考原点。设置墙的颜色(大家自己选一个颜色即可),透明度设置为100(主要是为了能看清建筑内部)在工程面板找到刚新建的层,然后修改dZ为40(高度为40)
565 0
【仿真建模】第二课:AnyLogic入门基础课程 - 行人仿真空间逻辑讲解
【仿真建模】第五课:AnyLogic入门基础课程 - 地铁车站仿真讲解
为了更好的控制是否显示热力图,在Main中复制启动限流的复选框,创建一个是否显示热力图的复选框。拖拽一个目标线,放到如下图所示的位置,该线代表非限行状态下,行人需要到达的目的地。绘制一个如下图所示的路径作为缓冲路线,形状可以自己定义,不一定要和我一样。再拖拽一个pedGoTo出来,跟随缓冲路线,代表限行状态下的行走路线。绘制一个用于控制行人出现的目标线,最好长一点,因为行人出现比较随意。将可见设置为否,让墙成为逻辑上的墙,即,在运行时不可见的墙。在Main窗口中,画一个如下图所示的墙,只留下入口。
958 0
【仿真建模】第五课:AnyLogic入门基础课程 - 地铁车站仿真讲解
【仿真建模】第一课:AnyLogic入门基础教程 - 行人库入门讲解
点击面板,选择第三个图标,就是行人库行人库分为两个区域(空间标记和模块)从左边拽一个矩形墙出来把墙的外观的填充类型改为无填充拽两条目标线出来拽一个pedSource模块出来,作用是设置人的起始点设置目标线为左边的那条同样的,拽出一个Ped GoTo,作用是设置人的目的地,设置它的目标线为右边的那条最后,拽一个PedSink出来,作用是将到达目的地的人进行销毁点击运行加速播放运行效果展示。
941 0
【仿真建模】第一课:AnyLogic入门基础教程 - 行人库入门讲解
|
机器人
《机器人自动化:建模、仿真与控制》——1.5 习题解答
本节书摘来自华章计算机《机器人自动化:建模、仿真与控制》一书中的第1章,第1.5节,作者[法]吕克·若兰(Luc Jaulin),译 黄心汉 彭刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2079 0