在过去的24小时内,我发布了2个问题,幸运的是,所有人都回答了问题。
然而,问题仍然存在。
这就是我的计划。
我喜欢制作一个微型市场模型,代理人正在寻找他们最近的邻居并进行交易。
如果距离非常接近(少于1个补丁),那么易货开始。
我喜欢强加一种情况,
也就是说,当交易完成时,每个代理都在为另一个交易寻找其他代理,即使当前代理位于最近的位置。
如评论所述,我希望根据新设置的事务合作伙伴使代理集不断更新。
我尝试制作字符串列表(代表事务合作伙伴),但无法将它们再次转换为有效的代理集。
我该如何解决这个问题?
如果您有任何好的想法,而不是我的问题的边界,请发表评论。
谢谢大家。
(我对即时答案感到惊讶,也感激不尽 这是我试过的代码......)
to setup
clear-all
reset-ticks
ask patches [ set pcolor white ]
create-turtles num-turtles [
setxy random-xcor random-ycor
set energy random-gamma 10 0.5
set trust random-float init-trust
]
ask turtles [
set color scale-color green energy 0 99
set shape "default"
]
end
to go
ask turtles [
while [any? other turtles-here] [fd 1]
; let the-other-turtles [who] of other turtles
; let the-other-closest-turtles remove my-former the-other-turtles
; let ws ["turtle"]
; let other-closest-turtles append-word ws the-other-closest-turtles
; let ls other-closest-turtles
; let id the-other-closest-turtles
; set other-closest-turtles create-other-turtles ws ls id
; let closest-turtle other-closest-turtles with-min [distance myself]
let closest-turtle other turtles with-min [distance myself]
set closest-turtle one-of closest-turtle
while [closest-turtle = nobody] [fd 1]
if closest-turtle != nobody [face closest-turtle fd 1]
if distance closest-turtle <= 1 [transact]
if energy + trust <= 0 [die]
]
tick
end
to transact
let stronger max-n-of 2 turtles [trust]
let weaker min-n-of 2 turtles [trust]
ask stronger [
set energy energy - 1
set trust trust + 1.5
set my-former weaker
]
ask weaker [
set energy energy + 1.5
set trust trust - 1
set my-former stronger
]
end