在这里,我向您提供我的问题和我的代码。
问题: 每个代理我附加到每个位置m(每个m有固定数量的食物,但有些更糟糕,有些更好),得分U_im随着时间的推移而更新。最初将分数设置为零。每当玩家被选择访问资源时,他会以概率epsilon随机选择一个位置,否则他按照迄今为止登记的最高分数顺序选择位置。 对于访问的每个位置,分数更新为U_im - > U_im - c(成本)如果找到位置被占用 和U_im - > U_im + u_mi如果被发现是免费的。
如何创建此数组u_mi? (这样可以节省到目前为止我访问过的最好的资源(=有更多食物的资源))
编辑//:好的,我做到了!
如果有人需要这种代码,请随时与我联系:)
答案 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
注意:未经测试