问题标签 [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.

0 投票
2 回答
97 浏览

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 锁定到它原来的四个变量。我正在努力寻找一种方法来做到这一点。有任何想法吗?

我知道我的代码很复杂,但如果它可以帮助任何人按照我的尝试来描述我的问题:

谢谢你的帮助。

0 投票
1 回答
208 浏览

python - Monte Carlo Sim 求和结果;Python

在 python 2.7 中工作。

我有一个参数,它接受一个列表,将参数列表的值添加到列表“团队”中,然后比较某些位置值并根据值返回胜利、失败或平局。

我希望能够多次模拟结果,使用 random.shuffle(team) 对团队列表进行随机排序。

我可以这样做:

但我希望能够将所有模拟中的所有胜利、失败和平局相加,然后除以模拟次数(在本例中为 x),以获得胜利、失败和平局的平均值的模拟。

我尝试将 starterTrans 函数更改为具有等于 += wins 的 total_wins 变量,但我无法弄清楚。有任何想法吗?

0 投票
1 回答
1621 浏览

localization - 蒙特卡洛定位示例

我想在我正在做的项目中实现蒙特卡洛本地化。我做的第一件事是尝试在一个导航 2D 世界的虚拟机器人中实现它。现在这个程序真的很慢,不起作用,而且我进展甚微。所以我想知道是否有人可以指出我可以查看的蒙特卡洛本地化示例。

0 投票
2 回答
1056 浏览

algorithm - 设计 AI 的蒙特卡罗方法示例

根据我在不同来源中阅读的内容,据说蒙特卡洛方法就像获取随机样本,然后测试不同的解决方案并选择最佳解决方案。我不完全理解这在实际 AI 中是如何工作的。你能给我简单的例子吗?效果如何?是否可以将其与其他专门用于非确定性游戏 AI 的现有算法并行使用?

0 投票
1 回答
1019 浏览

c - SFMT 与 Mersenne Twister 和 Ran2 的比较

我正在尝试优化用于生物信息学目的的基于 C 的代码。它使用蒙特卡洛迭代进行主要部分计算。它之前使用 ran2() 生成随机数,这使得它非常慢。经过深入研究,我发现 mersenne twister 和 sfmt 是更高效的随机数生成器。但是,我尝试在我的代码中使用它们,它们似乎对速度没有太大影响。鉴于程序每次迭代使用生成器 10 次以上,我无法弄清楚为什么更改生成器对速度没有影响。

谁能告诉我我哪里可能出错了?

0 投票
1 回答
4991 浏览

r - 如何在 R 中为蒙特卡洛创建更有效的模拟循环

本练习的目的是创建营养摄入值的人口分布。早期数据中有重复测量,这些已被删除,因此每一行都是数据框中的唯一人。

我有这段代码,在使用少量数据框行进行测试时效果很好。对于所有 7135 行,它非常慢。我试着给它计时,但是当我的机器上经过的运行时间为 15 小时时,我把它搞砸了。结果system.timeTiming stopped at: 55625.08 2985.39 58673.87

我将不胜感激有关加快模拟的任何评论:

对于我数据集中的 7135 个观察值中的每一个,创建 100 个模拟营养值,然后将其转换回原始测量水平(模拟使用来自 BoxCox 转换营养值的非线性混合效应模型的结果)。

我不想使用for循环,因为我读到它们效率低下,但我对基于使用它们作为替代方案R的选项了解不够。正在独立计算机上运行,​​通常这将是运行 Windows 7 变体的标准戴尔型台式机,如果这会影响有关如何更改代码的建议。applyR

更新:为了重现这个进行测试, 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语句是要替换的语句。
0 投票
3 回答
23627 浏览

java - 蒙特卡洛树搜索 UCT 实现

你能解释一下如何建造这棵树吗?

我非常了解节点是如何选择的,但是更好的解释真的会帮助我实现这个算法。我已经有一个代表游戏状态的棋盘,但我不知道(理解)如何生成树。

有人可以指出我对该算法的评论很好的实现(我需要将它用于 AI)吗?或者更好的解释/例子?

我在网上没有找到很多资源,这个算法比较新……

0 投票
2 回答
366 浏览

python - 蒙特卡洛算法中的python字典更新

我正在尝试编写一个蒙特卡洛代码,在其中优化字典中的元素。例如,我将我的原始字典定义为

这导致

现在说我的蒙特卡洛中的一个尝试是从 A[1] 中取出一个随机元素“a”并将其放入 A[2]。但是,我想保留我原来的字典。所以我首先创建一个新字典:

然后在 BI 中进行所需的更改

这导致了我想要获得的修改后的字典:

然而,这也改变了我原来想要备份的字典 A。

有什么办法可以做到这一点吗?谢谢你的帮助!

0 投票
2 回答
1421 浏览

javascript - 图形中的蒙特卡罗方法

我正在阅读这篇关于使用 JavaScript 生成玫瑰图像的有趣文章。但是,我有点困惑,因为这篇文章声称作者使用了蒙特卡罗方法来减少代码大小。

据我了解,作者正在使用蒙特卡罗方法来执行诸如 GIF 隔行扫描之类的操作,以便图像加载速度更快。我错过了什么吗?

0 投票
1 回答
1347 浏览

mpi - 使用 Monte Carlo 和 MPI_Reduce 计算 pi

我正在做一个项目,我们需要使用 MPI 并行化这个问题。所以基本思想是每个进程都会得到它的分数,做测试(点是否在圆圈中)然后调用 MPI_Reduce。然后根会得到简化的结果并给出最终的答案。

我很困惑的是要减少什么。每个进程是否应该计算 pi,用 pi 调用 reduce,而 root 只取减少的 pi 值的平均值吗?或者每个进程调用是否应该随着命中数(圆内的成功点)而减少,然后根使用这个结果计算 pi?希望这很清楚。谢谢。