每当我在S-Plus中进行大规模的蒙特卡罗模拟时,我总是在等待它完成时留下胡须.
在R中运行蒙特卡罗模拟的最佳技巧是什么?以分布式方式运行流程的任何好例子?
我正在尝试使用Amazon Elastic Map Reduce来运行数百万个案例的一系列模拟.这是一个没有reducer的Rscript流媒体作业.我在EMR调用中使用Identity Reducer --reducer org.apache.hadoop.mapred.lib.IdentityReducer.
当手动传递一行字符串时,脚本文件在测试并在Linux机器上的命令行本地运行时工作正常echo "1,2443,2442,1,5" | ./mapper.R,我得到了我期望的一行结果.然而,当我使用EMR上的输入文件中的大约10,000个案例(行)测试我的模拟时,我只得到10个输入行中的十几行输出.我已经尝试了几次,但我无法弄清楚原因.Hadoop作业运行正常,没有任何错误.看起来输入行似乎被跳过,或者可能是Identity Reducer发生了什么.对于有输出的情况,结果是正确的.
我的输入文件是一个具有以下数据格式的csv,一系列由逗号分隔的五个整数:
1,2443,2442,1,5
2,2743,4712,99,8
3,2443,861,282,3177
etc...
Run Code Online (Sandbox Code Playgroud)
这是mapper.R的 R脚本
#! /usr/bin/env Rscript
# Define Functions
trimWhiteSpace <- function(line) gsub("(^ +)|( +$)", "", line)
splitIntoWords <- function(line) unlist(strsplit(line, "[[:space:]]+"))
# function to read in the relevant data from needed data files
get.data <- function(casename) {
list <- lapply(casename, function(x) {
read.csv(file = paste("./inputdata/",x, ".csv", sep = ""),
header = TRUE,
stringsAsFactors = FALSE)})
return(data.frame(list))
} …Run Code Online (Sandbox Code Playgroud) 你能推荐一些关于有限元法(FEM)的好文章/笔记/教程吗?我不是每天都要处理高级数学,因此向我介绍理解FEM所需的数学教程将会很棒.
我的目标是编写自己的可变形体模拟(+可塑性).我必须使用FEM,但如果我也知道BEM(边界元法)和FDM(有限差分法)也会很好.
我们已经看到蓝牙/无线鼠标/键盘可以做有线同行.我有写一个应用程序来模拟使用蓝牙设备相同的功能的想法,如移动电话,因为那里应该是无线设备通过蓝牙发送信号到PC的方式.如果有人知道无线鼠标/键盘如何通过蓝牙或wifi向PC发送信号.任何资源或源代码都会很棒.
谢谢...
我正在使用Python制作数字广播的模拟器.无线电通过RS-232端口和以太网端口的RF一中继,一对无线电管制作无缝管道.因此,模拟器将成对使用,它们之间的管道模拟RF链路,允许用户使用物理接口,虚拟接口或隧道连接到每一端.
对于RF串行端口,我使用PySerial和虚拟串行端口使模拟器尽可能多样化:我可以将模拟器连接到物理串行端口,网络套接字或另一个本地程序.除了用于在每个不同操作系统上创建虚拟串行端口的工具之外,此方法完全是跨平台的.
我想模拟器能够通过共享的网络接口经由虚拟接口网络与本地节目,与远程程序,并与经由将被专用于模拟器本地物理接口的远程程序.但到目前为止,我还没有找到一种直截了当的方法来做到这一点.我一直在关注SLIP/PPP,TAP/DUN,pcap/SOCK_RAW以及其他可能性,我看不出明显或一般的解决方案.
关键的困难似乎是涉及整个以太网接口,低于IP级别,在以太网协议本身的层面:如果它只是几个端口,解决方案将相对简单.或者我错过了一些令人眼花缭乱的事情?
如何使用Python以与RF串行接口解决方案一样多功能的方式创建和使用RF以太网接口?
我有一个VHDL组件,它实现了DRAM测试序列.它包含一个子实体,它是DRAM控制器.
我想模拟(调试)DRAM测试序列,但是为DRAM控制器使用一个简单的假存根而不是真正复杂的东西.
有没有办法我可以设置它,也许使用VHDL配置来使用简单版本的控制器实体进行模拟?我对模拟很陌生,对VHDL一般没有太大的经验.
这是使用针对Spartan-6的Xilinx ISE和ISim,如果这有所不同的话.
我从以下论文中读到了仿真定义:MARTE:RT/E系统建模,分析和仿真的概况?
字典将模拟定义为(忠实地)模仿某事物的外观或特征的行为.从这个意义上说,模拟与建模紧密相关,其准确性是通过与底层模型语义的距离来衡量的
您能否根据上述定义澄清建模和仿真之间的差异?
我正在尝试使用Runge Kutta 4或Velocity Verlet集成算法在C#中实现N体模拟.
在我移动到更大数量的粒子之前,我想通过模拟围绕太阳的地球轨道来测试模拟,然而,由于某种原因,我得到了一个奇怪的螺旋而不是椭圆轨道.
我无法弄清楚这个问题,因为我使用相同的算法对太阳系进行了简单的模拟,其中太阳被固定在适当的位置并且一切都运行良好.积分器工作得很好,因为我使用哪一个并不重要,我得到两者的螺旋.
任何帮助,将不胜感激.
这是代码:
class NBODY
{
public static double G = 4 * Math.PI * Math.PI;
class Particle
{
public double[] r; // position vector
public double[] v; // velocity vector
public double mass;
//constructor
public Particle() {}
public Particle(double x, double y, double z, double vx, double vy, double vz, double m)
{
this.r = new double[3];
this.v = new double[3];
this.r[0] = x;
this.r[1] = y;
this.r[2] = z;
this.v[0] = vx;
this.v[1] …Run Code Online (Sandbox Code Playgroud) 我正在创建一个非常快速的多线程离散事件模拟框架。该框架的核心使用原子和无锁编程技术来实现跨多个线程的快速执行。这要求我将一些变量对齐到高速缓存行并填充剩余的高速缓存行空间,以便没有高速缓存行争用。这是我的方法:
// compute cache line padding size
constexpr u64 CLPAD(u64 _objSize) {
return ((_objSize / CACHELINE_SIZE) * CACHELINE_SIZE) +
(((_objSize % CACHELINE_SIZE) > 0) * CACHELINE_SIZE) -
_objSize;
}
alignas(CACHELINE_SIZE) MyObject myObj;
char padding[CLPAD(sizeof(myObj))];
Run Code Online (Sandbox Code Playgroud)
这对我来说很棒,但是今天当我将这种方法用于新的对象类型时,我偶然发现了一个问题。CLPAD()函数返回将输入类型填充到下一个缓存行所需的字符数。但是,如果我输入的大小恰好是高速缓存行数的倍数,则CLPAD返回0。如果尝试创建大小为零的数组,则会收到以下警告/错误:
ISO C++ forbids zero-size array 'padding'
Run Code Online (Sandbox Code Playgroud)
我知道在这种情况下可以修改CLPAD()以返回CACHELINE_SIZE,但是随后我无缘无故地烧写了一个缓存行空间。
如果CLPAD返回0,如何使“ padding”的声明消失?
我在一定程度上理解算法的工作原理.我不完全理解的是算法是如何在实践中实际实现的.
我有兴趣了解一个相当复杂的游戏(也许是象棋)的最佳方法.即递归方法?异步?同时?平行?分散式?数据结构和/或数据库?
- 我们期望在一台机器上看到什么类型的限制?(我们可以同时在多个核心上运行......也许是gpu?)
- 如果每个分支都会产生一个全新的游戏,(这可能达到数百万)我们如何保持整个系统的稳定?我们如何重用已经播放的分支?
algorithm simulation artificial-intelligence montecarlo monte-carlo-tree-search