2016-01-20 48 views
1

我們試圖通過Netlogo顯示簡單感染。爲了我們的目的,我們需要用同一只烏龜多次開始感染。 但是現在每一次安裝的時候,另一隻烏龜從感染開始。我們已經嘗試使用Node ID,但不幸的是,不同的烏龜的ID也隨着每個設置而改變。我們出的主意,但 也許有對SOVE這個問題,我很樂意爲任何答案:) 這是我們到目前爲止的代碼的方式:用Netlogo中的每個安裝程序更改節點ID

extensions [nw] 


    globals 
    [ 
    num-informed 
    informed-size 
    ] 

    turtles-own 
    [ 
    informed? 
    ] 

    to setup 
     clear-all 
     nw:load-graphml "JK_nachnamen.graphml" 
     ask turtles [ set size 1.5 ] 
     layout-radial turtles links turtle 61 
     ask turtles [set color red] 
     ask turtles [set shape "dot"] 
     ask links [set color grey + 1.5] 
     ask patches [set pcolor white] 
     ask turtles [set label-color black] 
     ask turtles [set informed? false] 
     ask turtle 72 
     [ 
     set informed? true 
     set color green 
     ] 
     set num-informed 1 
     set informed-size 2 
     reset-ticks 
     nw:save-graphml "JKnachnamennetlogo.graphml" 
    end 

    to spread 
if (count turtles with [informed? = true] > .7 * count turtles) [stop] 
    ask turtles with [ informed? = true ] 
    [ 
     ask link-neighbors with [not informed?] 
     [ 
     if (random-float 1 <= 0.01) 
     [ 
     set informed? true 
     show-turtle 
     set color green 
     ] 
     ] 
     ] 

    set num-informed count turtles with [informed? = true] 
    tick 
    end 

謝謝你很多。

+0

順便說一句,你應該結合你的各種'ask turtle'語句 – JenB

+0

文件JK_nachnamen.graphml在每個節點中都有一個標識符嗎? – JenB

回答

1

問題是nw不存儲WHO變量,這是爲了避免與模型中已有的龜相沖突。

解決方法是爲每隻烏龜分配一個單獨的id變量並將其設置爲誰。

turtles-own [informed? id] 

龜創作ASIGN他們每個ID從而

set id who 

你可能想要寫一個轉換程序,這樣

to convert 
    nw:load-graphml "JK_nachnamen.graphml" 
    ask turtles [set id who] 
    nw:save-graphml file-name "JK_nachnamen(id).graphml" 
end 

,並使用該副本。當然,你不會用

turtle 74 

one-of turtles with [id = 74] 
+0

謝謝你的回答,我是初學者,所以請原諒我的下列問題:我的模型是導出的gephi文件,gephi文件的節點在Netlogo中顯示爲海龜(如果我沒有弄錯),我需要使用特定節點(我用gephi標識)來啓動感染。如何爲該特定節點分配新的ID?我怎麼能確定,我不會爲另一個節點分配新的ID? –

+0

我不太熟悉gephi,但這個問題可能有助於http://stackoverflow.com/questions/24858226/exporting-netlogo-data-to-graph-with-nodes-and-edges –

+0

你用顏色來表示意義? –

1

我針對不同的情況不同的答案有點不清楚所以我給位。

如果海龜每次都是不同的,那麼你說'同一只海龜'是什麼意思。例如,你是否認爲烏龜處於特定的位置?如果是這樣,你可以在適當的補丁上選擇烏龜。

如果它不是什麼特定的烏龜(只是它是同一只烏龜),那麼最簡單的方法就是設置random-seed。然後每次運行任何隨機過程(包括選擇one-of烏龜選擇開始感染,或ask turtles做某事),NetLogo將使用相同的隨機數鏈。當然,如果你還在構建你的模型,那麼添加新的代碼來改變對隨機數生成器的調用將導致不同的鏈,但用相同的代碼重新運行將得到相同的運行。

如果您想要實際更改某些部件,您可能需要使用with-local-randomnessrandom-seed new-seed