AnyLogic使用幫助文檔_第1頁
AnyLogic使用幫助文檔_第2頁
AnyLogic使用幫助文檔_第3頁
AnyLogic使用幫助文檔_第4頁
AnyLogic使用幫助文檔_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、anylogic使用幫助文檔一 概要本文檔內容包含anylogic的簡單介紹,anylogic使用入門以及在使用過程中常見的一些問題。且所有內容僅針對pedestrian模型。二 安裝除按正常模式安裝anylogic以外,我們還需要額外添加一個shp文件導入控件,以及安裝neatbean??丶陌惭b方法很簡單,把inputshape_1.0.0.jar和openmap.jar復制到c:program filesanylogic 6 professionalplugins下即可(具體路徑請參考自己的anylogic安裝路徑)。三 創(chuàng)建一個簡單的pedestrian模型1 打開anylogic程序

2、,file-new-model。2 輸入模型文件相關信息,next。3 選擇 use template to create model,并選擇pedestrian dynamics。next。4 add waiting area和add service and queue都不勾選。finish。5 運行程序觀察效果。四 基礎對象介紹關于各個對象的屬性行為,僅說明一些比較常用的。構建一個完整的模型,以下對象是必不可少的。pedconfiguration,pedground,pedsource,pedsink,pedgoto。下面一一介紹。1 pedconfigurationpedconfigur

3、ation主要標示模型中的一些配置信息。1) time step, seconds時間步長,即pedestrian每隔多久移動1次。0.3是通過社會調查獲得的一個比較合理的數(shù)據(jù)。這個值越小,peds移動的更精確,但是需要更多的計算。2) animation scale, pixels per meterpedconfiguration中需要格外關注一個數(shù)據(jù),即多少像素為1米。模型中的單位分為像素和米,所以在使用中需要注意他們之前的差別。3) render ped asped的顯示樣式。circle在表現(xiàn)上要好看一些,但是會讓程序慢一下。cross會讓程序跑的快一些,point會更快,但是poi

4、nt無法表現(xiàn)出ped的大小。2 pedgroundpedground主要表示模型的模擬器環(huán)境??梢院唵蔚睦斫鉃閴Φ脑O置。1) walls (group, optional) peds不能穿過的地方,簡稱為墻??梢酝ㄟ^walls來表示實際的模擬器環(huán)境。參數(shù)可以null,不為null時必須為group。2) walls touch tolerance, pixels人與墻之間的間隔,單位為像素。0.2米是一個比較合適的值。3) additional ties (group of lines, optional)額外的ties當pedgoto的尋路方式為manual時會使用到該參數(shù)??梢詾榭?) s

5、how advanced parameters勾選將顯示一些高級設置。a) gap between tie and wall, meters系統(tǒng)自動生成的tie和墻之間的距離。缺省值為0.3米。這個值必須大于0。b) maximum tie length, meters系統(tǒng)自動生成的tie的最大長度。缺省值為5米。在某些模型里面,將該參數(shù)設置到最小,可以顯著提高性能。c) minimum angle between ties, radiantie之間的最小角度。單位為弧度。缺省值為0.3。由兩點之間生成的tie,如果與角平分線之間的角度小于該值,將會被移除。d) delete crossing

6、 ties是否刪除相交的tie。e) show nodes程序運行過程中,是否顯示節(jié)點。f) color for nodes節(jié)點顏色。g) show edges是否顯示邊緣。h) color foredges邊緣顏色。i) show ties是否顯示tiej) color for tiestie的顏色k) show obstacles顯示障礙l) color for obstacles障礙的顏色3 pedsourcepedsource主要作用是生成ped。通常作為模型的起點。1) creation mode選擇ped生成模式,是單個模式還是組模式。2) ped arrivals defined

7、 by指定生成ped的模式。a) arrival rate, peds per time unit按時間比率生成。如 1000/hour()。b) ped interarrivaltime間隔時間生成。如:exponential( 1000 / hour() )。具體時間間隔由anglogic內部定義,該參數(shù)僅定義生成比率。c) rate table, peds per minute生成比率有table function提供。d) arrival table生成比率有table function提供。table function中一個條目(20,10)表示第20s生成10個人。e) manua

