NetLogo:循环使用更改代理

时间:2017-05-11 04:47:06

标签: loops netlogo

在过去的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

0 个答案:

没有答案