NetLogo - 如何为代理商提供记忆

时间:2016-02-27 02:03:39

标签: netlogo

在这里,我向您提供我的问题和我的代码。

问题: 每个代理我附加到每个位置m(每个m有固定数量的食物,但有些更糟糕,有些更好),得分U_im随着时间的推移而更新。最初将分数设置为零。每当玩家被选择访问资源时,他会以概率epsilon随机选择一个位置,否则他按照迄今为止登记的最高分数顺序选择位置。 对于访问的每个位置,分数更新为U_im - > U_im - c(成本)如果找到位置被占用 和U_im - > U_im + u_mi如果被发现是免费的。

如何创建此数组u_mi? (这样可以节省到目前为止我访问过的最好的资源(=有更多食物的资源))

编辑//:好的,我做到了!

如果有人需要这种代码,请随时与我联系:)

1 个答案:

答案 0 :(得分:1)

对于一天的体验来说,这是非常令人印象深刻的代码!

是的,作为nomads_own变量的支付内存列表是我如何做到的。但是你必须保持位置和收益,否则你将无法对它们进行排序。你可能想要限制内存(例如,只有最后5或最佳5或类似),如果它开始减慢太多,因为你基本上要求每只乌龟保留所有补丁的列表。

关于“什么都不做”的问题 - 如果没有任何可用的位置,你的while循环可能会被卡住。尝试这样做(这可能更好,因为它只需要选择一次):

to move-to-empty-one-of [locations]  ;; nomads procedure
  let candidates locations with [not any? nomads-here]
  if any? candidates [ move-to one-of candidates ]
end

注意:未经测试