我正在寻找最佳算法来优化同时进行的决策,以便在合理的时间内找到快速结果.同意做了许多"滴答",偶尔需要做出决定.最终达到目标状态.(如果做出非常糟糕的决定,就有可能永远不会达到目标状态)
有很多目标国家.我想找到具有最少蜱数的目标状态(蜱在现实生活中大致相当于一秒."我基本上想要决定在尽可能短的几秒内做出哪些决定来达到目标,
关于问题域的一些观点:
算法:
目前我认为我将从目标的已知非最佳路径开始,然后可能使用模拟退火并尝试在10秒内改进它.
试图解决这类问题的研究算法是什么?
algorithm simulation optimization artificial-intelligence decision-tree
我正在使用一些网络模拟器.在对它进行一些扩展之后,我需要进行大量不同的模拟和测试.我需要记录:
执行模拟后需要第二个数据来执行一些可视化(简单动画,随时间显示一些统计数据).
我正在使用Python与matplotlib等进行后处理数据和编写适当的应用程序(现在考虑pyQt或Django,但这不是问题的主题).现在我想知道存储这些数据的最佳方法是什么?
我的第一个猜测是使用XML文件,但它可能是XML语法的过多开销(我的意思是,文件可以增长到非常大的大小,特别是对于数据类型的第二部分).所以我试图设计一个数据库......但在我看来这也不是正确的方法......也许是两者的混合?
我试图在谷歌找到一些线索,但没有发现什么特别的.您是否曾需要存储此类数据?你是怎么做到的?那有什么"设计模式"吗?
我正在寻找一种算法来描述流体在高度图表面上的瞬态行为.我在t = 0时的起始条件是:
我想要的是一种算法,可以在t'= t + 1处计算流体高度矩阵F的新值.在任何时候,我都可以通过v = a*(F(x,y) - H(x,y))来计算给定点处的流体体积.该算法的理想属性是:
我正在寻找的一个简单例子是:
该算法将描述在几个时间步长上在5×5矩阵上展开的流体"列".最终算法将在所有位置以10/25的均匀高度稳定下来,但我真的对它们之间发生的事情感兴趣.
我试图搜索这种算法,但我能找到的只是描述流体中颗粒行为的方程式,这对于我的目的而言太过细化.有谁知道我可以参考这个问题的任何好的来源,或者可能满足我需要的现有算法.
当提供有关群集的信息时,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)
感谢您的任何建议。
我正在 js 文件中使用 element.click() 来模拟鼠标单击操作,但鼠标光标在其他地方并且操作正在正确的元素上执行,我希望在执行模拟鼠标单击时将鼠标光标放在元素上。有人吗知道使用 javascript 代码,我怎样才能得到这个?
我正在创建一个非常快速的多线程离散事件模拟框架。该框架的核心使用原子和无锁编程技术来实现跨多个线程的快速执行。这要求我将一些变量对齐到高速缓存行并填充剩余的高速缓存行空间,以便没有高速缓存行争用。这是我的方法:
// 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”的声明消失?
我想用 JavaScript 模拟按键。最好不指定任何元素。
我想要的方法是.focus()在输入上使用,然后模拟按键,例如字符“a”。
如果我自己按下该键,也会发生同样的事情。
通过互联网搜索我没有找到解决方案。这可能与模拟事件和输入字段的组合有关。有时我可以捕获事件,但输入字段中没有输入。
请注意,这不应被视为重复Is it possible to Analog key press events programmatically? 因为这并不能解决我的问题。我已经尝试过了。
我想在 Python 中生成类似于真实股票市场数据的数据,这意味着我需要能够指定并处理所有前四个时刻。不幸的是,仅仅能够控制偏度或峰度是不够的。
我在这里找到了一些答案:如何在Python中生成具有给定均值、方差、偏斜和峰度的分布?,但是我似乎无法通过 genamma 分布来控制属性。
我知道这里有大量的发行版: https: //docs.scipy.org/doc/scipy/reference/stats.html#continuous-distributions,也许我可以以某种聪明的方式使用其中一个?或者还有别的办法吗?
在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]的内容与点相差甚远。
我有一个现有的时间序列(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)
为了模拟数据,我尝试了以下方法:
df$sim1 <- df$rolling_mean + rnorm(1000, sd = sd(df$ts))
lines(df$sim1, col …Run Code Online (Sandbox Code Playgroud) simulation ×10
python ×3
algorithm ×2
javascript ×2
r ×2
testing ×2
arima ×1
c++ ×1
caching ×1
database ×1
key ×1
keyboard ×1
lockless ×1
optimization ×1
r-zelig ×1
regression ×1
statistics ×1
time-series ×1
vispy ×1