8、l (call inject() method)手動調用inject(int n)函數(shù)生成人。3) group arrivals defined bygroup和ped的區(qū)別主要在于,ped每次生成時單個的。group生成每次生成是以group的size大小的人為1個單位生成的。如group的size為10,則每次生成人的時候都是10人。生成模式與ped相同。4) limited number of arrivals是否限制生成ped的數(shù)量。如果選擇是,則需要輸入人數(shù)上限。5) new pedped實例化??梢詫嵗秊閚ew ped()或者ped的子類。6) diameter, meterspe

9、d的大小。單位為米。7) comfortable speed, meters per sec.ped的速度,米/秒。默認值為uniform(0.5,1)。8) animation shape設定動畫演示時的形狀。具體用途還沒摸索出來9) color設定生成的ped的顏色。默認情況下為空,隨機設置顏色。10)arrival ground (pedground)ped生成時所處的環(huán)境。11)appears at (line, polyline)ped生成時所處的位置。12)initial spedd,meter per second初始速度。單位為米/秒。13)with offset,meters

10、定義ped生成位置位于線上的位置。缺省位置為uniform(0,length)。如果改成uniform(0.5*length,0.75*length),則表示生成的均勻分布在線段/折線距離起點1/2線段/折線長度到3/4長度的這一部分。起點為折線/線段上帶+的點。14)initial direction,radianped生成時的初始朝向。單位為弧度??蛇x擇下拉單提供的north,south,east,west。15)on exit可以在這里編碼。ped離開該組件時會調用這段代碼。16)advanced parametersped simulation algorithmped的模擬器算法。默

11、認值為pedconf.algorithmsocialforcemodel。這個參數(shù)我沒有深入研究過。高端人士可以自己編寫模擬器算法來試驗一下。4 pedgoto設定ped的行走目的地和路線。1) target(point,line)ped的目的地,可以是line,也可以是point。2) path choice mode有兩種模式,auto和manual。auto模式,ped會自動計算到達目的地的路徑。manual模式,ped則根據(jù)指定的path行走。若選擇manual模式,則必須在parameters欄path項填寫設定的path。path為shapepolyline。3) target r

12、each tolerance,meters定義ped距離目的地多少范圍內算完成pedgoto。4) on enter, on exit, on cancel分別定義ped進入,離開,取消pedgoto時的行為。5) blocking detection timeout當ped進入一個死角,從該位置無法沿既定路徑到達目的地,則會進入timeout計時,超時后會重新計算路徑。5 pedsinkped的最終端,進入該對象的ped會從畫面消失。1) on enter自定義進入該對象的行為。以上為該模型中對象的基本介紹。其他模型介紹請參考help文檔。關于其他對象的示例,請查看help-sample m

13、odels。pedestrian dynamics的三個示例。五 進階功能。這一塊內容比較亂,基本上以我在做地鐵疏散遇到的問題為主。1 path的畫法可以這樣理解,ped按path行走,實際是按于path關聯(lián)的一連串ties行走。表示path的polyline,以+點為起點,每條tie必須放在polyline的點上面。以上polyline2位path。左下帶+的點為path起點,ped先到達line2上一點,再通過line3上一點,以此來完成該path。line2和line3為ties。創(chuàng)建一個group,把這兩條line加入這個group,并把group名填入pedground的addtio

14、nal ties,這些ties才被認可,可以起作用。2 pedgoto target緩沖區(qū)的實現(xiàn)。本身pedgoto有一個參數(shù)target reach tolerance來實現(xiàn)該功能,但是由于實際效果來看,該參數(shù)對point target效果很不錯,但是對line target支持很不好。實現(xiàn)該方法時,需指定pedgoto cancel端口連接的對象。方法一:自定義算法計算緩沖區(qū)。代碼如下:distanceline(double ax, double ay, double bx, double by, double cx, double cy)double f = (bx-ax)*(cx-ax

15、)+(by-ay)*(cy-ay);/c到直線ab的投影點不在線段ab上,而且離a點最近if (fd) return distancepoints(bx, by, cx, cy);/ c在ab線段上的投影點在線段ab上f = f/d;double fdx = ax + f * (bx-ax);double fdy = ay + f * (by-ay);double fdistancecd = sqrt(pow(cx-fdx),2) + pow(cy-fdy),2);return fdistancecd;distanceline(double ax, double ay, double bx,

16、double by)double fdistance = sqrt(pow(ax-bx),2) + pow(ay-by),2);return fdistance;該方法主要是計算ped與targetline的距離。如果距離小于某個值,判定ped已經(jīng)實現(xiàn)該pedgoto,調用pedgoto.cancel(ped)進入下一個對象。方法二:利用pedarea自定義緩沖區(qū)。當ped進入pedarea以后,判定ped已經(jīng)實現(xiàn)該pedgoto,調用pedgoto.cancel(ped)進入下一個對象。3 pedarea的幾個用途1) 電梯。pedarea有一個參數(shù) ground is moving??梢栽O

