2016-04-24 32 views
0

我對Java非常新穎& AnyLogic所以請在我的水平上爲這個。AnyLogic基於代理的模擬代理值轉移

代理是否有辦法從另一個代理獲取變量值? 在這種情況下,代理將是相同的類型。因此,它們都具有相同的變量,但由於它是隨機初始值而非參數的變量,因此這些值不一樣。

代理最初也通過Small-World連接進行連接,並且這些連接在運行期間不會被更改。

例如,事件中發生的代理如何從另一個代理收集變量值(例如,代理i獲得代理j的變量值X)。爲了修改代理i的變量X的值,這個值將被放入一個小的等式中。換句話說,代理人我會受到他的連接代理j的影響,從而改變了他的X值。

我試過.getConnectedAgent().get的多種組合,但沒有取得任何成功。我現在試圖將每個代理的X的值提取到數據庫中,然後使用該數據庫來收集代理i的代理j的X的值,但是我沒有取得任何進展。

需要提取的值是double s,但如果它更容易,我可以將變量更改爲整數。

+0

爲了讓本傑明(好)回答更明確的,如果你想從你連接到第一代理得到AnyLogic的變量x的值,那麼你會使用'getConnectedAgent(0)。 x'。 (括號中的零表示AnyLogic *連接的代理要使用,其中零是第一個。如果您使用的是小世界的網絡環境,AnyLogic爲您設置了零個或多個連接,在這種情況下,訂單有點不相關) –

+0

你還需要測試*有*實際上是當前代理的連接,這可能不是這樣的,例如,你會把代碼放在'if(connectedNumber()> 0 )'塊。 –

回答

1

沒有必要將其提取到數據庫中。你應該多做一些面向對象編程的學習,你的問題與AnyLogic有關,更多的是使用Java。

如果您有一羣名爲「MyAgents」的代理,其中每個代理都有一個具有隨機雙倍值的變量var,則代理12可以通過調用var = get_Main().MyAgents.get(13).var來獲得代理14的雙倍值。

這裏,var在左邊是主叫代理的var。 get_Main()將其升級到層次結構中的一級,以訪問其自己的人口和其他代理。然後它訪問第14個代理(Java是從零開始的)及其var值。

如果您打算使用getConnectedAgent(),則需要先連接座席。如果你使用「小世界」,這可以在一定程度上完成,但通常你想手動定義連接。檢查幫助中的「鏈接到代理」文章。

歡呼

相關問題