學(xué)習(xí)、參考鏈接:Anylogic入門基礎(chǔ)課程
一、Agent類的概念
二、行人疏散仿真
2.1 仿真模型示意圖
2.2 具體實現(xiàn)步驟
首先,新建模型
新建一個MyFloor1對象,代表第一個樓層
創(chuàng)建矩形墻,并放到原點
建立如下的模型,需要注意的是:
- 服務(wù)的延遲時間、PedWait的延遲時間的單位都設(shè)置為分鐘
- PedSource、PedGoTo和PedWait都設(shè)置在矩形范圍
修改PedSource到達根據(jù)為inject()函數(shù)調(diào)用
在啟動時執(zhí)行命令【作用是一次性生成20個人】:pedSource.inject(20);
回到Main窗口,將MyFloor1拖拽出來
放置視角區(qū)域和三維窗口
啟動時執(zhí)行命令:viewArea.navigateTo();
運行,查看效果
好像服務(wù)的延遲時間太長了,可以調(diào)小一點,設(shè)置為uniform(0.5, 1.0)
把等待時間設(shè)置長一點,設(shè)置為uniform(1.5, 2.0)
接下來,我們讓行人可以成功撤離
根據(jù)上述邏輯,布局如下
進行連線
新增兩個目標(biāo)線和兩個墻
回到Main窗口,往布局中加入一個按鈕
為按鈕加上單擊事件
myFloor1.pedService.cancelAll();
myFloor1.pedGoTo.cancelAll();
myFloor1.pedWait.cancelAll();
為了控制人們的逃生目的地,我們先拖拽一個集合出來
修改集合的相關(guān)屬性
打開行動圖
拖拽一個行動圖出來
定義當(dāng)前搜索到的最小距離
拖拽出一個for循環(huán)
獲取人離當(dāng)前遍歷到的出口的距離
ped.distanceTo(colOut.get(i).getX(),colOut.get(i).getY())
加入邏輯判斷
k = i;
minDistance = curDistance;
定義返回值
設(shè)置pedGoTo1的目的地
colOut.get(actionChart(ped));
運行查看效果
接下來我們創(chuàng)建二樓
首先復(fù)制MyFloor1
刪除部分組件
刪掉這兩個目標(biāo)線
創(chuàng)建一個行人類型
在Ped中加入變量
修改變量類型和名稱
把所有enter和pedSource的智能體類型設(shè)置為Ped
設(shè)置MyFloor2中的pedGoTo
進入時執(zhí)行代碼: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鍵移動,復(fù)制一個colOut1出來
修改colOut1的屬性
設(shè)置pedEnter的目標(biāo)線:
colIn.get(ped.stairIndex);
在Main中,把MyFloor2拖拽出來
到MyFloor2中,設(shè)置exit離開時執(zhí)行代碼:
main.myFloor1.enter.take(agent);
為了實現(xiàn)對一樓和二樓不同的疏散時間,復(fù)制之前的按鈕,創(chuàng)造兩個新按鈕分別對一樓和二樓進行控制
為了區(qū)分一樓和二樓,在Main中調(diào)整MyFloor2的高度為40
運行查看最終效果
全部疏散的效果
先疏散一樓再疏散二樓
先疏散二樓再疏散一樓文章來源:http://www.zghlxwxcb.cn/news/detail-450732.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-450732.html
到了這里,關(guān)于【仿真建?!康谌n:AnyLogic入門基礎(chǔ)課程 - 多層建筑行人疏散仿真講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!