我想在 C# 中执行离散事件模拟。我想要三个球按照随机行走模式同时在屏幕上滚动。在时间 1 球应该出现并开始滚动,在时间 5,球 2 和在时间 10,球 3 应该出现。当任何两个球靠得足够近时,球的颜色应该会改变(只要它们保持靠近)。
我对离散事件模拟很陌生,我想了解我们如何在 C# 编程中做到这一点?创建模型需要哪些步骤。我知道图形和其他东西。
我制作了一个模拟太阳系中物体运动的程序,然而,我的结果却出现了各种不准确之处.
我相信它可能与我的集成方法有关.
我跑的测试是一个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) 我试图让乌龟检查前方补丁的颜色并决定移动的位置。如果前面的补丁不是白色的,那么海龟向左或向右旋转并移动。我的 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)
提前致谢!
对于我的家庭作业,我被要求编写一个脚本来模拟容器内的气体粒子。
现在我已经完成了数学部分,到目前为止它是这样工作的:
1) 输入一个包含位置坐标和移动向量的初始列表 2) 然后创建一个转换列表,由所有 x 坐标和 y 坐标组成,每个都在一个单独的子列表中,供以后绘图 3) 然后运行一系列我写的函数在间隔后更新列表中的位置和向量 4) 再次转换列表 5) 等等
但是我根本不知道如何为这些设置动画?
我想我需要这样的东西:
1) 绘制一个圆形用作容器 + 初始粒子/位置 2) 保持圆形并更新列表 3) 绘制圆形并更新列表 4) 等等,以非常快的速度
如果标题不能准确描述我正在做的事,请道歉.
我正在努力为幻想体育比赛建立每一个可能的假设团队.这意味着将所有可用的球员组合在一起,每个球员都有自己所在球队的特征,他们的位置和工资,这限制了一支球队的人数.我遇到的麻烦是找到一种内存有效的方法将它们全部组合起来.
我做了一个示例数据集:
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,查找并计算每一步的薪水/团队编号.这让我可以在每一步都将所有内容都安装到内存中,但速度非常慢且效率低下 - 这相当于创建了每个可能的团队并连续应用规则.
任何替代方法都会很棒!
我有一个特定的模拟要执行,在 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 次模拟。谁能给我一个提示?
我正在尝试使用画布在 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)我试图在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) 我需要生成具有不同参数的随机数(二项式).我试图使用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)
我仍然收到错误.任何人都可以帮我弄清楚错误吗?
谢谢.
假设我需要将 n=30 名学生分成 2 到 6 人一组,我从每个学生那里收集以下偏好数据:
学生姓名:汤姆
喜欢坐在一起:吉米、埃里克
不喜欢坐在一起:约翰、保罗、林戈、乔治
这暗示他们对全班其他他们没有提到的学生保持中立。
我如何才能最好地运行许多不同/随机分组安排的大量模拟,以便能够确定每个安排的分数,然后我可以选择“最佳”分数/安排?
或者,是否有任何其他方法可以计算出满足所有提供的约束的解决方案?
我想要一种可以每年在不同班级规模上重复使用的通用方法,但在每次模拟运行中,以下常量和变量都适用:
常量:学生总数、学生偏好
变量:团体规模、学生分组、不同团体安排/要测试的迭代次数
预先感谢您提供的任何帮助/建议/指示。
algorithm simulation optimization grouping mathematical-optimization
simulation ×10
r ×4
python ×2
algorithm ×1
animation ×1
astronomy ×1
bioconductor ×1
c# ×1
canvas ×1
combinations ×1
cpu-cores ×1
events ×1
grouping ×1
html ×1
javascript ×1
lapply ×1
matplotlib ×1
netlogo ×1
optimization ×1
pixel ×1