17、定地面的移動速度。2) 可以控制區(qū)域開關。enable access control可以控制區(qū)域開關。當選定該參數(shù)之后,可以調用pedarea.setopen(boolean sopen) 來設置區(qū)域開關。一個比較常見的用法就是當區(qū)域內人數(shù)達到一定限制后,就不允許再繼續(xù)進去了。3) 可以實現(xiàn)靠邊行走。keep direction參數(shù)會給進入?yún)^(qū)域的每一個ped指定方法的加速度,該方向就是keep direction的值,可以是下拉列表的east,west,sourth,north,也可以是特定的弧度值。4) 限制區(qū)域內peds的行走速度。可以通過speed is limited來限制ped的最大

18、速度。5) 每個ped的速度增加百分比的速度??梢酝ㄟ^speed is multiplied來給每個ped設定百分比。pedarea的缺陷。由于pedarea在計算時,會把當前pedground里所有的ped都計算一遍,所以,當pedarea的數(shù)量過多時,會極大地增加數(shù)據(jù)計算量。4 函數(shù)的用法。函數(shù)的用途主要體現(xiàn)在復雜數(shù)據(jù)的處理。比如main的初始化,比如多對象的選擇。函數(shù)的使用,在一定程度上可以大幅度的簡化模型的復雜度,把流程相同的對象畫在同一條流程圖上面。下面舉個例子,當進入pedgoto的peds有同一個目的地,但是可以選擇兩條不同的路徑時,選擇函數(shù)來實現(xiàn)路徑的選擇是一個很好的辦法。從g

19、eneral中拖一個function控件到模型中。設置參數(shù),返回值,然后編碼。請注意返回值類型必須與path的類型保持一致,都必須是shapepolyline。5 事件的用法。事件有三種模型,一個是時間模型,當時間到了觸發(fā)事件。具體又可以分為occurs once,cyclic和user control。第二個是rate,比率模型。第三個是condition,條件模型。結合函數(shù),基本可以滿足我們的需求。6 隊列的實現(xiàn)。anylogic提供了一種隊列的模型,pedservice。pedservice中有一個名為service的參數(shù),參數(shù)類型為pedservices。pedservices具體實現(xiàn)

20、隊列模型。pedservices包含兩種隊列,一個是服務隊列,services,該隊列存在兩種模式,just delay,delay and pass through。就好比地鐵買票和過閘機。買票接受服務時,只需要站在原地和地鐵工作人員交流就可以了,可以選擇just delay模式,而過閘機接受的服務則是先刷卡,然后沿著閘機口過去,則是delay and pass through。pedservices的另外一個隊列則是queues,即排隊隊列。該隊列存在兩種選擇模式,一是選擇隊列的方式,shortest queue, closest queue, manual一個是選擇服務隊列的方式long

21、est queue, closest queue, manual??梢愿鶕?jù)具體的需求來選擇。7 環(huán)境切換。環(huán)境的切換。例如從二樓走到一樓這種。兩個環(huán)境原本是相互獨立的,可以通過ped change ground來實現(xiàn)切換。該模型的參數(shù)設置很簡單,僅destination ground一個。但在在畫的時候有些地方需要注意,切換ground前需要到達的目的地和兩種環(huán)境的邊緣保持一定的空間,以方便進行切換。8 導入shp文件。其中原點坐標x,原點坐標y需要記錄下來,因為后續(xù)錄像時會用到。比例需要與ped configuration中的animation scale,pixels per meter一

