AnyLogic使用帮助文档_第1页
AnyLogic使用帮助文档_第2页
AnyLogic使用帮助文档_第3页
AnyLogic使用帮助文档_第4页
AnyLogic使用帮助文档_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 AnyLogicAnyLogic 使用帮助文档使用帮助文档 一 概要 本文档内容包含 AnyLogic 的简单介绍 AnyLogic 使用入门以及在使用过程中常见的 一些问题 且所有内容仅针对 pedestrian 模型 二 安装 除按正常模式安装 AnyLogic 以外 我们还需要额外添加一个 shp 文件导入控件 以及 安装 neatbean 控件的安装方法很简单 把 InputShape 1 0 0 jar 和 openmap jar 复制到 C Program Files AnyLogic 6 Professional plugins 下即可 具体路径请参考自己的 anylogic 安装路径 三 创建一个简单的 pedestrian 模型 1 打开 anylogic 程序 File new model 2 输入模型文件相关信息 next 3 选择 use template to create model 并选择 Pedestrian Dynamics Next 精品文档 2欢迎下载 4 Add waiting area 和 Add service and queue 都不勾选 Finish 5 运行程序观察效果 四 基础对象介绍 关于各个对象的属性行为 仅说明一些比较常用的 构建一个完整的模型 以下对象是必不可少的 PedConfiguration PedGround PedSource PedSink PedGoTo 下面一一介绍 1 PedConfiguration PedConfiguration 主要标示模型中的一些配置信息 1 Time step seconds 时间步长 即 pedestrian 每隔多久移动 1 次 0 3 是通过社会调查获得的一个比较合理的数据 这个值越小 peds 移动的更精 确 但是需要更多的计算 2 Animation scale pixels per meter 精品文档 3欢迎下载 PedConfiguration 中需要格外关注一个数据 即多少像素为 1 米 模型中的单位分为 像素和米 所以在使用中需要注意他们之前的差别 3 Render ped as Ped 的显示样式 circle 在表现上要好看一些 但是会让程序慢一下 Cross 会让程序跑的快一些 point 会更快 但是 point 无法表现出 ped 的大小 2 PedGround PedGround 主要表示模型的模拟器环境 可以简单的理解为墙的设置 1 Walls group optional peds 不能穿过的地方 简称为墙 可以通过 walls 来表示实际的模拟器环境 参数可以 null 不为 null 时必须为 group 2 Walls touch tolerance pixels 人与墙之间的间隔 单位为像素 0 2 米是一个比较合适的值 3 Additional ties group of lines optional 额外的 ties 当 PedGoto 的寻路方式为 manual 时会使用到该参数 可以为空 4 Show advanced parameters 勾选将显示一些高级设置 a Gap between tie and wall meters 系统自动生成的 tie 和墙之间的距离 缺省值为 0 3 米 这个值必须大于 0 b Maximum tie length meters 系统自动生成的 tie 的最大长度 缺省值为 5 米 在某些模型里面 将该参数设置到最小 可以显著提高性能 c Minimum angle between ties radian tie 之间的最小角度 单位为弧度 缺省值为 0 3 由两点之间生成的 tie 如果与角平分线之间的角度小于该值 将会被移除 d Delete crossing ties 是否删除相交的 tie e Show nodes 程序运行过程中 是否显示节点 f Color for nodes 节点颜色 g Show edges 是否显示边缘 h Color for edges 边缘颜色 i Show ties 是否显示 tie j Color for ties tie 的颜色 k Show obstacles 精品文档 4欢迎下载 显示障碍 l Color for obstacles 障碍的颜色 3 PedSource PedSource 主要作用是生成 ped 通常作为模型的起点 1 Creation mode 选择 ped 生成模式 是单个模式还是组模式 2 Ped arrivals defined by 指定生成 ped 的模式 a Arrival rate peds per time unit 按时间比率生成 如 1000 hour b Ped interarrival time 间隔时间生成 如 exponential 1000 hour 具体时间间隔由 AngLogic 内部定义 该参数仅定义生成比率 c Rate table peds per minute 生成比率有 Table Function 提供 d Arrival table 生成比率有 Table Function 提供 Table Function 中一个条目 20 10 表示第 20s 生成 10 个人 e Manual call inject method 手动调用 inject int n 函数生成人 3 Group arrivals defined by group 和 ped 的区别主要在于 ped 每次生成时单个的 group 生成每次生成是以 group 的 size 大小的人为 1 个单位生成的 如 group 的 size 为 10 则每次生成 人的时候都是 10 人 生成模式与 ped 相同 4 Limited number of arrivals 是否限制生成 ped 的数量 如果选择是 则需要输入人数上限 5 New ped ped 实例化 可以实例为 new ped 或者 ped 的子类 6 Diameter meters ped 的大小 单位为米 7 Comfortable speed meters per sec ped 的速度 米 秒 默认值为 uniform 0 5 1 8 Animation shape 设定动画演示时的形状 具体用途还没摸索出来 9 color 设定生成的 ped 的颜色 默认情况下为空 随机设置颜色 10 Arrival ground PedGround ped 生成时所处的环境 11 Appears at line polyline ped 生成时所处的位置 12 Initial Spedd meter per second 初始速度 单位为米 秒 13 With offset meters 精品文档 5欢迎下载 定义 ped 生成位置位于线上的位置 缺省位置为 uniform 0 length 如果改成 uniform 0 5 length 0 75 length 则表示生成的均匀分布在线段 折线距离 起点 1 2线段 折线长度到 3 4 长度的这一部分 起点为折线 线段上带 的点 14 initial direction radian ped 生成时的初始朝向 单位为弧度 可选择下拉单提供的 North South East West 15 On exit 可以在这里编码 ped 离开该组件时会调用这段代码 16 advanced parameters Ped simulation algorithm ped 的模拟器算法 默认值为 pedConf algorithmSocialForceModel 这个参数我 没有深入研究过 高端人士可以自己编写模拟器算法来试验一下 4 PedGoTo 设定 ped 的行走目的地和路线 1 Target point line ped 的目的地 可以是 line 也可以是 point 2 Path choice mode 有两种模式 auto 和 Manual auto 模式 ped 会自动计算到达目的地的路径 Manual 模式 ped 则根据指定的 path 行走 若选择 Manual 模式 则必须在 Parameters 栏 path 项填写设定的 path path 为 ShapePolyLine 3 Target reach tolerance meters 定义 ped 距离目的地多少范围内算完成 pedgoto 4 On enter On exit On cancel 分别定义 ped 进入 离开 取消 pedGoto 时的行为 5 Blocking detection timeout 当 ped 进入一个死角 从该位置无法沿既定路径到达目的地 则会进入 timeout 计时 超时后会重新计算路径 5 PedSink ped 的最终端 进入该对象的 ped 会从画面消失 1 On enter 自定义进入该对象的行为 以上为该模型中对象的基本介绍 其他模型介绍请参考 help 文档 关于其他对象的示例 请查看 help Sample Models Pedestrian Dynamics 的三个示例 五 进阶功能 这一块内容比较乱 基本上以我在做地铁疏散遇到的问题为主 1 path 的画法 可以这样理解 ped 按 path 行走 实际是按于 path 关联的一连串 ties 行走 表示 path 的 polyline 以 点为起点 每条 tie 必须放在 polyline 的点上面 精品文档 6欢迎下载 以上 polyline2 位 path 左下带 的点为 path 起点 ped 先到达 line2 上一点 再通过 line3 上一点 以此来完成该 path line2 和 line3 为 ties 创建一个 group 把这两条 line 加入这个 group 并把 group 名填入 PedGround 的 Addtional ties 这些 ties 才被 认可 可以起作用 2 pedGoto target 缓冲区的实现 本身 PedGoto 有一个参数 Target reach tolerance 来实现该功能 但是由于实际效果来看 该参数对 point target 效果很不错 但是对 line target 支持很不好 实现该方法时 需指定 pedGoto cancel 端口连接的对象 方法一 自定义算法计算缓冲区 代码如下 distanceLine double ax double ay double bx double by double cx double cy doubledouble f bx ax cx ax by ay cy ay c到直线ab的投影点不在线段ab上 而且离a点最近 ifif fd returnreturn distancePoints bx by cx cy c在ab线段上的投影点在线段ab上 f f d doubledouble fDx ax f bx ax doubledouble fDy ay f by ay doubledouble fDistanceCD sqrt pow cx fDx 2 pow cy fDy 2 returnreturn fDistanceCD distanceLine double ax double ay double bx double by doubledouble fDistance sqrt pow ax bx 2 pow ay by 2 returnreturn fDistance 该方法主要是计算 ped 与 targetline 的距离 如果距离小于某个值 判定 ped 已经实现该 pedGoto 调用 PedGoto cancel ped 进入下一个对象 方法二 利用 pedArea 自定义缓冲区 当 ped 进入 pedArea 以后 判定 ped 已经实现该 pedGoto 调用 PedGoto cancel ped 进 入下一个对象 3 pedArea 的几个用途 精品文档 7欢迎下载 1 电梯 pedArea 有一个参数 Ground is Moving 可以设定地面的移动速度 2 可以控制区域开关 Enable access control 可以控制区域开关 当选定该参数之后 可以调用 pedArea setOpen boolean sOpen 来设置区域开关 一个比较常见的用法就是当区 域内人数达到一定限制后 就不允许再继续进去了 3 可以实现靠边行走 Keep direction 参数会给进入区域的每一个 ped 指定方法的加速度 该方向就是 Keep direction 的值 可以是下拉列表的 east west sourth north 也可以是特定的弧度值 4 限制区域内 peds 的行走速度 可以通过 Speed is Limited 来限制 ped 的最大速度 5 每个 ped 的速度增加百分比的速度 可以通过 Speed is multiplied 来给每个 ped 设定百分比 pedArea 的缺陷 由于 pedArea 在计算时 会把当前 pedGround 里所有的 ped 都计算一遍 所以 当 pedArea 的数量过多时 会极大地增加数据计算量 4 函数的用法 函数的用途主要体现在复杂数据的处理 比如 main 的初始化 比如多对象的选择 函数的使用 在一定程度上可以大幅度的简化模型的复杂度 把流程相同的对象画在 同一条流程图上面 下面举个例子 当进入 pedGoto 的 peds 有同一个目的地 但是可以选择两条不同的路 径时 选择函数来实现路径的选择是一个很好的办法 从 General 中拖一个 Function 控件到模型中 设置参数 返回值 然后编码 请注意返回值类型必须与 path 的类型保持一致 都必须是 ShapePolyLine 5 事件的用法 事件有三种模型 一个是时间模型 当时间到了触发事件 具体又可以分为 Occurs once Cyclic 和 user control 第二个是 Rate 比率模型 第三个是 Condition 条件模 型 结合函数 基本可以满足我们的需求 6 队列的实现 AnyLogic 提供了一种队列的模型 PedService PedService 中有一个名为 Service 的 参数 参数类型为 PedServices PedServices 具体实现队列模型 PedServices 包含两种队列 一个是服务队列 Services 该队列存在两种模式 just delay Delay and pass through 就好比地铁买 票和过闸机 买票接受服务时 只需要站在原地和地铁工作人员交流就可以了 可以选择 just delay 模式 而过闸机接受的服务则是先刷卡 然后沿着闸机口过去 则是 Delay and pass through PedServices 的另外一个队列则是 Queues 即排队队列 该队列存在两种选择模式 一是选择队列的方式 Shortest queue Closest queue Manual 一个是选择服务队列的 方式 Longest queue Closest queue Manual 可以根据具体的需求来选择 7 环境切换 环境的切换 例如从二楼走到一楼这种 两个环境原本是相互独立的 可以通过 Ped 精品文档 8欢迎下载 change ground 来实现切换 该模型的参数设置很简单 仅 Destination ground 一个 但 在在画的时候有些地方需要注意 切换 ground 前需要到达的目的地和两种环境的边缘保持 一定的空间 以方便进行切换 8 导入 shp 文件 其中原点坐标 X 原点坐标 Y 需要记录下来 因为后续录像时会用到 比例需要与 Ped Configuration 中的 Animation scale pixels per meter 一致 数据名称自定义 其他 数据自定义 相互关联不大 六 NetBeans 下的 Anylogic 已经有了 AnyLogic 为何还需要一个专门把 AnyLogic 中的代码拷贝到 NetBeans 下运 行 主要是因为之前我们重载的时候 都在 netbeans 中进行的 我们制作录像时 需要记 录每个 ped 的坐标位置 还有其他一些信息 但是这里面有很多数据是我们无法直接调用 的 需要首先继承一些类 然后通过重载等方法 使这些数据可以为我们所用 例如要获取 ped 的坐标 但是 在 ped 中 坐标变量是 friendly 类型的 所以我们就 需要在 com xj anylogic libraries pedestrian 包中创建一个 ped 的子类 MyPed 然后在 MyPed 中新建一个 public 函数 返回 ped 的 x y 坐标 这样就可以实现我们的要求了 在使用既有工程中的代码时 有几个注意点 1 SimMain 中有个函数 chargePos MyPed ped double x double y 该函数的作用 是将录像中的 xy 坐标还原为实际的 xy 坐标 我们在导入地图数据的时候 记录了一个原 点坐标 那么现在模型中的坐标只需要按照这个原点坐标进行偏移就可以还原为实际坐标 了 2 Simulation 里面的 Main 全部改为 SimMain 因为我们在 SimMain 里重载了一些函数 3 Simulation 仅仅是一个模拟器的一些运行设置 可以不用拷贝 直接使用工程原有 的代码 但是 main 的代码必须从 AnyLogic 从拷贝到 NetBeans 的工程中 为了拷贝方便 可以将 NetBeans 的包名称与 AnyLogic 的包名称保持一致 精品文档 9欢迎下载 4 ped 等的子类 应该放在 com xj anylogic libraries pedestrian 下面 并注意修 改代码中的 package 改为 package com xj anylogic libraries pedestrian 5 现在的 NetBeans 对 AnyLogic 的支持并不完美 在使用 6 5 的库的时候 并不支持 PedSelectOutput 我们在建立模型的时候需要 SelectOutput 替代 6 可以使用 java 的反编译器查看库的源代码 7 当从别人那里拷贝 NetBeans 工程到本地之后 请确认项目属性的项目文件夹是否一 致 七 AnyLogic 创建自己的对象 AnyLogic 现有的对象 不一定可以完全满足我们的需求 在某些特定的需求之下 我 们需要创建属于自己的对象 来实现我们的目标 一个很简单的例子 我们需要在一个特定的多边形范围内随机生成指定数量的 peds 而现有的对象 都是在线或者点上生成 为了实现这一需求 我们需要自己创建一个 新的对象 建立一个新的对象 需要考虑是 out 还是 in 我们创建的对象 没有进 只有出 所 有只有一个 out 端口 右键选项目名称 new Active Object Class Name 定义 PedDispose 首先添加一个 out 端口 将 General 中的 port 拖到界面中 命名为 out 并将 show name 的勾选去掉 在 Constructor code 中填入 OutPortPush this 指定该 port 的构 造函数 若是 in 端口 则填 InPort this 然后画 PedDispose 在模型中的显示图标 画一个圆 并用一条 line 连接起来 注意 圆和 line 都要勾选 icon 下面就要定义一些生成 ped 所相关的信息 创建一个参数 例如生成多少人 从 general 中拖 Parameter 控件到界面中 填写所需的一些参数设置 编写注释 精品文档 10欢迎下载 使用同样的方法添加其它参数 在这里我们需要的有 speed diameter color 三种初 始属性 pedGround pedConfig 初始配置信息 pedInitNumber pedInitShape 生成 ped 数量和生成范围 onCreaterPed onOut 生成 ped 和 ped 离开时自定义代码 创建一个变量 pedVector 用来保存生成的 peds 创建 4 个函数 InitPed GoOut GoOutAll PedDisposeCreate 由于 ped 的成员变量都是 friendly 只能在同一个包中访问 所以要实现该对象 必 须 NetBeans 的工程下完成 public boolean PedDispose if pedInitShape null pedConf null return false ArrayList ary pedInitShape getShapes for int i 0 i ary size i 教室编码 double xmin xmax ymin ymax x1 y1 ShapePolyLine pl ShapePolyLine ary get i int n pl getNPoints xmin xmax pl x pl getPointDx 0 ymin ymax pl y pl getPointDy 0 for int j 1 j n j x1 pl x pl getPointDx j y1 pl y pl getPointDy j 精品文档 11欢迎下载 xmin xmin x1 xmax x1 ymin ymin y1 ymax y1 for int p 0 p 0 MyPed p MyPed pedVector get 0 this GoOut p 当端口 port 接受这个 ped 之后 该 ped 就可以开始行动了 MyPed 是继承与 Ped 的子类 具体代码看工程中的代码 还剩最后一步 那就是在模块的启动代码中调用生成 ped 的函数 至此就完成了新的对象的生成 只是该对象比较特殊 需要借助于 NetBeans 才能实现具体 的功能 当然了 当不需要调用一些敏感数据的时候 是可以在 AnyLogic 中实现的 附件中有一个 闸机系统 就可以在 AnyLogic 中运行 八 AnyLogic 的碰撞原理 这一部分主要来自于向华的指导 我只是做一份简单的归纳 模型在运行的时候 实际上整块地图地图被划分成一块一块的小网格 在 PedConfiguration 中有一个参数 Time step seconds 即多少秒走一步 默认值 为 0 3 我们称之为心跳时间 每隔 0 3s ped 会按照既定路线前进一定距离 这个距离 有 ped 的速度决定 当所有 ped 到达位置后 进行碰撞检测 是否有 ped 重叠或者小于两 个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论