标签: simulation

用网格模拟水

有一段时间,我一直试图用我从"游戏的实时流体动力学"中剔除的算法来模拟流动的水.问题是我似乎没有用这些算法得出类似水的行为.

我自己,我猜我做错了,那些算法并不适合水样流体.

这些算法我做错了什么?这些算法是否正确?

我在bitbucket存储库中有相关项目.(需要gletools和最新的pyglet才能运行)

simulation physics

7
推荐指数
1
解决办法
8212
查看次数

我该如何编程物理模拟?

我正在尝试创建一个可用于编写模拟程序的Java包.我的目标是创建像弹簧一样的"物体"或像立方体和球体这样的固体物体.它们将具有质量,速度,重力等,并且它们可以相互作用.

我在www.myphysicslab.com上看到了一些模拟程序,但我的问题是我不想为不同的情形编写不同的方程式.有没有办法做到这一点?我是编程新手.

java simulation physics

7
推荐指数
2
解决办法
2万
查看次数

Android:有没有办法模拟D-Pad事件(API 10)?

问题很简单.我必须模拟dpad事件(UP,DOWN,RIGHT,LEFT,CENTER),以便在我的GUI中导航,其中包含许多按钮和其他元素.使用模拟器D-Pad,我可以在没有行代码的情况下导航此GUI.但是我该如何以编程方式执行此操作?

我尝试了很多但没有成功:

  • KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_DPAD_LEFT); View.dispatchKeyEvent(event); 没有任何事情发生(焦点应该将一个元素移动到右边)

  • 我也阅读了很多关于windowManager.injectKeyEvent的内容,但发现没有任何效果.

  • 而Instrumentation可以帮助模拟关键事件,但更多用于测试,而不是用于应用程序本身.

