存在,我想問一個問題,關於導演的代理是,當我試圖鍵入此代碼,我得到的是特定路徑(的NetLogo)
>操作符只能是錯誤用於兩個數字,兩個字符串或兩個相同類型的代理,但不在數字和列表上。
我要問什麼是我該怎麼解決這個問題,假的發生在這行代碼:
如果PRI-LEV> [PRI-LEV]的oppoint1和PRI-LEV > [pri-lev] oppoint2
我試圖把它改成「汽車上」或「汽車與」,但他們都沒用。我也嘗試在Netlogo字典中查找,但是我沒有找到關於在特定路徑上定位代理的代碼的結果。 我在這裏要做的是當代理來到特定部分時,它將檢查是否有任何代理被列爲「oppoint1」; 「oppoint2」; 「oppoint3」; 「oppoint4」,然後將值調用pri-lev與其他值進行比較,以設置其繼續移動或停止並等待其他值的決定。 這是我的代碼的一部分:
ask cars
[
let oppoint1 (cars-at (xcor + 2) (ycor + 2))
let oppoint2 (cars-at (xcor - 1) (ycor + 1))
let oppoint3 (cars-at (xcor - 2) (ycor + 1))
let oppoint4 (cars-at (xcor - 3) (ycor + 1))
ifelse oppoint1 != nobody and oppoint2 != nobody
[
if pri-lev > [pri-lev] of oppoint1 and pri-lev > [pri-lev] of oppoint2
[
set pri-lev 4
speed-up
]
]
[
if oppoint2 = nobody and oppoint3 = nobody and oppoint4 = nobody
[
set speed 1
fd speed
if turning = "Rtrue"
[
set heading heading + 90
speed-up
]
]
]
]
真誠,胡志明市
親愛的盧克,感謝您的意見,但是,我不希望在全球範圍內做到這一點,因爲當它在全球範圍檢查,總會有一些藥物具有更高的優先級比當前,我想要的代理檢查只在特定地區的代理商。例如:當前在(6,10)的代理;我希望他檢查另外3個位置(5,11); (7,12)和(5,9),但在例如(9,11)或(11,12)等中沒有檢查。反正有指定它們嗎?或者我應該從這些地方組成一個小組,然後在小組成員之間進行檢查? –
在我上面的例子中,海龜只檢查他們當前**的補丁('turtles-here'是做這件事的原語) - 並非全部補丁/全局。試用一個新文件,它是所有需要的代碼。我試圖做的一點是,你不能以你的方式比較一個代理和許多代理,因爲你將一個代理的變量與代理集的變量列表進行比較。所有你需要做的就是改變上面例子中的'let'語句以專門適合你的模型(例如,而不是我定義的'other-turtles'代理集,替代你的「oppoint」代理集)。 –