2017-07-25 505 views
1

我正在嘗試構建一個模型,其中海龜決定根據網絡中的環境更改顏色。在Netlogo網絡中,海龜如何「看」其他海龜的屬性?

該方法將是「檢查」周圍海龜的顏色,然後爲有問題的龜設置if語句以切換顏色(將只有2種顏色)。

具體我想知道一隻烏龜怎麼可以「看見」或檢查其他烏龜的顏色(或其他屬性)。

如果可能的話,我還想創建一個「多少鏈接」龜可以看到他們的鄰居龜(或鄰居等鄰居)的顏色滑塊。

我是Netlogo和Stackoverflow的新手,請讓我知道是否應對模型和/或問題進行任何修改。

謝謝!

Carlos

回答

2

歡迎來到Stack Overflow!通常情況下,您需要堅持每個帖子的單個問題,這既是爲了簡化,也是爲了將來有類似問題的用戶的利益。此外,如果適用,您應該嘗試包含一些代碼以顯示您迄今嘗試的內容,以及必要的任何設置 - 您想要製作一個minimal, complete, and verifiable example。在這種情況下,我認爲你沒問題,因爲你的問題很清楚並且很好地解釋了,但是如果你將來有更復雜的問題,你將更有可能通過遵循這些指導方針得到有用的答案。

對於你的第一個問題,它看起來像你想of原始 - 檢查出dictionary entry的細節。 of可以以幾種方式使用,包括允許代理檢查另一個代理的變量(如顏色)的值。看看這個例子代碼:

to setup 
    ca 
    reset-ticks 
    crt 10 [ 
    setxy random 30 - 15 random 30 - 15 
    create-link-with one-of other turtles 
    ] 
end 

to go 
    ask turtles [ 
    set color [color] of one-of link-neighbors 
    ] 
end 

每次go程序被調用時,海龜的一個改變其顏色,其link-neighbors之一的顏色。如果足夠長的運行時間,所有連接的龜應該以相同的顏色結束。

對於第二個問題,我建議您查看Nw extension,這是一個擴展,可以更輕鬆地處理Netlogo網絡。具體來說,看看nw:turtles-in-radius,它應該適用於滑塊方法。得到它的工作,包括使用

extensions [ nw ]

在你的代碼的開始延伸。然後,假設與上面相同的設置,你可以玩的東西,如

to network-radius 
    ask one-of turtles [ 
    set color red 
    ask other nw:turtles-in-radius 2 [ 
     set color white 
    ] 
    ] 
end 

當您撥打以上network-radius過程中,你會看到一個烏龜變成紅色,並在該龜2個環節任何甲魚變成白色。要切換到滑塊,只需將「2」替換爲滑塊變量即可。希望有所幫助!