2016-01-14 32 views
2

我遇到了netlogo的問題:我想在網絡中傳播信息。一隻烏龜擁有這些信息,並以不變的概率將其提供給其鏈接鄰居。這是我的代碼至今:信息擴散

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

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

現在我想知道:如何確保,每龜只有一次所得到的信息,而不是告知兩次?我試過「如果沒有通知?」,但只給我錯誤信息。如果我想讓信息以2%的常數概率傳播,我是否得到了命令「if(random-float 1 < = 0.02)」?

+0

是的,隨機浮動正確使用 – JenB

回答

1

這應該工作(未測試)。假設您在設置海龜時完成了set informed? FALSE

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

    set num-informed count turtles with [informed?] 
    tick 
end 
+0

當一個變量X?是布爾值(只有TRUE或FALSE),你實際上不需要說'X? = TRUE',可以簡單的說'X?',同樣''不是X?'對於'X? = FALSE' – JenB

+0

我想我沒有修好他的? –

+0

以及沒有錯誤消息了,我認爲它的工作到目前爲止......非常感謝你的快速答案! – user5791200