为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > AnyLogic使用帮助文档

AnyLogic使用帮助文档

2023-01-01 6页 doc 465KB 28阅读

用户头像 个人认证

皓月千里

暂无简介

举报
AnyLogic使用帮助文档一槪要本文档内容包含AnyLogic的简单介绍,AnyLogic使用入门以及在使用过程中常见的一些问题。且所右•内容仅针对pedestrian模型。二安装除按正常模式安装Anylogic以外,我们还需要额外添加一个shp文件导入控件,以及安neatbeanO控件的安装万法很间单,把InputShape_1.0.0.jar和openmap.jar复制到C:\ProgramFiles\AnyLogic6Professional\plugins卞即可击体路径请参考自己的anylogic安装路径)。三创建1个简单的pedestrian...
AnyLogic使用帮助文档
一槪要本文档内容包含AnyLogic的简单介绍,AnyLogic使用入门以及在使用过程中常见的一些问题。且所右•内容仅针对pedestrian模型。二安装除按正常模式安装Anylogic以外,我们还需要额外添加一个shp文件导入控件,以及安neatbeanO控件的安装万法很间单,把InputShape_1.0.0.jar和openmap.jar复制到C:\ProgramFiles\AnyLogic6Professional\plugins卞即可击体路径请参考自己的anylogic安装路径)。三创建1个简单的pedestrian模型1打开anylogic程序•File->new->modeL2输入模型文件相关信息,next。Klodelnwe:Hod«12Location:|c:'Doe55tsgdTavi.P包ck$&《:nodSampleModels°PedestrianDynamics的一个示例。五进阶功能。这一块内容比较乱,基本上以我在做地铁疏散遇到的问题为主。1path的画法可以这样理解,ped按path行走,实际是按于path关联的一连串ties行走。表示path的polyline.以+点为起点,每条tie必须放在polyline的点上面。1ine2line3/polyline2以上polyline2位path。左下带+的点为path起点,ped先到达Iine2上一点,再通过Iine3上一点,以此来完成该path。Iine2和Iine3为ties。创建一个group.把这两条line加入这个group,并把group名填入PedGround的Addtionalties,这些ties才被认可,可以起作用。2PedGototarget缓冲区的实现。本身PedGoto有一个参数Targetreachtolerance来实现该功能,但是由于实际效果来看,该参数对nttarget但是对支持很不好。实现该方法时,需指定pedGotocan8l端【I连接的对象。方法一:自定义算法计算缓冲区。代码如2distanceLine(doubleax,doubleay,doublebx,doubleby,doubleex,doublecy)doublef=(bx-ax)*(cx-ax)+(by-ay)*(cy-ay);到¥[线ab的投彫丿if(f〈0)returndistancePoints(ax,ay,ex,cy);doubled=(bx-ax)*(bx-ax)+(by-ay)*(by-ay);if(f>d)returndistancePoints(bx,by,ex,cy);f=f/d;doublefDx=ax+f*(bx-ax);doublefDy=ay+f*(by-ay);doublefDistanceCD=sqrt(pow((cx-fDx),2)+pow((cy-fDy),2));fDistanceCD;returndistanceLine(doubleax,doubleay,doublebx,doubleby)doxiblefDistance=sqrt(pow((ax-bx),2)+pow((ay-by),2));returnfDistance;该方法主要是计算ped与targetline的距离。如果距离小于某个值,判定ped已经实现该pedGoto*调用PedGoto.cancel(ped)进入下个对象。方法二:利用自定义缓冲区。当ped进入PedArea以后,判定ped已经实现该pedGoto,调用PedGoto.cancel(ped)进入下一个对象。3PedArea的几个用途电梯。PedAreaGroundisMoving可以设定地面的移动速度。町以控制区域开关。Enableaccesscontrolnf以控制区域开关.当选定该参数之后,町以调用pedArea.setOpen(booleansOpen)来设置区域开关。一个比较常见的用法就是当区域内人数达到一定限制后,就不允许再继续进去了。可以实现靠边行走。Keepdirection参数会给进入区域的每一个ped指定方法的加速度,该方向就是Keepdirection的值,可以是下拉列表的east*west,sourth.north,也町以是特定的弧度值。限制区域内peds的行走速度。可以通过SpeedisLimited来限制ped的最大速度.每个ped的速度增加百分比的速度。可以通过Speedismultiplied来给每个ped设定百分比。PedArea的缺陷。由于pedArea在计算时,会把当前pedGround里所有的ped都计算一遍,所以,当pedArea的数量过多时,会极大地增加数据计算量。4函数的用法。函数的用途主要体现在&杂数据的处理。比如main的初始化,比如多对象的选择。函数的便用,在一定程度上可以大幅度的简化模型的复杂度,把柑同的对象画在同-条流程图上面。下面举个例子,肖进入pedGoto的peds有同一个目的地,但是可以选择两条不同的路径时,选择函数来实现路径的选择是一个很好的办法•从General>|»拖一个Function控件到模型中。设置参数,返回值,然后编码。请注盘返回值类型必须与path的类型保持一致,都必须是ShapePolyLineo5專件的用法。班件有三种模型,一个是时间模型,肖时间到了触发爭件。具体又町以分为occursonce.Cyclic和usercontrol。第二个是Rate,比率模型《第三个是Condition,条件模型。结合函数,基本可以满足我们的需求。6队列的实现。AnyLogic提供了一种队列的模型*PedService。PedService中有一个名为Service的参数参数类型为PedServiceSoPedServices具体实现队列模型。PedServices包含两种队列,一个是服务队列,Services.该队列存在两种模式,justdelay.Delayandpassthrough«就好比地铁买票和过闸机。买票接受服务时,只需要站在原地和地铁工作人员交流就可以了,可以选择justdelay模式,而过闸机接受的服务则是先刷卡,然后沿着闸机II过去,则ikDelayandpassthrough.PedServices的另外一个队列则是Queues,即排队队列。该队列存在两种选择模式,一是选择队列的方式,Longestqueue.Shortestqueue,Closestqueue,Manual一个是选择服务队列的方式Closestqueue.Manual。町以根体的需求来选择。7环境切换。坏境的切换。例如从一楼定到一楼这种。两个坏境原本是ffl互独立的,町以通过Pedchangeground来实现切换。该模型的参数设置很简单,仅Destinationground个。但在在M的时候有些地方需要注意,切换ground前需要到达的目的地和两种环境的边缘保持一定的空间,以方便进行切换。8导入shp文件。其中原点坐标X,原点坐标Y需要记录卜来,因为后续录像时会用到。比例鬧要与PedConfiguration中的Animationscale,pixelspermeter—致。数据名称自定义。其他数据自定义,相•的互关联不大。六NetBeans卜•口JAnylogic己经冇了AnyLogic,为何还需要一个专门把Anylogic中的代码拷贝到NetBeans卜”运行?主要是因为之前我们重载的时候,都在netbeans中进行的。我们制作录像时,需要记录毎个ped的坐标位置,还有其他一些信息,但是这里面有很多数据是我们无法育接调用的,需要首先继承一些类,然后通过巫我等方法,使这些数据可以为我们所用。例如要获取ped的坐标,但足,在ped中,坐标变量是friendly类型的,所以我们就需要在com.xj.anylogic.libraries.pedestrian包中创建个ped的子类MyPed.然后在MyPed中新建个public函数,返回ped的x,y坐标。这样就町以实现我们的婆求了。在使用既冇工程中的代码时,冇几个注盘点。SimMain中有个函数chargePos(MyPedped,doublex,doubley).该函数的作用是将录像中的xy坐标还原为实际的xy坐标。我们在导入地图数据的时候,记录了一个原点坐标,那么现在模型中的坐标只需要按照这个原点坐标进行偏移就M以还原为实际坐标了。Simulation里面的Main全部改为SimMain.因为我们在SimMain里⑥载了一些函数。Simulation仅仅是一个模拟器的一些运行设置,可以不用拷贝。宜接使用工程原有的代NetBeans的工程中。为了拷贝方便,M以将NetBeans码。但是main的代码必须从AnyLogic从拷贝到的包名称与AnyLogic的包名称保持一致。4ped等的子类,应该放在com.xj.anylogic.libraries.pedestrian下面。并/王盘修改代码的package.改为packagecom.xj.anylogic.libraries.pedestrian;5现在的NetBeans对AnyLogic的支持并不完美。在使用6.5的库的时候,并不支持PedSelectOutputo我们在建立模型的时候需要SelectOutput替代6町以使用pv已的反编译器查看库的源代码。7当从别人那里拷贝NetBeansIfE到本地之后,请确认项目属性的项目文件夹是否一致・七AnyLogic创建口己的对象AnyLogic现冇的对彖,不一定可以完全满足我门的需求,在某些特定的需求之N我们需要创建属于自己的对彖,来实现我们的冃标。一个很简单的例子,我们需要在一个特定的多边形范W内随机生成指定数量的peds.而现右的对彖,都是在线或者点上生成。为了实现这一需求,我们需要自己创建一个新的对彖。建立一个新的对彖,需要考虑是out还是in。我们创建的对象,没有进,只有出,所有只有一个out端I」。右键选项目名称・>new->ActiveObjectClass。Name定义PedDispose。首先添加一个out端【1。将General中的port拖到界面中。命名为out。并将showname的勾选去掉。在Construetorcode中填入OutPortPush(this),指定该port的构造函数。右疋in端II,则填lnPort(this).然后画pedDispose在模型中的显示图标。画一个圆,并用一条line连接起来。注意圆和line都要勾选icon.Icon卜面就要定义一些生成ped所相关的信息.创建一个参数。例如生成多少人。从general中拖parameter控件到界而中。填写所需的一些参数设置。精选文库精选文库PAGE\*MERGEFORMAT#PAGE\*MERGEFORMAT#®TextUbGl:I初始数量(个)-Ch电ckButt'TLORadioButtonOCmboOEditableComboOSliler-HypsrArrayEditordiameter,color,生成pedInitNumber.pedInitShape*成ped和ped离开时自定义代码。创建一个变m,pedVector,用来保存生成的peds0叼ShownameIIIgnoreFu*blicSho瞥atrir使用同样的方法添加其它参数。在这里我们需要的有speed,pedGround.pedConfig.初始配置信息。ped数量和生成范出。onCreaterPed,onOuType:Access;publicV□staticIIConstantBSaveinsnapshetObooLem'OintOdoublftOstring©Other;IVector创建4个函数IxutijVue:newVector(>〉InitPed,GoOut.GoOutAILPedDisposeCreate由于ped的成员变S都是friendly.只能在同一个包中访问,所以要实现该对象,必须NetBeans的工程卜•完成。publicbooleanPedDispose(){if(pedlnitShape==null||pedConf==null)returnfalse;ArrayListary=pedInitShape.getShapesO;for(inti二0;ixl?xmax:x1;ymin=yminyl?ymax:yl:for(intp=10;p0)MyPedp=(MyPed)pedVectorget(O);this.GoOut(p):当端I丨port接受这个pedZ后•该ped就可以开始行动了•MyPed是继承与Ped的子类。具体代码看I:程屮的代码。还剩最后一步•那就是在模块的启动代码中调用生成ped的函数。GeneralAdvancedAceatFreyie*DeszriptionNs食:|PMoVe.输入刚才记录的坐标。将该点移动到坐标原点。4I“▼Tm:叱ZStoiEditine5,aveEditsiVIde..■Buffer.,.CopyphJU…Merger.•KnionInterseetMoreEditingTools»Snapping...Editor->SnappingVertexo电i®Xbc$1Editor—kiuIgwma021选RotateTool垃®^=1乂C同ET«k:CreateHcvFeaturexlLayerH-农©0RotateTool将描点拖到坐标原点。X按卜・按犍a。输入要旋转的角度。输入的角度需要自己来计算.导出旋转后的shp文件。VertexEdg0曰Layersa0品尙EopyXKerioveOpenAttribute[ableloinsandRelatesgoomToLayerVisibleScaleRggUseSymbolLevelsSelectionLabelFeaturesConvertFeaturesteGr吕hies...O&taRepairDataSource..SaveAsLa"erFile...ExportData...MakeP«rm«zteztlProperties..-VicftMetadata,・,i_ilopoxoBZiLLWioin"□TopTgynod"输入保存路ii样就完成了补充二帘见拥堵情况的处理方法为ped设定路径,尽量避免太多人进入容易造成拥堵的区域。为容易造成拥堵的区域设定PedArea.使进入pedArea的ped的Size更小,速度更快。让进入其中的人更快的离开该区域。为容易造成拥堵的区域设定PedArea*限定进入pedArea的人数.可以配合pedWait使用。
/
本文档为【AnyLogic使用帮助文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索