标签: simulation

在仿真代码中使用全局变量

可能的重复:
全局变量坏吗?

我正在编写一个利用材料和能源特定数据的模拟代码。该数据存储在全局数组中,因为一旦上传,它们将在模拟过程中使用,并且应该可以被大多数函数访问。

我到处都读到使用全局变量不是一个好习惯。有人能给我解释一下,或者给我指点网络上的资料,解释我如何在需要使用大量数据数组的同时避免在模拟应用程序编码中使用全局数组。我尝试用 C++ 编写代码并尽可能多地使用面向对象的特性。

在此先感谢您的帮助。

c++ simulation global-variables

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

python中真正的全局变量

好的,所以我正在处理的项目需要*使用一个真正的全局变量(或五个),这里的其他问题与跨模块变量有关(稍后可能会有所帮助,但目前还没有)。

这是我的问题:我有一个程序将运行环境模拟,我需要设置一些全局变量以在某些函数中使用和修改。怎么会去做呢?

*当我说需要时,我的意思是我还没有找到更有效的方法来做到这一点。

python simulation global-variables

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

定义多个相同类型对象的内存效率更高的方法

所以,我正在涉足等离子体模拟的世界。现在,虽然我知道顶级模拟是用 Fortran 编写的,并且具有超内存效率的子例程和专用代码,但我希望只运行一些低级模拟。

我的问题是,在时变环境(好吧,时间步进)中模拟大量粒子时,跟踪所有数据是一个技巧。我之前使用过多维数组——使用粒子的列号和属性的行号,但是这感觉很笨拙。然而,它似乎执行得更快。

我最近尝试定义我自己的类,但是作为一个 Python 新手,我可能以一种非常低效的方式做到了。对于 3 维中的每个粒子,我需要能够存储粒子的位置、速度和力(一旦代码变得更复杂,就有可能添加更多变量)。使用我对类的了解,我定义了一个particle对象(我认为),它使我的代码更易于阅读和遵循:

# Define Particle as a class
class particle():
    def __init__(self, index=0, pos=np.array([0, 0, 0]), vel=np.array([0,0,0]), 
                 F=np.array([0, 0, 0])):
        self.index = index      # Particle index (identifier)
        self.pos = pos          # Position 3-vector
        self.vel = vel          # Velocity 3-vector
        self.F = F              # Net force 3-vector (at particle)
Run Code Online (Sandbox Code Playgroud)

因此,我可以轻松地初始化包含大量这些对象的数组,并以相当简单的方式修改每个值。然而,正如我所提到的,这对于仅涉及少数粒子的模拟运行速度较慢。我将使用我的代码将其与纯粹面向矩阵的方法进行比较,以查看哪种方法在大型模拟中的扩展性更好。

我想我的问题是:以这种方式定义“粒子”是最有效的吗?或者是否有更高效的 CPU/内存方式来定义这样的对象。我想保留它的方法能力(即particle[i].pos = [1,2,3]particle[2].vx[1] = 3),以便我可以为每个粒子设置值,并将它们传递给函数。请记住,我是 Python 新手,所以我可能不会在大型复杂代码上取得巨大成功。

python arrays simulation types class

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

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

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

javascript testing simulation automated-tests

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

通过 TCP 将 Unity 模拟与 python 控制器连接起来

出于试点研究的目的,我尝试将 Unity 中的简单模拟环境与基于神经网络的 Python 控制器连接起来。模拟 Unity 环境中的主要角色应根据其经验学习行为:

  1. 主角扫描环境并将其存储在数据结构中;
  2. 这个数据结构通过 TCP 发送到 python 中运行的服务器;
  3. 在python中执行一个复杂的计算(基于从Unity接收到的数据)并产生一个结果(动作);
  4. 结果(动作)通过 TCP 发送回 Unity。角色执行与结果相对应的动作。
  5. 重复步骤 1-4 直到无穷大(除非客户端或服务器停止)。

这个过程可以抽象为一个通过 TCP 发送的 Ping - Pong 消息,其中 Unity 发送一个“Ping”,Python 进行一些计算并产生一个“Pong”,它被发送回 Unity 更新模拟并再次产生一个“Ping” "并将其发送到python ...

我目前在一个玩具项目中测试这个过程。我有一个脚本附加到 Unity 场景中的主摄像头,如下所示:

using UnityEngine;
using System.Collections;
using System;
using System.IO;
using System.Net.Sockets;
using Newtonsoft.Json;
using System.Threading;



public class networkSocketSO : MonoBehaviour
{
    public String host = "localhost";
    public Int32 port = 50000;

    internal Boolean socket_ready = false;
    internal String input_buffer = "";

    TcpClient tcp_socket; …
Run Code Online (Sandbox Code Playgroud)

python simulation tcp unity-game-engine

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

如何用Javascript模拟慢速连接?

我收到了一个研究网站的请求,该网站将测试用户在正常和慢速 Internet 连接上执行重复性任务时的行为。

我想知道是否有任何 JS 库可以用于研究的不同场景中的带宽限制,从而模拟较慢的连接?我遇到了Charlescrapify等工具,但我不确定它们是否可以与网站集成,我真的需要它成为可配置的客户端。

javascript simulation bandwidth-throttling slowdown

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

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
查看次数