标签: simulation

离散事件仿真示例

我想在 C# 中执行离散事件模拟。我想要三个球按照随机行走模式同时在屏幕上滚动。在时间 1 球应该出现并开始滚动,在时间 5,球 2 和在时间 10,球 3 应该出现。当任何两个球靠得足够近时,球的颜色应该会改变(只要它们保持靠近)。

我对离散事件模拟很陌生,我想了解我们如何在 C# 编程中做到这一点?创建模型需要哪些步骤。我知道图形和其他东西。

c# simulation events

2
推荐指数
1
解决办法
3510
查看次数

为什么我的天文模拟不准确?

我制作了一个模拟太阳系中物体运动的程序,然而,我的结果却出现了各种不准确之处.

我相信它可能与我的集成方法有关.


tl; dr我的模拟和NASA数据之间的地球位置和速度之间有细微差别,如果你可以请看下面我的代码并告诉我数学是否错误.


我跑的测试是一个10天长(864000秒)的模拟,从开始到Thu Mar 13 18:30:59 2006结束Thu Mar 23 18:30:59 2006.

模拟结束后,该计划报告了地球的以下统计数据:

Earth position: (-1.48934630382e+11, -7437423391.22)
Earth velocity: (990.996767368, -29867.6967867)
Run Code Online (Sandbox Code Playgroud)

测量单位当然是米和米每秒.

我已经使用HORIZONS系统来获取Thu Mar 13 18:30:59 2006太阳系中大多数大型物体的起始位置和速度矢量,并将它们放入模拟中.

测试结束后,我再次查询HORIZONS的Thu Mar 23 18:30:59 2006地球数据,得到了以下结果:

Earth position: (-1.489348720130393E+11, -7437325664.023257)
Earth velocity: (990.4160633376971, -2986.736541327986)
Run Code Online (Sandbox Code Playgroud)

如您所见,结果的前四位数几乎总是相同.然而,这仍然是一个非常大的错过!我很担心,因为我将不得不模拟几年的时间,错误可能会升级.

你能看看我模拟的核心,告诉我我的数学是不正确的吗?

def update (self, dt):
    """Pushes the uni 'dt' seconds forward in time."""

    self.time += dt

    for b1, b2 in combinations(self.bodies.values(), 2):
        fg = self.Fg(b1, b2)

        if b1.position.x > b2.position.x: …
Run Code Online (Sandbox Code Playgroud)

python simulation floating-point astronomy

2
推荐指数
1
解决办法
562
查看次数

尝试提前检查色块并根据前置色块的色块颜色做出决定

我试图让乌龟检查前方补丁的颜色并决定移动的位置。如果前面的补丁不是白色的,那么海龟向左或向右旋转并移动。我的 If 决策结构中出现错误,提示“此处预期为 TRUE?FALSE,而不是块列表”。知道是什么原因造成的吗?我对我的 while 循环使用了相同的逻辑,这似乎工作正常。下面是我的代码,错误发生在代码“ifelse [[pcolor] of patch-ahead 1 != white]”的第一行。

 ifelse [[pcolor] of patch-ahead 1 != white][
     ifelse(tempx < xcor)[
       set heading 270
       jump 1
       ]
     [ 
       set heading 90
       jump 1
     ]
 ]
Run Code Online (Sandbox Code Playgroud)

提前致谢!

simulation netlogo

2
推荐指数
1
解决办法
3978
查看次数

我应该如何在 python matplotlib 中设置粒子动画?

对于我的家庭作业,我被要求编写一个脚本来模拟容器内的气体粒子。

现在我已经完成了数学部分,到目前为止它是这样工作的:

1) 输入一个包含位置坐标和移动向量的初始列表 2) 然后创建一个转换列表,由所有 x 坐标和 y 坐标组成,每个都在一个单独的子列表中,供以后绘图 3) 然后运行一系列我写的函数在间隔后更新列表中的位置和向量 4) 再次转换列表 5) 等等

但是我根本不知道如何为这些设置动画?

我想我需要这样的东西:

1) 绘制一个圆形用作容器 + 初始粒子/位置 2) 保持圆形并更新列表 3) 绘制圆形并更新列表 4) 等等,以非常快的速度

python simulation animation matplotlib

2
推荐指数
1
解决办法
5673
查看次数

创建每个可能的团队组合 - 组合优化

如果标题不能准确描述我正在做的事,请道歉.

我正在努力为幻想体育比赛建立每一个可能的假设团队.这意味着将所有可用的球员组合在一起,每个球员都有自己所在球队的特征,他们的位置和工资,这限制了一支球队的人数.我遇到的麻烦是找到一种内存有效的方法将它们全部组合起来.

我做了一个示例数据集:

 player_pool <- data.frame(id = seq(1,30), salary = seq(1,30), team = rep(LETTERS[seq(from=1, to=5)],6), position = rep(LETTERS[seq(from=1, to=5)],6))
Run Code Online (Sandbox Code Playgroud)

在这30名球员中,我想选择每支球队8人,其中至少有1名来自5个角色的球员,不超过3名来自同一球队的球员,总薪水不超过50.

例如,这将是一个有效的团队:

 id salary team position
 1   1      A   A
 2   2      B   B
 3   3      C   C
 4   4      D   D
 5   5      E   E
 6   6      A   A
 7   7      B   B
 8   8      C   C
Run Code Online (Sandbox Code Playgroud)

每支球队不超过两名球员,每名球员至少1名,总薪水为36名.

