我是NetLogo的新成員。我並不是新的基於代理的建模。我偶爾會看到有人說NetLogo是如此的有趣和簡單,我試了一下。netlogo:發送消息給除一個代理之外的所有人
我被困在廣場1處,找不到代理之間的消息傳遞代碼,調度代理子集的操作,其他基本的ABM事情。
我正在處理一個多數規則選舉模型,其中海龜是隨機放置x,y座標的選民。候選人(新品種)在x,y平面作出承諾,獲勝的候選人是(接近)更多代理人首選的候選人。
補丁發揮任何作用,除了空間圖形似乎需要使用我在候選位置的更新麻煩網格
的。我的想法如下:從候選人代理組中刪除一個「優勝者」代理,告訴其他候選人進行調整,然後將優勝者退回代理名單,並查看下次誰獲勝。
我相信以下是接近最小可重現的例子。請看adjustOfferings。 (對不起,我留在了很多表演的語句,否則不能告訴是怎麼回事。)
; Paul Johnson
; 20160801
breed [candidates candidate]
globals[
N
D
]
; turtles are voters, Euclidean-based preferences. Use
; built-in 2d coordinates for ideal points for now,
; need to learn how to create weighted multi-dimensional
; preferences later
turtles-own
[
name
]
to setup
ca ; clear all
reset-ticks ; time start 0
set N 100
; N voters with random x,y ideal points
create-turtles N
[
setxy random-xcor random-ycor
]
set D 2
create-candidates D
[
setxy random-xcor random-ycor
set shape "square"
set size 2
]
end
; collect up the votes. Don't worry about invading agent
; privacy, just measure for them
to-report election2 [choices]
let fave [min-one-of choices [distance myself]] of turtles
report fave
end
; Ask all non winners to adjust their offering
to adjustOfferings [winner]
show (word "in adjustOfferings, winner was: " winner)
let losers candidates with [self != winner]
show (word "adjustOfferings losers are: " losers)
ask losers
[
setxy random-xcor random-ycor
]
end
; ask each voter for its favorite,
; use modes to calculate the winner
to electionCycle
let theVotes election2 candidates
show (word "electionCycle: " theVotes)
let winner modes theVotes
show (word "electionCycle Winner: " winner)
adjustOfferings winner
end
to go
tick
if ticks > 1000
[
stop
]
electionCycle
end
的設置工作正常,我看到代理商和候選人。當我點擊「按鈕」時,我可以看到選舉作品,選出了勝利者,但是所有候選人都調整了(不僅僅是輸家)。這裏的控制檯:
observer: "electionCycle: [(candidate 100) (candidate 101)
(candidate 101) (candidate 101) (candidate 100) (candidate 101)
[snip]
(candidate 100) (candidate 101)]"
observer: "electionCycle Winner: [(candidate 100)]"
observer: "in adjustOfferings, winner was: [(candidate 100)]"
observer: "adjustOfferings losers are: (agentset, 2 turtles)"
,在我看來,這是錯誤的來源:
let losers candidates with [self != winner]
贏家仍處於後失敗者。
我現在意識到,如果沒有NetLogo文件的其餘部分,您實際上無法運行此操作。您在此提供的完全可運行示例的定製是什麼?我可以將您指向網站上的文件嗎? http://pj.freefaculty.org/scraps/majority.nlogo。如果你願意,我可以把它放在GitHub或其他地方。
我很感謝您的建議。
在大多數情況下,更多經驗豐富的NetLogo程序員可以在不運行代碼的情況下查看問題所在。我們實際上沒有共享完全可運行的模型的過程,所以老實說,我會阻止發佈它,除非有人特別要求它 - 他們可能會建議一個地方。我見過GH,gists或人們把它們放在自己的網絡服務器上。 –