跳轉到內容

使用 AnyLogic/基於 Agent 的建模/步驟 11. 使人員接觸基於距離

來自 Wikibooks,開放世界開放書籍

步驟 11. 使人員接觸基於距離

現在,人員隨機分佈在 650x300 英里的正方形區域內。如果人員之間的距離不超過 25 英里,則讓他們進行聯絡。

設定環境屬性

  1. 透過雙擊專案檢視中的Main項,開啟Main類圖。
  2. 選擇environment物件。
  3. 開啟環境屬性檢視中的高階選項卡。
  4. 網路型別更改為基於距離,並將連線範圍修改為:25。

修改代理的狀態圖

  1. 透過雙擊專案檢視中的Person項,開啟Person類圖。
  2. 單擊Adopter狀態的內部轉換。
  3. 修改轉換的操作。用以下內容替換現有字串
    send (“Buy!”, RANDOM_CONNECTED);

    人員現在只會與他們的鄰居進行聯絡。

現在,我們將稍微修改一下我們的動畫,以視覺化聯絡網路。

畫一條線來描繪人員聯絡

  1. 開啟Person類圖。
  2. 畫一條線,如圖所示。

    調色盤檢視的演示頁面中選擇 元素。然後單擊圖形編輯器中的點 (0,0) 來放置線的起點,最後單擊想要繪製終點的位置。
  3. 開啟屬性檢視中的動態選項卡,並修改的一些動態屬性。
  4. 複製欄位中,鍵入
    getConnectionsNumber(),
    (在鍵入時可以使用程式碼補全輔助。)
    在這裡,我們指定了代理的接觸線數量。我們需要為該代理的每個連線畫一條線。為此,我們呼叫getConnectionsNumber()函式,返回當前在我們網路中連線到此代理的代理數量。
  5. 定義動畫中的線的位置
    dX欄位中,鍵入
    getConnectedAgent(index).getX() - getX()
    dY欄位中,鍵入
    getConnectedAgent(index).getY() - getY()
    在這裡,我們將每條線的終點放置到具有對應連線代理的座標的點上。連線代理使用getConnectedAgent(index)函式交替訪問。

    現在,那些相互聯絡的人員將在我們的演示中用線連線起來。

我們已完成建立動畫。執行模型並觀察網路中的動態。

華夏公益教科書