22、致。數(shù)據(jù)名稱自定義。其他數(shù)據(jù)自定義,相互關聯(lián)不大。六 netbeans下的anylogic已經(jīng)有了anylogic,為何還需要一個專門把anylogic中的代碼拷貝到netbeans下運行?主要是因為之前我們重載的時候,都在netbeans中進行的。我們制作錄像時,需要記錄每個ped的坐標位置,還有其他一些信息,但是這里面有很多數(shù)據(jù)是我們無法直接調用的,需要首先繼承一些類,然后通過重載等方法,使這些數(shù)據(jù)可以為我們所用。例如要獲取ped的坐標,但是,在ped中,坐標變量是friendly類型的,所以我們就需要在com.xj.anylogic.libraries.pedestrian包中創(chuàng)建一個p

23、ed的子類myped。然后在myped中新建一個public函數(shù),返回ped的x,y坐標。這樣就可以實現(xiàn)我們的要求了。在使用既有工程中的代碼時,有幾個注意點。1 simmain中有個函數(shù)chargepos(myped ped, double x, double y),該函數(shù)的作用是將錄像中的xy坐標還原為實際的xy坐標。我們在導入地圖數(shù)據(jù)的時候,記錄了一個原點坐標,那么現(xiàn)在模型中的坐標只需要按照這個原點坐標進行偏移就可以還原為實際坐標了。2 simulation里面的main全部改為simmain,因為我們在simmain里重載了一些函數(shù)。3 simulation僅僅是一個模擬器的一些運行設置

24、,可以不用拷貝。直接使用工程原有的代碼。但是main的代碼必須從anylogic從拷貝到netbeans的工程中。為了拷貝方便,可以將netbeans的包名稱與anylogic的包名稱保持一致。4 ped等的子類,應該放在com.xj.anylogic.libraries.pedestrian下面。并注意修改代碼中的package,改為package com.xj.anylogic.libraries.pedestrian;5 現(xiàn)在的netbeans對anylogic的支持并不完美。在使用6.5的庫的時候,并不支持pedselectoutput。我們在建立模型的時候需要selectoutput

25、替代。6 可以使用java的反編譯器查看庫的源代碼。7 當從別人那里拷貝netbeans工程到本地之后,請確認項目屬性的項目文件夾是否一致。七 anylogic創(chuàng)建自己的對象anylogic現(xiàn)有的對象,不一定可以完全滿足我們的需求,在某些特定的需求之下,我們需要創(chuàng)建屬于自己的對象,來實現(xiàn)我們的目標。一個很簡單的例子,我們需要在一個特定的多邊形范圍內隨機生成指定數(shù)量的peds。而現(xiàn)有的對象,都是在線或者點上生成。為了實現(xiàn)這一需求,我們需要自己創(chuàng)建一個新的對象。建立一個新的對象,需要考慮是out還是in。我們創(chuàng)建的對象,沒有進,只有出,所有只有一個out端口。右鍵選項目名稱-new-active

26、object class。name定義peddispose。首先添加一個out端口。將general中的port拖到界面中。命名為out。并將show name的勾選去掉。在constructor code中填入outportpush( this ),指定該port的構造函數(shù)。若是in端口,則填inport( this ).然后畫peddispose在模型中的顯示圖標。畫一個圓,并用一條line連接起來。注意圓和line都要勾選icon。下面就要定義一些生成ped所相關的信息。創(chuàng)建一個參數(shù)。例如生成多少人。從general中拖parameter控件到界面中。填寫所需的一些參數(shù)設置。編寫注釋。使

27、用同樣的方法添加其它參數(shù)。在這里我們需要的有speed,diameter,color三種初始屬性。pedground,pedconfig,初始配置信息。pedinitnumber,pedinitshape,生成ped數(shù)量和生成范圍。oncreaterped,onout,生成ped和ped離開時自定義代碼。創(chuàng)建一個變量,pedvector,用來保存生成的peds。創(chuàng)建4個函數(shù),initped,goout,gooutall,peddisposecreate。由于ped的成員變量都是friendly,只能在同一個包中訪問,所以要實現(xiàn)該對象,必須netbeans的工程下完成。publicboolean

28、 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 =

29、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); 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的函數(shù)。至此就完成了新的對象的生成。只是該對象比較特殊,需要借助于netbeans才能實現(xiàn)具體的功能。當然了,當不需要調用一些敏感數(shù)據(jù)的時候,是可以在anylogic中實現(xiàn)的。附件中有一個閘機系統(tǒng),就可以在anylogic中運行。八 anylogic的碰撞原理這一部分主要來自于向華的指導,我只是做一份簡單的歸納。模型在運行的時候,實際上整塊地圖地圖被劃分成一塊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論