问题标签 [simulation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
365 浏览

deployment - Microsoft Robotics Development Studio 模拟项目部署

我目前正在 Microsoft Robotics Development Studio 中开展一个项目,但在部署通用解决方案时遇到了一些问题。

我的问题是这个。我正在做一个模拟,所以我需要将模拟引擎与我的项目一起部署。这取决于 Ageia PhysX 引擎、DirectX 和 Microsoft XNA 框架。我了解这一点,并且我了解 MRDS (dssdeploy) 的部署工具未设置为默认部署模拟。因此,如果有人以前使用过 MRDS,并且已经部署了模拟,我可以为此提供一些帮助。

0 投票
1 回答
405 浏览

simulation - RoboCup Soccer Simulator 2d v14 的可教练球员

我正在做与此类似的工作,但我在网上找到的可教练球员已经 3 岁,并且不能使用最新版本的足球服务器

有谁知道任何替代品?或有什么建议?
谢谢

0 投票
1 回答
238 浏览

frameworks - Terrarium 类代理交互框架

我正在寻找一个代理交互模拟的框架,我可以在其中部署一些代理并让它们交互并观察它们的演变。

到目前为止,我找到了 Terrarium 2.0 ( http://terrarium2.codeplex.com/ )。原则上这就是我所需要的:能够创建一些生物/代理并将其部署到一个模拟框架中,它将与其他代理交互。但似乎 Terrarium 不再处于开发阶段。

您知道任何值得考虑的类似框架吗?

谢谢。

0 投票
5 回答
2102 浏览

python - 需要一个适合可视化队列模拟的 Python 包

我正在 wxPython GUI 中进行排队理论的模拟。(项目链接。)什么是可视化模拟的好工具?可视化应该由简单的对象组成,例如客户端、服务器、设施和人口。它们都应该用简单的框或类似的东西来表示。将有几个队列供客户端等待。

由于这是一个正在进行的模拟的可视化,对象将在屏幕上移动,如果它们能够从一个地方平滑地移动到另一个地方,而不是突然跳跃,那就太好了。

什么是创建该可视化的好工具?我可以在原生 wxPython 图形中做到这一点。我也可以使用 PyGame。但也许这里有人有更好的推荐?

0 投票
16 回答
2428 浏览

multithreading - 关于启动大型多线程编程项目的建议

我的公司目前正在运行一个第三方模拟程序(自然灾害风险建模),该程序从磁盘中提取千兆字节的数据,然后运行几天以产生结果。我很快将被要求将其重写为多线程应用程序,以便它在数小时而不是数天内运行。我预计有大约 6 个月的时间来完成转换,并将单独工作。

我们有一个 24-proc 的盒子来运行它。我将可以访问原始程序的源代码(我认为是用 C++ 编写的),但此时我对它的设计方式知之甚少。

我需要关于如何解决这个问题的建议。我是一位经验丰富的程序员(约 30 年,目前使用 C# 3.5),但没有多处理器/多线程经验。如果合适的话,我愿意并且渴望学习一门新的语言。我正在寻找有关语言、学习资源、书籍、架构指南的建议。等等

要求:Windows 操作系统。具有大量支持和良好学习资源的商业级编译器。不需要花哨的 GUI - 它可能会从配置文件运行并将结果放入 SQL Server 数据库。

编辑:当前的应用程序是 C++,但我几乎肯定不会使用该语言进行重写。我删除了某人添加的 C++ 标签。

0 投票
4 回答
4480 浏览

math - Collision Detection between Accelerating Spheres

I am writing a physics engine/simulator which incorporates 3D space flight, planetary/stellar gravitation, ship thrust and relativistic effects. So far, it is going very well, however, one thing that I need help with is the math of the collision detection algorithm.

The iterative simulation of movement that I am using is basically as follows:

(Note: 3D Vectors are ALL CAPS.)

Where:

What I basically need to do is to find some efficient formula that derives from (EQ.2) above for two objects (obj1, obj2) and tell if they ever collide, and if so, at what time. I need the exact time both so that I can determine if it is in this particular time increment (because acceleration will be different at different time increments) and also so that I can locate the exact position (which I know how to do, given the time)

For this engine, I am modelling all objects as spheres, all this formula/algorithm needs to do is to figure out at what points:

where .Distance is a positive scalar value. (You can also square both sides if this is easier, to avoid the square root function implicit in the .Distance calculation).

(yes, I am aware of many, many other collision detection questions, however, their solutions all seem to be very particular to their engine and assumptions, and none appear to match my conditions: 3D, spheres, and acceleration applied within the simulation increments. Let me know if I am wrong.)


Some Clarifications:

1) It is not sufficient for me to check for Intersection of the two spheres before and after the time increment. In many cases their velocities and position changes will far exceed their radii.

2) RE: efficiency, I do not need help (at this point anyway) with respect to determine likely candidates for collisions, I think that I have that covered.


Another clarification, which seems to be coming up a lot:

3) My equation (EQ.2) of incremental movement is a quadratic equation that applies both Velocity and Acceleration:

In the physics engines that I have seen, (and certainly every game engine that I ever heard of) only linear equations of incremental movement that apply only Velocity:

This is why I cannot use the commonly published solutions for collision detection found on StackOverflow, on Wikipedia and all over the Web, such as finding the intersection/closest approach of two line segments. My simulation deals with variable accelerations that are fundamental to the results, so what I need is the intersection/closest approach of two parabolic segments.

