我在这里遇到了一个问题.我的目标是构建一个框架,以允许集成不同的流量模拟模型.这种集成基于链接连接,链接成本和模拟之间的车辆的共享.
为了进行分布式仿真,我计划建立一个"协调器"(星形拓扑).所有参与的模拟只需注册,并只与协调员交谈.然后协调员协调每次模拟之间各种任务的执行.
分布问题的一个快速示例是,当一个模拟"负责"某些对象(如道路)时.另一个是其他道路的"负责人".但是,这些道路是相互连接的(因此,我们需要在这些模拟之间进行同步,并且需要能够远程交换数据/调用方法).
我已经看过RMI了,我认为它可能适合这项任务.(以抽象出必须创建一个线上信令规则).
这样理智吗?这里的问题是模拟参与者需要将他们的一些数据存储集中在"协调器"中,以确保模拟之间的显式同步.此外,一些模拟可能需要来自其他模拟的组件或方法.(因此使用RMI的想法).
我的基本方法是让'协调员'运行一个巨大的RMI注册表.每个模拟只需查找注册表中的所有内容,确保在每个步骤中使用正确的对象.
任何人都有任何关于沿着这条道路前进的提示
是否可以通过物理过程模拟生成随机数?
如果我模拟骰子的物理卷(即你捡起它,用手摇晃它,把它放到桌子上并记录哪一面最后"向上"......)会产生一个"随机"数字或者会我只是有一个复杂的模拟,真的没有任何成就.
我的任务是创建模拟人们四处走动的模拟.可能是一群人走过餐馆或离开学校.搜索周围,我发现了一堆A*相关的东西,对一个人来说很好,但我会有一堆.人们使用这个东西的标准库吗?或者我应该看一种算法?还是一本能帮我上路的书?
我想知道是否有任何好的/可能的方法可以自动化 - 或许是一个单元测试 - 在电子商务网站上依赖人类的行为?
例如,我可以使用宏或脚本来模拟"用户可以将物品放入篮子吗?" 或"用户可以到达支付网关吗?".
我目前正在管理一个使用频繁的电子商务代码库,并希望能够快速验证我实施的任何更改都不会为最终用户做好准备.
作业如下:
加油站由2个泵组成.每个泵都有一定量的燃料可以分配.汽车以随机间隔到达,并尝试使用两个泵中的一个:
- 如果泵可用且有燃料,则立即允许汽车使用它.每辆车都需要一定量的燃料(随机数),并且必须等待与该燃料量成比例的时间.例如,一辆汽车可能需要6加仑,将使用泵3秒,另一辆汽车可能需要10加仑,并将使用泵5秒等.当汽车加油时,它离开,另一辆车可以使用泵.在给汽车加油后,相应地调节泵中的燃料量.
- 如果当前正在使用两个泵,那么到达的汽车将等待,直到两个泵中的一个变为可用.
- 如果泵的燃料耗尽,它必须等待油轮提供更多燃料.油轮定期到达(但不是经常),并将两个泵填满容量.当油轮为泵提供服务时,没有汽车可以使用泵.忘了添加
第一部分:您必须提交符合上述规格的详细设计.您的设计必须使用Java线程.您必须指定将使用的线程数量和类型,以及这些线程的同步方式.您可以用伪代码编写项目的这个阶段.这是为了帮助您了解各个部分将如何组合在一起.
第二部分:您必须使用Java线程和适当的同步方法提交设计的完整实现.必须根据上述规范仔细测试您的实施.
我想知道.如何使用Java Thread来模拟随机进入的汽车?
我很失落,并提前感谢你的帮助.
我正在开发一个CUDA中的N体算法,我想学习一些优化的技巧和窍门.
我已经设法让NVIDIA Geforce GTX 260 16384运行机身20Flops,它拥有27流媒体多处理器.
这个KernelcomputeForces函数是95%时间慢的捅,我想知道是否还有我可以做的优化我的代码.
据我所知,我已针对内存空间局部性和内存写入进行了优化.在CUDA文档的某个地方,它说共享内存更快但我不知道如何利用它.我已经将16块中的工作与512每个线程分开,但这对我来说有点模糊.
请帮助和感谢阅读本文.
n is number of bodies
gm is the gpu mass pointer
gpx is the gpu position x pointer
gpy is the gpu position y pointer
gpz is the gpu position z pointer
gfx is the gpu force x pointer
gfy is the gpu force y pointer
gfz is the gpu force z pointer
Run Code Online (Sandbox Code Playgroud)
相关的内核函数
__global__ void KernelcomputeForces( unsigned …Run Code Online (Sandbox Code Playgroud) 我正在设计一个人工学习单元.当然,我想在微控制器实现之前模拟模型.模拟的主要问题是尝试模拟微控制器传感器中断(例如使用PIC18).我不是在考虑实际导致中断,因为我试图用代码模拟一个中断.
我想这简直归结为基本的C/C++信息.可以,如果是这样,你如何实现/模拟/模拟其中的中断?
最近我一直在研究统计模拟,并且在生成随机数据以匹配相关矩阵的规范之后,我想要将每列变换为具有特定的均值和标准偏差.我在下面的代码中成功地做到了这一点,但它非常混乱,我想知道是否有更有效的方法来做到这一点.
#Input Correlation Matrix
sigma <- matrix(c(1.00, -0.03, 0.39, -0.05, -0.08,
-0.03, 1.00, 0.07, -0.23, -0.16,
0.39, 0.07, 1.00, -0.13, -0.29,
-0.05, -0.23, -0.13, 1.00, 0.34,
-0.08, -0.16 ,-0.29, 0.34, 1.00), nr=5, byrow=TRUE)
rownames(sigma) <-c("Exercise", "Hardiness", "Fitness", "Stress", "Illness")
colnames(sigma) <-c("Exercise", "Hardiness", "Fitness", "Stress", "Illness")
#The Choleski Decomposition Random Data Generator
N <- 373
L = chol(sigma)
nvars = dim(L)[1]
# Random variables that follow the sigma correlation matrix
r = t(L) %*% matrix(rnorm(nvars*N), nrow=nvars, ncol=N)
r = t(r)
sample …Run Code Online (Sandbox Code Playgroud) 我目前有代码模拟几何布朗运动,由http://www-math.bgsu.edu/~zirbel/sde/matlab/index.html提供.
但是,我想生成1,000个模拟,并将其显示在图表中.
我目前生成单个模拟的代码如下:
% geometric_brownian(N,r,alpha,T) simulates a geometric Brownian motion
% on [0,T] using N normally distributed steps and parameters r and alpha
function [X] = geometric_brownian(N,r,alpha,T)
t = (0:1:N)'/N; % t is the column vector [0 1/N 2/N ... 1]
W = [0; cumsum(randn(N,1))]/sqrt(N); % S is running sum of N(0,1/N) variables
t = t*T;
W = W*sqrt(T);
Y = (r-(alpha^2)/2)*t + alpha * W;
X = exp(Y);
plot(t,X); % plot the path
hold on
plot(t,exp(r*t),':');
axis([0 …Run Code Online (Sandbox Code Playgroud) 想象一下,我递给你一个乒乓球,上面印有"-1".然后我告诉你从一个标有"First Bag"的包中画另一个乒乓球.这个包有30,000个球,一些标有"-1",一些标有"0",有些标有"+1".无论你绘制哪个球,你都要将它的数字加到你当前的"得分"-1.例如,如果你画-1,你的新分数是-2.
只要您的新分数低于零,您就可以从第一个包中再次绘制并再次添加到您的分数中.但是,如果你的分数达到零或更高,你可以从第二个包中抽取,它具有-1s 0s和+ 1s的不同组成.
我希望你从相应的袋子里抽出1000个乒乓球(也就是说,取决于你当前得分是否低于零),然后在"套装"结束时记下你的总(累计)得分.然后我希望你重复这个实验一百万次并告诉我你得分的百分比高于零.
是否有更快/更有效的方法来编码?因为绘制不是独立的,所以很难对循环进行矢量化,尽管我可以使用一些组合ifelse和filter?我怀疑这是复制品,虽然是昂贵的部分.
ptm <- proc.time()
###First bag
n=30000
s=155
f=255
z=n-s-f
first_bag=c(rep(0,z), rep(1,s), rep(-1,f))
###Second bag
n2=30000
s2=275
f2=285
z2=n2-s2-f2
second_bag=c(rep(0,z2), rep(1,s2), rep(-1,f2))
###Simulate draws
sim_draw=function(draws){
score=-1
for (i in 1:draws) {
if (score < 0) {
score=score + sample(first_bag, 1, replace=TRUE)} else {
score=score + sample(second_bag, 1, replace=TRUE)}
}
score
}
###Repeat sims and find area above zero
samp_distribution=replicate(1000000, sim_draw(1000))
mean(samp_distribution>0)
print(proc.time() - ptm)
Run Code Online (Sandbox Code Playgroud) simulation ×10
java ×2
r ×2
random ×2
.net ×1
c ×1
c++ ×1
cuda ×1
distributed ×1
embedded ×1
interrupt ×1
loops ×1
matlab ×1
montecarlo ×1
php ×1
prng ×1
rmi ×1
statistics ×1
time ×1
unit-testing ×1