2016-03-08 54 views
1

在我建造的模型中,我需要讓海龜計算它們的鏈接鄰居的「集線器集成」。通過「集線器集成」(HI)我的意思是以下內容:HI =共享鄰居數量/ n鄰居關係問:如何計算「集線器集成」/您的鏈路鄰居多少也是我的鏈路鄰居?

HI是一個值的「龜X」分配給共享一個鏈接與她(我們將調用每一個鏈接龜爲「龜Y」)所有其他烏龜。因此,HI的值就是連接到龜x和y的節點數量的一部分,連接到龜龜y的節點數量。

我使用作爲引用的NetLogo字典和書「的介紹,基於Agent建模」從威倫斯基和蘭德。但是,如果沒有這個社區的幫助,對我來說,即使不是不可能,也很難學習更高級的程序。編輯3 ---

我非常感謝所有的幫助。我終於有一個正在運行的程序。

爲了記錄在案,我的「樞紐整合過程」的最終代碼如下:

to find-hi 
    ask turtles [ 
    foreach sort link-neighbors [ 
    ask ? [ 
    if count [my-links] of self > 1 and count [my-links] of myself > 1 [ 
    let hi (calc-HI self myself ) 
    run-procedure ] ] ] ] 
end 


to-report calc-HI [ XX YY ] 
    let sizeX count [my-links] of XX 
    let sizeY count [my-links] of YY 
    let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY) 
    report (sizeX + sizeY - sizeXY)/sizeY 
end 
+0

有似乎這裏概念上的困難。如果烏龜X有3個鏈接鄰居(Y1,Y2和Y3),則HI的值可能每個都不相同。所以你需要將Y(也可能是X)傳遞給HI計算過程。否則,它如何知道哪一個來計算它? – JenB

+0

我想我明白你的觀點。可以肯定的是,您請通過將Y傳遞給hi計算過程來說明您的意思。 – Misclogo

+0

請參閱我的回答,以瞭解在程序被調用時提名兩隻海龜的程序 – JenB

回答

2

我想你想算鄰居數量,就不一一列舉了一切了。

統計數字的一種方法是計算X的鄰居,計算Y的鄰居並計算X或Y的鄰居的代理。與X和Y相鄰的龜將仍然只在構造的agent集中出現一次,所以交集的大小就是各個計數的總和,然後減去聯合的大小。

這段代碼希望你提名兩隻海龜,並從海龜XX的角度報告海龜YY的HI(請注意,沒有檢查兩隻海龜之間有鏈接)。我不確定我是否理解你想要的計算,但可以根據需要進行修改。

to-report calc-HI [ XX YY ] 
    let sizeX count [my-links] of XX 
    let sizeY count [my-links] of YY 
    let sizeXY count (turtle-set [link-neighbors] of XX [link-neighbors] of YY) 
    report (sizeX + sizeY - sizeXY)/sizeY 
end 
+0

謝謝。你寫的是正確的,但我對報告的內容有些困惑。我只需要報告x和y之間的共享海龜數量。我缺少爲什麼sizeY /(sizeX + sizeY - sizeXY)。 我添加了一個回覆我的初步評論,以澄清程序。 – Misclogo

+1

您的公式以粗體顯示有多少個共享/鄰居的鏈接數量。這是我使用的公式。 – JenB

+0

我的歉意,我剛剛意識到它。您建議的程序計算HI,而不僅僅是提名人。那很完美!我還有最後一個問題。當我運行程序---詢問海龜時[如果鏈接鄰居的[calc-HI] = 1 [運行程序] ----我得到錯誤「calc-Hi expected 2 inputs」。爲什麼這樣?不是calc-Hi是單個值嗎? – Misclogo

1

你在你的記者使用打印,請嘗試使用report代替。

例如爲:上to-report right here

to-report who-of-neighbors 
    report [who] of link-neighbors 
end 

更多信息。

+0

感謝您的回覆。你是對的。報告程序是要走的路。然而,我還是遇到了錯誤的過程: ////'到報告分子 問鏈路鄰居[ 報告數[過濾部件?誰 - 的 - 我的鄰居 - - 的 - 鄰居誰] ] end' //// - 我想分子上報共享鄰居的數量。但是我必須在過濾命令中犯一些錯誤。 – Misclogo

+0

你是否爲'report'更改了所有'print'?因爲這就是你想要先做的。 –