问题标签 [montecarlo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 运行 for loop monte carlo sim 时出现 zip 问题;Python
在 python 2.7 中工作。
我确信代码有点笨拙,但我会尽可能简单地解释它。
我有两个清单:
我需要将 B 中的对应值添加到 T 中对应列表的末尾,所以使用 zip 将它们放在一起。
然后,我计算从第三个列表中减去每个列表的第一个值的结果,并使用另一个 zip 函数附加该值。
所以当我运行我的函数时,T 变量现在看起来像 [[1,0,1,0], [1,0,3,-2], [0,5,2,-2]]。
然后我有一系列 if 语句,如果某些值高于或低于其他值,则列表返回胜利、失败或平局。
我想多次模拟我的函数(starterTrans)的结果。问题是当我使用时:
对于每次模拟,我都会得到不同版本的 T。因此,第一次通过模拟时,T 在每个列表中都有适当数量的元素(四个),但在每次运行之后,添加的变量越来越多。
无论我想使用多少次,我都需要一种方法将 T 锁定到它原来的四个变量。我正在努力寻找一种方法来做到这一点。有任何想法吗?
我知道我的代码很复杂,但如果它可以帮助任何人按照我的尝试来描述我的问题:
谢谢你的帮助。
python - Monte Carlo Sim 求和结果;Python
在 python 2.7 中工作。
我有一个参数,它接受一个列表,将参数列表的值添加到列表“团队”中,然后比较某些位置值并根据值返回胜利、失败或平局。
我希望能够多次模拟结果,使用 random.shuffle(team) 对团队列表进行随机排序。
我可以这样做:
但我希望能够将所有模拟中的所有胜利、失败和平局相加,然后除以模拟次数(在本例中为 x),以获得胜利、失败和平局的平均值的模拟。
我尝试将 starterTrans 函数更改为具有等于 += wins 的 total_wins 变量,但我无法弄清楚。有任何想法吗?
localization - 蒙特卡洛定位示例
我想在我正在做的项目中实现蒙特卡洛本地化。我做的第一件事是尝试在一个导航 2D 世界的虚拟机器人中实现它。现在这个程序真的很慢,不起作用,而且我进展甚微。所以我想知道是否有人可以指出我可以查看的蒙特卡洛本地化示例。
algorithm - 设计 AI 的蒙特卡罗方法示例
根据我在不同来源中阅读的内容,据说蒙特卡洛方法就像获取随机样本,然后测试不同的解决方案并选择最佳解决方案。我不完全理解这在实际 AI 中是如何工作的。你能给我简单的例子吗?效果如何?是否可以将其与其他专门用于非确定性游戏 AI 的现有算法并行使用?
c - SFMT 与 Mersenne Twister 和 Ran2 的比较
我正在尝试优化用于生物信息学目的的基于 C 的代码。它使用蒙特卡洛迭代进行主要部分计算。它之前使用 ran2() 生成随机数,这使得它非常慢。经过深入研究,我发现 mersenne twister 和 sfmt 是更高效的随机数生成器。但是,我尝试在我的代码中使用它们,它们似乎对速度没有太大影响。鉴于程序每次迭代使用生成器 10 次以上,我无法弄清楚为什么更改生成器对速度没有影响。
谁能告诉我我哪里可能出错了?
r - 如何在 R 中为蒙特卡洛创建更有效的模拟循环
本练习的目的是创建营养摄入值的人口分布。早期数据中有重复测量,这些已被删除,因此每一行都是数据框中的唯一人。
我有这段代码,在使用少量数据框行进行测试时效果很好。对于所有 7135 行,它非常慢。我试着给它计时,但是当我的机器上经过的运行时间为 15 小时时,我把它搞砸了。结果system.time
是Timing stopped at: 55625.08 2985.39 58673.87
。
我将不胜感激有关加快模拟的任何评论:
对于我数据集中的 7135 个观察值中的每一个,创建 100 个模拟营养值,然后将其转换回原始测量水平(模拟使用来自 BoxCox 转换营养值的非线性混合效应模型的结果)。
我不想使用for
循环,因为我读到它们效率低下,但我对基于使用它们作为替代方案R
的选项了解不够。正在独立计算机上运行,通常这将是运行 Windows 7 变体的标准戴尔型台式机,如果这会影响有关如何更改代码的建议。apply
R
更新:为了重现这个进行测试,
Lambda.Value
=0.4 和Male.Resid.Var
=12.1029420429778 并且Male.Distrib$stddev_u2
是所有观察值的恒定值。
str(Male.Distrib)
是
head(Male.Distrib)
是
NaN
更新 2:导致结果的函数行是
感谢大家的帮助和评论,以及回复的速度。
更新:@Ben Bolker 是正确的,它是temp
导致 NaN 问题的负值。我通过一些测试错过了这一点(在注释掉函数以便只temp
返回值并调用我的结果数据框之后Test
)。此代码重现了该NaN
问题:
但是将值作为值放入然后运行相同的(?)计算会给我一个结果,所以我在进行手动计算时错过了这个:
我现在有(我认为)使用矢量化的工作代码,而且速度非常快。以防万一其他人有这个问题,我在下面发布工作代码。我必须添加一个最小值以防止计算出现 <0 问题。感谢所有提供帮助的人,感谢咖啡。我确实尝试将rnorm
结果放入数据框中,这确实减慢了速度,以这种方式创建它们然后使用cbind
非常快。Male.Distrib
是我的 7135 观察的完整数据框,但这段代码应该适用于我之前发布的缩减版本(未经测试)。
当天的教训:
- 如果您尝试执行我之前尝试的操作,则分布函数似乎不会在循环中重新采样
- 您不能使用
max()
我尝试的方式,因为它返回列中的最大值,而我想要两个值中的最大值。该ifelse
语句是要替换的语句。
java - 蒙特卡洛树搜索 UCT 实现
你能解释一下如何建造这棵树吗?
我非常了解节点是如何选择的,但是更好的解释真的会帮助我实现这个算法。我已经有一个代表游戏状态的棋盘,但我不知道(理解)如何生成树。
有人可以指出我对该算法的评论很好的实现(我需要将它用于 AI)吗?或者更好的解释/例子?
我在网上没有找到很多资源,这个算法比较新……
python - 蒙特卡洛算法中的python字典更新
我正在尝试编写一个蒙特卡洛代码,在其中优化字典中的元素。例如,我将我的原始字典定义为
这导致
现在说我的蒙特卡洛中的一个尝试是从 A[1] 中取出一个随机元素“a”并将其放入 A[2]。但是,我想保留我原来的字典。所以我首先创建一个新字典:
然后在 BI 中进行所需的更改
这导致了我想要获得的修改后的字典:
然而,这也改变了我原来想要备份的字典 A。
有什么办法可以做到这一点吗?谢谢你的帮助!
mpi - 使用 Monte Carlo 和 MPI_Reduce 计算 pi
我正在做一个项目,我们需要使用 MPI 并行化这个问题。所以基本思想是每个进程都会得到它的分数,做测试(点是否在圆圈中)然后调用 MPI_Reduce。然后根会得到简化的结果并给出最终的答案。
我很困惑的是要减少什么。每个进程是否应该计算 pi,用 pi 调用 reduce,而 root 只取减少的 pi 值的平均值吗?或者每个进程调用是否应该随着命中数(圆内的成功点)而减少,然后根使用这个结果计算 pi?希望这很清楚。谢谢。