我认为有一个解决方案,因为对讲可以模拟物理D-Pad(http://code.google.com/p/eyes-free/source/browse/trunk/ime/latinime/src/com/googlecode/eyesfree /inputmethod/latin/LatinIME.java)

simulation android keyevent d-pad

7
推荐指数
1
解决办法
2937
查看次数

Akka用于模拟

我是akka和演员模式的新手,因此我不确定它是否符合我的需求.

我想用akka和数以百万计的实体(想象为域对象 - 后来的演员)创建一个可以相互影响的模拟.因此,我们认为模拟具有或多或少的"模糊"结果,我们有一个带有实体的数组,其中每个实体都有一个速度,但却被实际实体前面的实体所阻挠.当模拟开始时,每个实体应该移动n个字段,或者如果被其他实体阻止,则移动更少的字段.我们有多次迭代,最后我们有了一个新的订单.在一些轮次中重复这一过程,直到我们想要看到前导实体的"快照"(然后可能在下一轮开始之前将其删除).

所以我不明白我是否可以用akka创建它,因为:

是否有可能拥有每个演员位置的全局列表,因此他们知道他们在哪个位置以及哪个位于他们面前?据我了解,这违反了演员的封装.我可以把演员的位置放在演员本身,但是我怎样才能看到/通知演员周围的演员?除此之外,全局列表将产生同步问题并影响性能,这与期望的行为完全相反(并且与akka/actor模式互补)

我错过了什么?我是否必须寻找其他设计方法?谢谢你的建议.

更新:使用eventbus和分类器似乎也不是一个选择.参考文档:

"因此它不适合使用订阅频率变化非常高的情况"

simulation bigdata akka

7
推荐指数
1
解决办法
1181
查看次数

根据角度和速度寻找速度矢量

我正在为基于角度和速度的游戏编程AI运动.它是一个基于x,y轴的2D程序.我现在有一个位置向量,以及占速度与AI.Every时电流方向的速度矢量我移动AI我刚才添加的速度矢量到当前位置,让我的新position.At的那一刻运动是8方向的.我想要实现的是基于角度的运动(更真实的运动类型),并想知道是否可以从角度和速度常数计算速度矢量.

提前致谢!

java simulation vector angle game-physics

7
推荐指数
1
解决办法
1万
查看次数

模拟每两个变量之间具有不同混合依赖结构的混合数据?

我想模拟混合数据,比如三维数据.我想在每两个变量之间有两个不同的组件.

也就是说,模拟混合数据(V1和V2),其中它们之间的依赖关系是两个不同的正常分量.然后,在V2和V3之间另外两个正常组件.所以,我将得到3d数据,第一个和第二个变量之间的依赖关系是两个法线的混合.并且第二和第三变量之间的依赖性是另外两个不同组分的混合.

另一种解释我问题的方法:

假设我想生成如下混合数据:

1- 0.3正常(0.5,1)+ 0.7正常(2,4)#因此在这里我将获得由两个不同法线(混合模型的两个分量)生成的双变量混合数据,混合器重量的总和为1.

然后,我想得到另一个变量如下:

2- 0.5 normal(2,4)#这是第一个模拟的第二个变量+ 0.5法线(2,6)

所以在这里,我得到了3d模拟混合数据,其中V1和V2由两个不同的混合成分生成,V2和V3由另一个不同的混合成分生成.

这是如何在r中生成数据:(我相信它不会生成双变量数据)

N <- 100000                 

#Sample N random uniforms U
U <- runif(N)

#Variable to store the samples from the mixture distribution                                             
rand.samples <- rep(NA,N)

#Sampling from the mixture
for(i in 1:N) {
    if(U[i]<.3) {
        rand.samples[i] <- rnorm(1,1,3)
    } else {
        rand.samples[i] <- rnorm(1,2,5)
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我们生成混合双变量数据(两个变量),那么如何将其扩展为具有4个或5个变量,其中V1和V2由两个不同的法线生成(它们之间的依赖关系结构是两个法线的混合)然后V3将从另一个不同的法线生成,然后用V2进行复习.也就是说,当我们绘制V2~V3时,我们会发现它们之间的依赖关系结构是两个法线的混合,依此类推.

simulation r mixture-model mixture

7
推荐指数
1
解决办法
335
查看次数

模拟后得到的两个向量的比较

我想申请的甩采样方法来模拟随机矢量Y=(Y_1, Y_2)从一个单元盘状的均匀分布的D = { (X_1 , X_2) \in R^2: \sqrt{x^2_1 + x^2_2} ? 1},使得X = (X_1 , X_ 2)处于正方形的均匀分布的随机矢量S = [?1, 1]^2和接头密度f(y_1,y_2) = \frac{1}{\pi} 1_{D(y_1,y_2)}.

在拒绝方法中,我们一般接受一个样本如果f(x) \leq C * g(x)。我正在使用以下代码:

x=runif(100,-1,1)
y=runif(100,-1,1)

d=data.frame(x=x,y=y)
disc_sample=d[(d$x^2+d$y^2)<1,]
plot(disc_sample)
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

{使用上面的代码,从逻辑上讲,的大小d应该大于的大小,disc_sample但是当我调用它们时,我看到它们中的每一个都有 100 个元素。这怎么可能。为什么尺寸相同。}这部分已解决,感谢下面的评论。

现在的问题

另外,我怎样才能重新编写我的代码,以便为我提供按照条件获取 100 个样本所需的样本总数。即给我拒绝的样品数量,直到我得到 100 个所需的样品?

感谢r2evans的回答,但我希望写一些更简单的东西,一个 while 循环将所有可能的样本存储在矩阵或数据帧而不是列表中,然后从该数据帧调用,只是样本遵循条件。我在没有使用列表和 sapply 函数的情况下修改了答案中的代码,但它没有给出所需的结果,它只产生一行。

i=0
samps <- data.frame()
goods <- data.frame()
nr <- 0L
sampsize …
Run Code Online (Sandbox Code Playgroud)

simulation r probability sampling

7
推荐指数
1
解决办法
93
查看次数

如何在 Python 中以可视化方式制作马尔可夫链动画?

我想“视觉上”对马尔可夫链进行动画处理,如下所示: http: //markov.yoriz.co.uk/,但使用Python而不是html css和javascript。

我不知道是否有任何库可以使这变得简单,直到现在我设法使用 Networkx 库制作马尔可夫链的可视化表示,如下图所示,但无法将其动画化(或模拟)

到目前为止,这是我的代码:

from networkx.drawing.nx_pydot import write_dot
import networkx as nx
import matplotlib.pyplot as plt

states = [(0, 0),
          (1, 0),
          (2, 0),]


Q = [[5, 5, 0.4],
     [1, 2, 3],
     [4, 0.7, 0]
     ]


G = nx.MultiDiGraph()
labels={}
edge_labels={}

for i, origin_state in enumerate(states):
    for j, destination_state in enumerate(states):
        rate = Q[i][j]
        if rate > 0:
            G.add_edge(origin_state, destination_state, weight=rate, label="{:.02f}".format(rate))
            edge_labels[(origin_state, destination_state)] = label="{:.02f}".format(rate)



plt.figure(figsize=(10,7))
node_size = 200
pos = {state:list(state) for state …
Run Code Online (Sandbox Code Playgroud)

python simulation animation markov-chains networkx

7
推荐指数
1
解决办法
2648
查看次数

逆向列表拼接 Python 优化(USACO 2020 年 2 月青铜问题 3“Swapity Swap”)

我正在尝试解决一个涉及反转列表拼接的问题,但我在测试用例的时间限制方面遇到了问题,即 4 秒。问题:

Farmer John 的 N 头奶牛 (1?N?100) 排成一排。左边的第 i 头奶牛有标签 i,每 1?i?N。农夫约翰为奶牛制定了一个新的晨练程序。他告诉他们准确地重复以下两步过程 K (1?K?1000000000) 次:

当前在位置 A1…A2 的奶牛从左边的顺序颠倒了它们的顺序 (1?A1<A2?N)。然后,当前在位置 B1…B2 从左边开始的奶牛的顺序颠倒它们的顺序 (1?B1<B2?N)。在奶牛重复这个过程正好 K 次后,请输出从左边开始每 1?i?N 的第 i 头奶牛的标签。

评分:测试用例 2-3 满足 K?100。测试用例 4-13 不满足其他约束。

INPUT FORMAT(文件swap.in):输入的第一行包含N和K,第二行包含A1和A2,第三行包含B1和B2。

OUTPUT FORMAT(文件swap.out):在输出的第i行,在例程结束时从左边打印第i头牛的标签。

样品输入

7 2
2 5
3 7
Run Code Online (Sandbox Code Playgroud)

样品输出

1
2
4
3
5
7
6
Run Code Online (Sandbox Code Playgroud)

最初,奶牛的顺序是 [1,2,3,4,5,6,7] 从左到右。在过程的第一步之后,顺序是[1,5,4,3,2,6,7]。经过第二步的过程,顺序是[1,5,7,6,2,3,4]。第二次重复这两个步骤会产生样本的输出。

理论上,您可以通过找到程序重复的点,然后模拟相反的k % frequency时间来解决这个问题,其中模拟的次数frequency是唯一的。但我的问题是,当输入是:

100 1000000000
1 94
2 98
Run Code Online (Sandbox Code Playgroud)

我的程序需要 100 多秒才能运行。这个输入特别耗时,因为它运行的迭代次数最多,而且frequency …

python algorithm simulation optimization reverse

7
推荐指数
1
解决办法
153
查看次数

如何使用 simr 模拟数据以进行重复测量线性混合效应回归的功效分析?

我想对线性混合模型进行基于仿真的功率分析,lmer并从头开始重复测量。我知道这simr可能是配套的。然而,我不明白我必须做什么,也无法理解我在网上阅读的任何内容。

我想测试随机拦截模型,其中

  • y(z 标准化结果变量)~
    • a + b(z 标准化协变量)
    • + c + d(二元协变量)
    • + time1 + time2(时间虚拟值指示在 t1 或 t2 而非 t0 进行的测量)
    • + group(一组有两个表达式)
    • + group:time1 + group:time2
    • + (1 | participant)

即,使用随机截距将三个测量嵌套在参与者中。

如何模拟数据,以便能够找出以 0.80 的幂次找到 beta = .3 的交互效应(例如组:时间 1)的适当样本大小?我需要哪些额外信息才能做到这一点?

simulation r lme4

7
推荐指数
1
解决办法
785
查看次数