我一直在尝试使用包来逐步实现所有~6MM组合的公式iterpc,查找并计算每一步的薪水/团队编号.这让我可以在每一步都将所有内容都安装到内存中,但速度非常慢且效率低下 - 这相当于创建了每个可能的团队并连续应用规则.

任何替代方法都会很棒!

simulation combinations r combinatorics

2
推荐指数
1
解决办法
188
查看次数

如何并行化具有多个参数的函数?

我有一个特定的模拟要执行,在 R 中运行需要一些时间。由于我想执行 1000 次模拟,我决定使用“并行”包将这些模拟分布在 4 个内核上。我知道如果我有如下函数,我可以得到一个结果向量。

results_parallel <- parSapply(cl, c(1000,1000,1000,1000), rnorm)
Run Code Online (Sandbox Code Playgroud)

在这里 rnorm() 只有一个参数作为输入,因此我可以要求使用 4 个内核生成 4000 个值。

但是我的模拟有不止一个参数。我的问题是,由于我有多个参数作为输入,我如何知道应该使用 4 个内核计算哪个参数?如果simulation1(A,B,C,m)是我的函数,其中 m 是模拟次数,我想要求每个核心进行 250 次模拟,以便最终获得 1000 次模拟。谁能给我一个提示?

simulation parallel-processing r cpu-cores

2
推荐指数
1
解决办法
552
查看次数

HTML5 Canvas,更好的像素控制和更快的速度

我正在尝试使用画布在 HTML5 和 Javascript 的帮助下创建一个小模拟。然而,我的问题是,我真的想不出一种方法来控制我的像素行为,而不是让每个像素都成为一个对象,这会导致我的模拟速度严重减慢。

到目前为止的代码如下:

var pixels = [];
class Pixel{
    constructor(color){
        this.color=color;
    }
}

window.onload=function(){
    canv = document.getElementById("canv");
    ctx = canv.getContext("2d");
    createMap();
    setInterval(game,1000/60);
};

function createMap(){
    pixels=[];
    for(i = 0; i <= 800; i++){
        pixels.push(sub_pixels = []);
        for(j = 0; j <= 800; j++){
            pixels[i].push(new Pixel("green"));
        }
    }
    pixels[400][400].color="red";
}

function game(){
    ctx.fillStyle = "white";
    ctx.fillRect(0,0,canv.width,canv.height);
    for(i = 0; i <= 800; i++){
        for(j = 0; j <= 800; j++){
            ctx.fillStyle=pixels[i][j].color;
            ctx.fillRect(i,j,1,1);
        }
    }
    for(i = 0; i …
Run Code Online (Sandbox Code Playgroud)

html javascript simulation canvas pixel

2
推荐指数
1
解决办法
1226
查看次数

从间隔列表中模拟随机位置

我试图在R中开发一个函数来输出给定间隔列表中的随机位置.

我的间隔文件(14,600行)是制表符分隔bed文件(chromosome start end name),如下所示:

1      4953    16204   1
1      16284   16612   1
1      16805   17086   1
1      18561   18757   1
1      18758   19040   1
1      19120   19445   1
Run Code Online (Sandbox Code Playgroud)

目前我的函数将N在这些间隔内生成随机位置.

sim_dat <- bpSim(N=10)
head(sim_dat)
Run Code Online (Sandbox Code Playgroud)
  seqnames    start      end width strand
1       1 22686939 22686939     1      *
2       1 14467770 14467770     1      *
3       2 10955472 10955472     1      *
4        X   823201   823201     1      *
5        6 10421738 10421738     1      *
6       17 21827745 21827745     1 …
Run Code Online (Sandbox Code Playgroud)

simulation r bioinformatics bioconductor genomicranges

2
推荐指数
1
解决办法
343
查看次数

使用R中的lapply生成具有不同参数的随机数

我需要生成具有不同参数的随机数(二项式).我试图使用lapply函数来做到这一点.

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

lst1 <- list(n=c(10,20), size=c(100,200), q=c(0.1,0.2)) #list of variables

lapply(lst1, function(x) {
  rbinom(x[1],x[2],x[3])
})
Run Code Online (Sandbox Code Playgroud)

似乎有错误.

然后我也尝试了这种方式,

lapply(lst1, function(x) {
  rbinom(x$n,x$size,x$q)
})
Run Code Online (Sandbox Code Playgroud)

我仍然收到错误.任何人都可以帮我弄清楚错误吗?

谢谢.

simulation r lapply

2
推荐指数
1
解决办法
86
查看次数

优化学生座位安排的算法

假设我需要将 n=30 名学生分成 2 到 6 人一组,我从每个学生那里收集以下偏好数据:

学生姓名:汤姆

喜欢坐在一起:吉米、埃里克

不喜欢坐在一起:约翰、保罗、林戈、乔治

这暗示他们对全班其他他们没有提到的学生保持中立。

我如何才能最好地运行许多不同/随机分组安排的大量模拟,以便能够确定每个安排的分数,然后我可以选择“最佳”分数/安排?

或者,是否有任何其他方法可以计算出满足所有提供的约束的解决方案?

我想要一种可以每年在不同班级规模上重复使用的通用方法,但在每次模拟运行中,以下常量和变量都适用:

常量:学生总数、学生偏好

变量:团体规模、学生分组、不同团体安排/要测试的迭代次数

预先感谢您提供的任何帮助/建议/指示。

algorithm simulation optimization grouping mathematical-optimization

2
推荐指数
1
解决办法
865
查看次数