首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用多个随机种子保持代理和环境的分离

使用多个随机种子保持代理和环境的分离
EN

Stack Overflow用户
提问于 2014-03-10 18:44:58
回答 2查看 228关注 0票数 2

我进行了两个一般流程的模拟,(1)环境变化,(2)代理做他们的事情。

我仔细地设计了它,这样环境和代理行为就完全独立了。这一点很重要,因为我希望能够模拟一个实验,在这个实验中,环境在运行过程中以重复的模式演化,但是代理变量会发生变化。

我知道我可以使用“具有局部随机性”来运行环境,但只有当我能够跨时间保持两个随机种子时,这才有效。我看不出有什么明显的办法。

我考虑的一个想法是用一个“环境种子”列表初始化环境,它将是一个包含1000个新种子的列表,然后每次我调用时--局部随机性--从列表中获取下一个种子(希望我最终不会意外耗尽)。不幸的是,除了硬编码之外,我不知道如何保持该列表跨运行。

我需要两个随机数发生器,基于不同的种子,我需要能够切换代码中任何给定调用所使用的一个。

非常感谢你的任何想法!

EN

Stack Overflow用户

回答已采纳

发布于 2014-03-11 14:23:26

如果不编写一个扩展,它比内置到NetLogo中的原语所提供的对RNG状态的控制更多,那么完全不可能做到这一点。(要查看RNG状态的保存和恢复情况,您可以查看export-worldimport-world用于进行保存和恢复的代码。)

但我认为你的environment-seeds想法是一个很好的解决办法。您可以将种子存储在文件中,并使用file-read提取它们。或者,您可以使用一个单独的RNG动态生成它们,就像在https://github.com/NetLogo/NetLogo/wiki/Extensions上列出的Adam的RNG扩展提供的那样;这样您就不用担心耗尽了。实际上,可能有一种聪明的方法,可以将每个种子作为先前种子的函数生成,而不涉及该扩展。用前面的种子初始化(当然是在with-local-randomness中)之后,让下一个种子成为由RNG生成的第一个数字如何?

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22308648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档