标签: simulation

用于优化模拟决策的最佳算法

我正在寻找最佳算法来优化同时进行的决策,以便在合理的时间内找到快速结果.同意做了许多"滴答",偶尔需要做出决定.最终达到目标状态.(如果做出非常糟糕的决定,就有可能永远不会达到目标状态)

有很多目标国家.我想找到具有最少蜱数的目标状态(蜱在现实生活中大致相当于一秒."我基本上想要决定在尽可能短的几秒内做出哪些决定来达到目标​​,

关于问题域的一些观点:

  • 直接蝙蝠我可以产生一系列选择,这将导致一个解决方案.它不会是最佳的.
  • 我有一个合理的启发式函数来确定什么是一个好的决定
  • 我有一个合理的功能来确定从节点到目标的最小可能时间成本.

算法:

  • 我需要处理这个问题大约10秒钟,然后给出最好的答案.
  • 我相信A*会找到我最理想的解决方案.问题是决策树会很大,以至于我无法快速计算出来.
  • IDA*会在10秒钟内给我一个很好的前几个选择,但我需要一条路径到目标.

目前我认为我将从目标的已知非最佳路径开始,然后可能使用模拟退火并尝试在10秒内改进它.

试图解决这类问题的研究算法是什么?

algorithm simulation optimization artificial-intelligence decision-tree

5
推荐指数
1
解决办法
960
查看次数

存储大量模拟配置,运行值和最终结果的首选(或推荐)方法

我正在使用一些网络模拟器.在对它进行一些扩展之后,我需要进行大量不同的模拟和测试.我需要记录:

  • 模拟场景配置
  • 每个时间单位t的每个设备的一些参数(例如缓冲区大小,信号质量,位置)的值
  • 从这些记录值计算的最终结果

执行模拟后需要第二个数据来执行一些可视化(简单动画,随时间显示一些统计数据).

我正在使用Python与matplotlib等进行后处理数据和编写适当的应用程序(现在考虑pyQt或Django,但这不是问题的主题).现在我想知道存储这些数据的最佳方法是什么?

我的第一个猜测是使用XML文件,但它可能是XML语法的过多开销(我的意思是,文件可以增长到非常大的大小,特别是对于数据类型的第二部分).所以我试图设计一个数据库......但在我看来这也不是正确的方法......也许是两者的混合?

我试图在谷歌找到一些线索,但没有发现什么特别的.您是否曾需要存储此类数据?你是怎么做到的?那有什么"设计模式"吗?

python database simulation design-patterns

5
推荐指数
1
解决办法
2170
查看次数

用于高度图的离散流体"填充"算法

我正在寻找一种算法来描述流体在高度图表面上的瞬态行为.我在t = 0时的起始条件是:

  • 尺寸为[x,y]的高度值(H)的二维矩阵
  • 尺寸为[x,y]的流体高度值(F)的二维矩阵
  • 矩阵(a)中每个点的面积的度量,即每个位置是1平方厘米
  • 流体的粘度值(u)

我想要的是一种算法,可以在t'= t + 1处计算流体高度矩阵F的新值.在任何时候,我都可以通过v = a*(F(x,y) - H(x,y))来计算给定点处的流体体积.该算法的理想属性是:

  • 它不需要考虑每个点处流体柱顶部或底部的"斜率"或"形状".也就是说,它可以将hieghtmap中的每个值视为描述一定高度的扁平方形,并且流体高度的每个值映射为具有平顶的水的矩形柱
  • 如果遇到"排水"(即高度图中的一个非常低的点),来自地图所有部分的流体可能会受到影响,因为它被拉向它.

我正在寻找的一个简单例子是:

  • 5x5高度的地图矩阵,其中所有值均为0
  • 一个5x5流体高度映射矩阵,其中所有值均为0,除了[2,2],即10.
  • 每点面积1平方公尺
  • 粘度为u

该算法将描述在几个时间步长上在5×5矩阵上展开的流体"列".最终算法将在所有位置以10/25的均匀高度稳定下来,但我真的对它们之间发生的事情感兴趣.

我试图搜索这种算法,但我能找到的只是描述流体中颗粒行为的方程式,这对于我的目的而言太过细化.有谁知道我可以参考这个问题的任何好的来源,或者可能满足我需要的现有算法.

algorithm simulation fluid-dynamics

5
推荐指数
1
解决办法
1736
查看次数

Zelig R Cluster标准错误功能无效

当提供有关群集的信息时,Zelig似乎没有做任何事情。难道我做错了什么?我非常感谢此程序包为单个变量的更改生成预测值的便捷性-对了解我的变量之一的实质效果非常有用。

这是MWE:

library(Zelig)
data(bivariate)
summary(m_cluster <- zelig(formula=y1 ~ x1, data=bivariate, cluster="x4", "logit"))
summary(m_noCluster <- zelig(formula=y1 ~ x1, data=bivariate, "logit"))
Run Code Online (Sandbox Code Playgroud)

是否使集群变量成为一个因素似乎无关紧要:

summary(zelig(formula=y1 ~ x1, data=bivariate, cluster=as.factor(bivariate$x4), "logit"))
Run Code Online (Sandbox Code Playgroud)

感谢您的任何建议。

simulation regression r r-zelig

5
推荐指数
0
解决办法
608
查看次数

如何使用javascript模拟鼠标点击和鼠标移动

我正在 js 文件中使用 element.click() 来模拟鼠标单击操作,但鼠标光标在其他地方并且操作正在正确的元素上执行,我希望在执行模拟鼠标单击时将鼠标光标放在元素上。有人吗知道使用 javascript 代码,我怎样才能得到这个?

javascript testing simulation automated-tests

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

高速缓存行填充,用于变量是高速缓存行大小的倍数

我正在创建一个非常快速的多线程离散事件模拟框架。该框架的核心使用原子和无锁编程技术来实现跨多个线程的快速执行。这要求我将一些变量对齐到高速缓存行并填充剩余的高速缓存行空间,以便没有高速缓存行争用。这是我的方法:

// 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”的声明消失?

c++ simulation multithreading caching lockless

5
推荐指数
1
解决办法
544
查看次数

Node.js - 模拟按键而不指定元素

我想用 JavaScript 模拟按键。最好不指定任何元素。

我想要的方法是.focus()在输入上使用,然后模拟按键,例如字符“a”。

如果我自己按下该键,也会发生同样的事情。

通过互联网搜索我没有找到解决方案。这可能与模拟事件和输入字段的组合有关。有时我可以捕获事件,但输入字段中没有输入。

请注意,这不应被视为重复Is it possible to Analog key press events programmatically? 因为这并不能解决我的问题。我已经尝试过了。

javascript testing simulation keyboard key

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

如何在Python中生成具有指定均值、方差、偏度、峰度的数据?

我想在 Python 中生成类似于真实股票市场数据的数据,这意味着我需要能够指定并处理所有前四个时刻。不幸的是,仅仅能够控制偏度或峰度是不够的。

我在这里找到了一些答案:如何在Python中生成具有给定均值、方差、偏斜和峰度的分布?,但是我似乎无法通过 genamma 分布来控制属性。

我知道这里有大量的发行版: https: //docs.scipy.org/doc/scipy/reference/stats.html#continuous-distributions,也许我可以以某种聪明的方式使用其中一个?或者还有别的办法吗?

python simulation statistics

5
推荐指数
1
解决办法
1373
查看次数

如何在vispy中选择距离点击点最近的标记?

vispy库中,我有一个显示为标记的点列表,我想更改最接近单击点的点的颜色(或仅获取其索引)。

我可以通过 event.pos 获取点击点的像素,但我需要它的实际坐标将其与其他坐标进行比较(或获取其他标记的像素点以将其与事件位置进行比较)。

我有这段代码来获取最近的点索引。它接受数组和点的输入(单击一个)

def get_nearest_index(pos,p0):
    count=0
    col =[(1,1,1,0.5) for i in pos]
    dist= math.inf
    ind=0
    for i in range(len(pos)):
        d = (pos[i][0]-p0[0])**2+(pos[i][1]-p0[1])**2
        if d<dist:
            ind=i
            dist=d
    return ind
Run Code Online (Sandbox Code Playgroud)

但问题是我必须在同一坐标系中传递它们。打印出来event.pos返回像素,例如:[319 313]而我的位置在pos数组中是:

[[-0.23801816  0.55117583 -0.56644607]
 [-0.91117247 -2.28957391 -1.3636486 ]
 [-1.81229627  0.50565064 -0.06175591]
 [-1.79744952  0.48388072 -0.00389405]
 [ 0.33729051 -0.4087148   0.57522977]]
Run Code Online (Sandbox Code Playgroud)

所以我需要将其中一个转换为另一个。变换就像

tf = view.scene.transform
p0 = tf.map(pixel_pt)
print(str(pixel_pt) + "--->"+str(p0))
Run Code Online (Sandbox Code Playgroud)

打印出来[285 140 0 1]--->[ 4.44178173e+04 -1.60156369e+04 0.00000000e+00 1.00000000e+00]的内容与点相差甚远。

python simulation vispy

5
推荐指数
1
解决办法
525
查看次数

有没有办法在 R 中模拟具有特定滚动平均值和自相关性的时间序列数据?

我有一个现有的时间序列(1000 个样本),并使用 R 中的函数计算滚动平均值filter(),每个样本取 30 个样本的平均值。这样做的目标是创建时间序列的“平滑”版本。现在我想创建“看起来像”原始时间序列的人工数据,即有些噪音,如果我将相同的filter()函数应用于人工数据,这将导致相同的滚动平均值。简而言之,我想模拟一个具有相同总体过程但不与现有时间序列完全相同的值的时间序列。总体目标是研究某些方法是否可以检测时间序列之间趋势的相似性,即使趋势周围的波动不相同。

为了提供一些数据,我的时间序列看起来有点像这样:

set.seed(576)
ts <- arima.sim(model = list(order = c(1,0,0), ar = .9), n = 1000) + 900

# save in dataframe
df <- data.frame("ts" = ts)

# plot the data
plot(ts, type = "l")
Run Code Online (Sandbox Code Playgroud)

过滤函数产生滚动平均值:

my_filter <- function(x, n = 30){filter(x, rep(1 / n, n), sides = 2, circular = T)}
df$rolling_mean <- my_filter(df$ts)
lines(df$rolling_mean, col = "red")
Run Code Online (Sandbox Code Playgroud)

为了模拟数据,我尝试了以下方法:

  1. 向滚动平均值添加随机噪声。
df$sim1 <- df$rolling_mean + rnorm(1000, sd = sd(df$ts))

lines(df$sim1, col …
Run Code Online (Sandbox Code Playgroud)

simulation r time-series arima autocorrelation

5
推荐指数
0
解决办法
498
查看次数