0 投票
3 回答
930 浏览

testing - 用于评估计算机视觉算法的模拟和合成视频生成

我正在寻找一种简单的方法来生成合成视频来测试计算机视觉软件。

目前我只知道一种针对这种需求的工具: ObjectVideo Virtual Video (OVVV)。这是一个允许在虚拟世界中模拟相机的半条命 2 模组。

但我正在寻找一个更开放(如开源)并且可能是可移植的解决方案。一种方法是在十几个开源 3D 引擎之一上实现所需的功能。不过,如果有人知道已经实现了类似 OVVV 的库或工具,那就太好了。

此外,如果您没有现成的解决方案:您将如何解决问题?

PS:我在这里问的原因是我想尽量减少我在这个问题上的努力。这并不是说我不知道​​该怎么做。但我的解决方案需要我投入大量时间。所以我在这里寻找具体的提示...... :-)

0 投票
2 回答
2098 浏览

wpf - WPF - 在屏幕外渲染的网格上模拟鼠标事件

我正在将具有多个元素(按钮、文本框等)的 WPF 网格渲染为位图,然后将其用作 Direct3D 场景中 3D 表面的纹理。对于用户交互,我创建了一条从 2D 鼠标光标位置到 3D 场景的 3D 射线,找到与 gui 表面的交点。所以我知道用户在 WPF 网格上单击的位置,但从那里我被卡住了:

如何在 WPF 元素上模拟鼠标事件,而它们实际上并未显示在打开的窗口中而是呈现在屏幕外?

最近,我正在研究 UIAutomation 和 RaiseEvent 但它们用于将事件发送到单个元素,而不是整个可视化树。手动遍历树并在光标位置查找元素将是一种选择,但我还没有找到一种方法来准确地做到这一点。VisualTreeHelper.HitTest 是一个好的开始,但它没有找到 TextBox,而是找到了 TextBoxView,而不是 ListBox,它找到了 Border。

编辑:在 HitTest 的结果回调中返回 HitTestResultBehavior.Continue 让我可以遍历给定点的所有元素。我现在可以将鼠标事件发送到所有这些元素,但 MouseEventArgs 对象的值是真实鼠标的值。所以我必须创建一个显然是不可能的自定义 MouseDevice。

0 投票
2 回答
3079 浏览

2d - 带角球的 2D 球碰撞

我正在尝试编写一个从固定的垂直和水平墙壁反弹的球的 2D 模拟。模拟与墙壁表面的碰撞非常简单——只需否定垂直墙壁的 X 速度或水平墙壁的 Y 速度。问题是球也可能与墙壁的角落发生碰撞,水平墙壁与垂直墙壁相遇。我已经想出了如何检测何时发生与角落的碰撞。我的问题是球应该如何对这种碰撞做出反应——也就是说,它的 X 和 Y 速度将如何变化。

以下是我已经知道或知道如何找到的列表:

  • 检测到碰撞时的帧中球中心的 X 和 Y 坐标
  • 球速度的 X 和 Y 分量
  • 角点的 X 和 Y 坐标
  • 球心与角球的夹角
  • 球在碰撞前行进的角度
  • 检测到碰撞时球与角重叠的量

我猜最好假装角落是一个无限小的圆,所以我可以将球与那个圆之间的碰撞视为球与在碰撞点与圆相切的墙发生碰撞. 在我看来,我需要做的就是旋转坐标系与这个假想的墙对齐,在这个系统下反转球速度的 X 分量,然后将坐标旋转回原来的系统。问题是我不知道如何编程。

顺便说一句,这是一个理想的模拟。我没有考虑摩擦或球的旋转之类的东西。我正在使用 Objective-C,但我真的只是想要一个通用算法或一些建议。

0 投票
8 回答
1926 浏览

c++ - 这种洗牌算法有什么问题吗?

我一直在做一些休闲假期计算。我的小项目是模拟意大利的“tomboli”游戏。一个关键的组成部分是对以下过程的模拟;

游戏由一个人控制,他拿着一袋90颗弹珠,编号从1到90。他从袋子里随机抽出一颗弹珠,每次向玩家喊出弹珠编号。

经过一番思考,我为这个构建块编写了以下代码;

我知道在随机数的游戏模拟中到处都是微妙之处和陷阱,所以虽然我对我的代码很满意,但我的信心还不到 100%。所以我的问题是;

1)我的代码有什么问题吗?

2) [如果 1) 的答案是否定的] 我是否在不知不觉中使用了标准洗牌算法?

3) [如果 2) 的答案是否定的] 我的算法与标准替代方案相比如何?

编辑 感谢所有回答的人。我将接受 Aidan Cully 的回答,因为事实证明我正在重新发现 Fisher-Yates 算法,并揭示了问题的核心。当然,我可以通过预先进行一些研究来节省自己的时间和精力,这并不奇怪。但另一方面,这是一个有趣的爱好项目。其余的模拟都是例行公事,这是最有趣的部分,如果我自己不去,我会剥夺自己的乐趣。此外,我试图模拟一个人从袋子里取出弹珠,但在我意识到这种情况与洗牌完全相似的时候已经很晚了。

另一个有趣的地方是有一个小缺陷,由 Ken 指出,经常重复的模式 rand()%N 并不是从 0..N-1 范围内选择随机数的好方法。

最后,我的Fisher-Yates 版本缺乏优雅的技巧,它允许就地改组的良好特性。结果,我的算法会以同样随机但反向的洗牌告终。