




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Subway Entrance Model(地铁站入口)在这个模型里面我们来使用行人库来创建一个地铁站入口的模型,这个模型的背景是:人流从入口到地铁站,其中有两种人流,一类是已经买好了票的人,这种人直接前往闸机检票进站;而另一类是需要买票的人,他们会先在售票窗口买完票,然后再前往闸机检票进站。这里面,我们有两个买票窗口,4台闸机。在这个模型里面,我们会接触到以下的建模技巧:u 创建行人行走环境,障碍物u 如何模拟闸机以及排队;如何模拟买票以及排队u 如何创建行走规则流程-即如何使用行人库模块Step 1. 创建一个新的模型首先,让我们来创建一个新的模型 创建新模型1. 点击菜单栏上的新建按钮 New . “New Model”对话框就会出现,如下图2. 在“Modelname” 输入框中指定模型的名字,在这里,我们为模型命名为Subway Entrance.3. 点击Browse按钮可以指定模型的保存路径 .4. 点击 Next.按钮进入下一步;现在你需要选择是从一个现有的模板来创建模型还是创建一个空白的模型,因为我们现在是要学习建模,所以我们选择创建一个空白的模型。 5. 点击Finish按钮结束向导.这样,一个新的模型就建立起来了,这个模型中默认会包含一个叫做“Main”的active object class(这是Anylogic特有的一个类,支持图形操作等等的功能),还有一个叫做“Simulation”的“experiment”(用于设定模型【如:叫做Main的那个active object class】的运行方式的类)PS.在Anylogic中,一个active object class就可以是一个可以运行的模型,因为Anylogic支持层次化建模且完全面向对象,所以一个active object class可以包含另一个active object class或者其他的Anylogic支持的对象。In the center of the workspace you will seethe graphical editor. It shows the diagram of the Main class. By default it does not contain any elements.在下图工作区的中间,我们能看到一个图形编辑框,它对应的是Main这个类,默认情况下,其中不会有任何东西在软件的左边,你可以看到 Projectview(工程视图).工程视图可以让您能够访问到你目前打开到工作区的所有的工程以及工程当中的所有的元素。右边是Palette view(调色板视图), 还有在界面中间底部的Propertiesview(属性视图).Palette视图中包含建模所用的所有的模块,你可以通过从Palette视图中拖模块到中央工作区来建立模型 ,同时可以使用中央工作区下方的属性窗口来修改放入的模块的属性,这个视图是上下文相关的,你可以点击任何模块,然后在此视图中改变其相应的属性。当然,最后建立完模型,不要忘记点击Save.按钮Step2.创建模型动画下面我们来为我们的模型创建动画,为了简单起见,我们可以先导入一张底图,然后在这个底图上,使用Palette视图中的Presentation下面的图形工具来创建我们的完整动画。加入底图1. 首先,打开Palette视图的 Presentation 页 ,如下图;在这个页面下包含了我们要使用的图形工具和模块。2. 在Presentation页中拖出一个Image模块,放到中央建模区。3. 下面设置这个模块的属性,点击这个模块后,在中央建模区的下面的Properties (属性视图)中. 点击 Add Image按钮, 然后选择下面的路径指示的图片。pluginscom.xj.anylogic.examples.modelsSubway Entranceentrance_layout.png(如果实在找不到可以使用系统自带的搜索功能搜索“entrance_layout.png”)导入进来后你应该可以看到如下图所示的界面:4. 我们需要我们的底图保持原始大小,所以我们点击Original Size 勾选框,如图. 5. 于是,这张图片应该如下图所示:: 现在,我们的底图就加进来了。但是,底图对于模型,只不过是一堆像素的集合而已,对于实际的模型是没有任何逻辑上的意义的,所以,我们还需要在此基础上加入一些Anylogic的图形,这些图形用来帮助Anylogic的行人库的模块知道哪些地方是障碍,哪些地方是入口,哪些地方是闸机等等。首先,让我们先把墙(障碍)给画出来。 描绘建筑物墙壁1. 因为Anylogic默认会自动对齐,这样画图不能够比较随心所欲,也不太方便绘画,所有你可以把自动对齐取消掉,如下图。2. Draw the polyline as shown in the figure below. To draw a polyline, drag thePolyline element from the Presentation page of the Palette view into the graphical editor.Then double-click the drawn polyline to switch to editing polyline points mode. In this mode you can add new points by double-clicking on the polyline and move points by dragging them. 按照下图所示,画出Polyline(折线)。在此介绍一下一些绘画的技巧,你在Palette栏下双击,当Polyline模块的图标后面出现一只小铅笔的时候,就可以点击中央建模区,此时开始绘画Polyline,每点击一次鼠标左键,增加一个点,当您想结束折线绘画的时候,双击鼠标左键,则结束折线。此时,如果您希望修改您画完的折线,请在线上双击,会出现现在线上所有的点,如下图,你可以在折线上面没有点的地方双击鼠标左键添加一个点,也可以在有点的地方双击鼠标左键删除一个点。另外,你可以拖动这些点。3. 接下来我们设置这条折线的属性,如图: o Name: walls. o 改变线宽(line Width)为2pt,使得线显示得更清楚一些. o 让这个折线是一个封闭的折线,如上图第三步,勾选Close Polyline. 如果要使得这个图形在模型运行的时候不显示出来,我们可以去属性视图的Dynamic页面下把Visible 属性的值设为false,如下图一般情况下,一个环境当中的障碍是由很多图形组成的,所以,我们需要创建一个“图形组(Group)”来包含所有的代表障碍物的图形。接下来,我们创建一个组,并且把上面我们画的折线放到这个图形组中。创建一个组用来包含上面画的折线(墙壁) 1. 从Palette中的presentation页面下拖一个Group元素2. 保留其名字,Name:group. 3. 把折线加入到这个组里面,首先点击折线,使得其处于选中的状态(即会有一个线框将其包围)4. 右键单击(精确的在折线上面单击),在弹出的选项中选择Grouping|Add to existing group 5. 接下来鼠标会变成一个瞄准镜的样子,Group图标也会有紫色的框显示出来,用鼠标在Group的图标上点击。. Now you should define entry and exit points for the pedestrian flow.接下来,我们绘制两条线段(line)来代表入口和出口(当然,也可以使用折线来代表) 绘制入口1. 从presentation页面下双击 Line,接着在建模界面单击两次可绘制一条线段,如下图: 2. 把线段命名为Name :entry.绘制出口(进站) exit 1. 同样的方法,在下图所示的位置绘制出口2. 命名为 Name :exit.注意,不管是代表出口的线段还是入口的线段都严格的处于一开始绘制的代表墙的折线的内部。这很容易理解,一个人必须穿过封闭的墙壁是不可能发生的,所以必须在其内部,当然,如果不封闭,则无此需求,这是一个目标是否可达的问题。同时,要注意线更不能压住墙,这也很容易理解,一个人不可能从墙中出现(我们并没有仿真灵异事件的需求。),所以要注意,设置为行人目标的线是不能与代表障碍物的图像有重叠部分的(甚至最好不要靠得太近)。Step 3.加入行人流现在图画得差不多了,我们开始加入逻辑模块,把图形和逻辑联系起来,首先我们来加入一个最简单的行人流。创建行人流 1. Anylogic通过流程图来描述模型,打开Palette视图下的pedstrain library页面,按照下面的大图的拖入模块并连接。注意每一个模块都有红色的字标注了它在模板库中的名字。模块的连接方法是,在模块的小方框里面双击,会出现一条连接线,把连接线的另一端的小圆圈放入下一个模块的小方框中,当圆圈变为绿色时,表示可以连接,此时单击鼠标左键,建立连接成功。如果双击小方框不能出现连接线,则可以到Pallette视图的General页面下拖入connector模块,这个模块就是连接线,将其两端的圆圈分别拖入需要连接的两个模块的小方框中即可。如下图下面我们来设置 PedGround 模块.这个模块包含了我们的这个2D仿真环境的一些基本的设置,并且为行人流设置了一个基本的“Ground”(类似于楼层的概念),不同“Ground”的人流互相之间不会有影响。在这里,我们只做一些简单的设置: 设置这个“Ground”中的障碍物,在 Walls (group, optional) 栏中填入我们上面设置的图形组,就是包含了我们所画的折线的那个group。在这里“Wall”是这个属性的名字 ,而“(group, optional)”这个则代表了这个框中应该填入的参数的类型,比如“group”就代表图形组(group),而“optional(可选的)”则表示这个栏中可以不填任何东西,就是说本层没有障碍物。在后面我们会看到很多的模块的输入框的名字的格式都是这样的,注意一些这种细节建模就不容易出错。如果你需要这个模块的全部属性的含义,请参看Pedestrian Library Reference Guide,中的 Pedestrian Library objects. 接下来配置 PedSource 模块.PedSource (行人源头)这个模块就像其名字一样,是一个行人的产生器,在这里你可以定义行人的到达频率和个数等等的参数,同样,我们在这里只是做一个简单的配置。 o Specify the PedGround object,在 Arrival ground (PedGround) 栏中填入我们在前面定义的PedGround模块的名字,就叫做pedGround。这是为了告诉这个模块产生的行人,他们应该处于什么样的楼层,什么样的位置。o 在 Appears at (line, polyline) 栏中填入我们在前面定义的代表入口的线段的名字,叫做entry,行人会在这条线段的随机的一个点上出现. 接下来设置 PedGoTo 模块,这个模块是定义行人的移动的,当行人进入这个模块的时候,这个模块就告诉他应该走到哪里去,目的地的定义方式可以一个点(Pixel)或者是一条线段(Line)。同样的,在这里我们只是做一些很简单的设置,我们使用这个模块让行人在source出现以后知道自己应该前往出口(exit) 我们在Target (point,line) 栏中填入我们上面画的代表出口的线段的名字exit,注意这里的“(point,line)”,如前所述,这个告诉了我们这个栏中可以填入的参数类型,这里是点(point)和线段(line),点(point)在presentation页面中对应的是Pixel(像素). 7. PedSink 这个模块一般作为一个流程的终点,这个模块会把行人从环境中删除,这个模块我们不需要做任何的修改。 8. PedConfiguration 包含了模型的基本设置,其中比较重要的是像素和“(公制)米”的对应关系,默认是以10个像素点对应一个“(公制)米”.其中还包含了是否描绘行人的目标,仿真的刷新间隔等属性。在这里,我们让其保留默认设置。Step 4. 设置Simulation(仿真)运行在前面已经提到了一个Anylogic的工程默认组成,包括一个ActiveObjectClass: Main 和一个用来运行Main的实验(experiment):Simulation.我们在Main当中建立完一个模型后,要让experiment来帮我们按照我们的方式来运行Main这个模型,我们在这里就使用默认类型:Simulation来运行,我们下面做一些最基本的运行配置。默认情况下,一个模型只运行100个时间单位,由于行人仿真的特点,我们不需要一个既定的时间点来结束模型运行,所以我们希望把运行改为我们自己点击停止按钮来停止。改变停止条件 1. 在 Project view视图,点击Simulation:Main的选项,使其处于选中的状态.2. 接下来在Properties 视图中选择Model Time 。3. 在 Stop 下拉框的部分选择Never ,现在,模型运行由用户手工停止Step 5. 运行模型!现在我们创建了一个最简单的可运行的行人库模型,我们在运行之前需要将其编译 一下,点击菜单栏上的Build Model 按钮,检查是否有错误,有错误的话会显示在Problems view (错误视图),你可以在此视图中直接双击错误,软件会自动将其定位到错误的产生处。.成功编译之后,没有任何错误了,你就可以运行你的模型了。注意,错误视图中的黄色三角形中间有“!”号的警告标志是没有关系的,这个不属于影响模型运行的参数。启动模型 1. 点击菜单栏上的 Run,如果软件中不止打开了一个工程,则需要,点击右边一点的下拉箭头,选择正确的模型运行I点击 Run the model and switch toMain view ,运行界面如图:通过上方工具栏中的速度控制,模型速度可以Slow down(减慢) 或者点击 按钮可以让模型以最快速度运行Step 6.加入检票(闸机)我们已经加入行人的移动,下面我们尝试着加入服务(Service),就是这一类活动要求行人在一定的位置延时(delay)一定时间。比如闸机检票和后面要做的售票窗口。首先,让我的来加入一些图形来代表我们的服务(闸机)。绘制4条line代表闸机 1. 绘制条line(线段)如图,用这些线段来代表闸机。2. 这些线段的起点和终点的顺序非常重要,因为我们的这个动画显示的效果是代表行人的点从线段的起点匀速运动到终点,所以我们需要这些线段的起点在左手边,而终点在右手边。. 3. 你可以使用一些便捷的方法来创建一系列类似的图形。首先,画出一条线段,命名为gate1,然后按住Ctrl键不放,用鼠标拖动gate1,你就会发现gate1被复制了一条,并且这条线段的名字叫做gate2,这是Anylogic提供的一个相当便捷的功能,所有的模块都支持这个操作,尾部的数字每复制一个就递增1,这样创建一组相似的东西就很方便了。有关创建组,按住Ctrl不放,接着逐个点击代表闸机的线段,直到四个都同时选中,接着鼠标右键点击,在弹出框中选择: Grouping/Create a group.接下来您就可以看见界面中多出来了一个group的图标,请将其命名为 gatesGroup. 4. 同样,你可以使用相同的方法来绘制4条折线(Polyline)来代表在闸机前排队的队列形状。注意,这个地方的起点和终点的顺序同样很重要,因为排队是从起点排到终点,所以队列的形状的起点要靠近代表闸机的线段的起点,同时,要注意这些线都不要压到障碍物。5. 使用同样的方法把这四条代表排队队列形状的折线也组成一个组,命名为: gatesQueuesGroup. 6. 在队列的前面画一条线段,叫做lineBeforeGates.因为现在我们的逻辑变化了,我们要这些人先走到这条线上,然后选一个闸机排队,接着再走向exit,然后出去,所以我们加入这样一条线。接下来让我们来修改流程图。修改流程图 1. 按照下图修改流程: 注意其中的层次关系,pedservice是加入到流程中的模块,而pedservices(多了一个s)是下面不加入流程的模块,这两个模块的作用是不一样的,我们会在下面配置参数的时候看到。2. 把 PedGoTo 中的目标改为lineBeforeGates,如图3. 配置 PedServices 模块.PedServices 这个模块的作用是维护图形,并且把图形转化为一系列逻辑上的服务,可以这么说,这个模块管着图形,所以在其属性中填入的主要是图形。 Name: gates. 在Services (group of lines)一栏中填入一开始我们画的代表闸机的四条线段line的组group的名字gatesGroup 。. 而在 Queues (group of lines, polylines) 一栏中我们填入一开始我们绘制来代表排队形状的折线polyline的组合的名字:gatesQueuesGroup. 其他的使用默认设置就可以,值得一提的是,在delay一栏中的是行人在此服务(检票)中花费的时间的随机分布,这个应该由建模人员采集分析,我们在这里因为主要目标是教授软件使用方法,所以直接使用默认值。 Service type也使用默认值: Delay and pass through.这个属性就是决定人在这个服务的时候的表现方式的,默认是人会以一个速度从线段的起点匀速运动到终点,另外一个选项则是行人会在线段终点静止一段时间(delay时间)然后离开服务。 配置 PedService 模块.PedService 这个模块用来加入到流程当中,这个模块的主要属性用来填入我们在前面配置的好的PedServices模块,在这个模块中,我们要使用那个模块帮我们解析好的图形等等的信息,所以要注意,这里填入的是PedServices 的名字。 o 把PedServices 模块的名字:gates填入到Service (PedServices)一栏,注意这里括号中的要求。接着您可以再一次的运行您的模型,以观察修改后的效果。 Step 7. 动态修改行人的到达间隔In the current model the passenger arrival rate isfixed. However,AnyLogic provides a set of controls enabling changing the model parameters at the model runtime.Now we will introduce how you can varyparameters of Pedestrian Library objects dynamically. We want to interactively change the passenger arrival rate to assure acceptable performance of service points with hypothetic load. We will introduce the corresponding control element in the presentation to change the rate interactively.当前的模型下行人的到达间隔是固定的。不过,Anylogic提供了动态的改变这个时间间隔的途径,这也是Anylogic的交互功能比较强大的一个表现。添加一个滑动条来动态改变行人的到达 1. 打开Palette 视图下面的Controls页面,拖一个滑动条Slider进入模型,如下图 2. 设置滑动条属性,最小是0/hours()每小时零个人,最大则是5000/hour() ,配置如下图所示3. 把1000/hour()设置为默认值 Default value. 4. 关键的是这句话,这是一段操纵pedsource这个模块的代码,它使得pedSource把自己的rate重新设置,如果有疑问请了解一下java的基本。在Action.一栏中填入pedSource.set_rate(value); T为滑动条添加说明 1. 你可以使用presentation中 Text 模块来给滑动条添加说明 2. 在 Text 属性中填入需要说明的文字即可,如下图: 3. 同样的,在滑动条的两边加入说明,说明其最大值最小值。运行模型,拉动滑动条,观察其作用。Step 8. 加入售票窗口现在我们已经加入了闸机,现在我们加入售票窗口,这里的原理与闸机是一样的,主要为了展示一下分支模块的作用,以及让大家对前面的比较容易混淆的pedservice和pedservices 有一个复习。修改模型动画1. 画两条line在下图所示的地方用来代表售票窗口,这回的起点和终点就无所谓了,因为这次的pedservices中的t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变量为二次型的除数函数与自守L函数傅里叶系数均值的深度剖析与前沿探索
- 变系数非线性耗散波动方程柯西问题的多维度探究与求解策略
- 2025年风湿免疫科学疾病诊治综合考核答案及解析
- 2025年老年心血管病学冠心病患者血脂监测知识检测试卷答案及解析
- 2025年全科医学健康教育知识测试答案及解析
- 2025年营养学营养评估与指导考察答案及解析
- 2025年整形外科手术后护理指导考试答案及解析
- 2025年泌尿内科常见泌尿系统疾病治疗模拟考试卷答案及解析
- 2025年心理咨询心理评估实操操作模拟测试卷答案及解析
- 2025年眼科常见疾病诊断鉴别考核答案及解析
- 机电安装工程验收用表
- 小红书运营合同协议
- 家事财产申请表
- 2025病历书写基本规范
- 学校用电协议书范本
- 安徽离婚协议书范本
- 规范化司法所模板
- 2025年公共营养师考试历年真题与试题答案
- DB15T 3943-2025紫花苜蓿冬春灌技术规程
- 安委会-成立安全生产管理委员会的通知
- 2025既有建筑消防改造设计指南
评论
0/150
提交评论