标签: simulation

我从哪里开始编写/使用3D物理模拟引擎?

我需要用Java编写一个非常简单的3D物理模拟器,立方体和球体相互撞击,而不是更多.我从来没有这样做过,我应该从哪里开始?有关如何完成的任何文件?我可以重用的任何图书馆?

java simulation physics-engine

2
推荐指数
1
解决办法
4247
查看次数

现实两足骨架的物理模拟

我希望利用子弹物理或类似的物理引擎来创建一个逼真的骨架模拟人体样的两条腿.也就是说,在两条"腿"的顶部创建一个由圆形质量制成的"身体"模拟,其中每条腿由3个实心连接,通过3个关节连接,每个关节具有一定的自由度和有限的移动范围.每个方向,类似于人体臀部,膝盖和脚踝.

我的目标是一个真实的模型,因此只有当所有关节都正确平衡时它才会"站立",否则它将会下降.

任何有关现有教程或资源的指示,建议或指示都表示赞赏!这看起来像是从头开始做的大量工作......

simulation physics game-physics bulletphysics physics-engine

2
推荐指数
1
解决办法
5156
查看次数

模拟LAN计算机

如何测试C#多人游戏(4人)局域网游戏.比连接4台计算机,我可以模拟4台不同的计算机(使用不同的IP运行应用程序.即应用程序的4个实例).我认为可以使用4台虚拟机但是无法运行四个虚拟机.(h/w资源:(

c# simulation lan

2
推荐指数
1
解决办法
466
查看次数

快速多体重力算法?

我正在编写一个程序来模拟一个n体重力系统,它的精度是任意的,取决于我在每一步之间采取的"时间"步长.现在,它可以非常快速地运行多达500个物体,但之后它变得非常慢,因为它必须通过一个算法来确定每次迭代在每对物体之间施加的力.这是复杂的n(n + 1)/ 2 = O(n ^ 2),因此它很快变得非常糟糕也就不足为奇了.我想最昂贵的操作是我通过取平方根确定每对之间的距离.所以,在伪代码中,这就是我的算法当前运行的方式:

for (i = 1 to number of bodies - 1) {
  for (j = i to number of bodies) {
   (determining the force between the two objects i and j,
    whose most costly operation is a square root)
  }
}
Run Code Online (Sandbox Code Playgroud)

那么,有什么方法可以优化这个吗?任何花哨的算法可以重复使用过去迭代中使用的距离进行快速修改?有什么有损方法可以减少这个问题吗?也许忽略了x或y坐标(它是2维)超过一定数量的物体之间的关系,这是由它们的质量乘积决定的?对不起,如果这听起来像是在漫无边际,但是我能做些什么才能让它更快?我宁愿保持任意精确,但如果有一些解决方案能够以一点精度降低这个问题的复杂性,我会有兴趣听到它.

谢谢.

java simulation optimization gravity

2
推荐指数
1
解决办法
3622
查看次数

需要帮助使用SimPy建模火车系统

我需要帮助在SimPy中为火车系统(如地铁系统)建模,问题是我的"模拟"老师要我使用Python + SimPy并且我不知道如何使用它,经过一周的阅读后SimPy我设法理解银行的例子,这很容易,但现在我仍然不知道如何模拟老师给我的问题......

问题是大而广泛的,但我只需要一点帮助,而不是整个项目完成,所以,如果有人可以提供帮助,我将非常感激.

减少的问题将帮助我开始是这样的:

想象你有3个站点(A,B,C)相隔一段距离(比方说100米)我有2个列车,一个在A上,一个在C上(train1从A到C,tran2从C到A)每列火车都有最大速度(假设两者都是50米/秒)和加速度(比如5米/秒^ 5和-5米/秒^ 2),他们所要做的就是停在每个火车站上秒(比方说24秒)并继续到下一站,当他们到达终点时,他们等待并额外20秒(改变铁轨),然后重新开始.

车站有乘客限制(他们不需要模拟)唯一的事情是每个车站有随机数量的乘客,当火车到达时有些人起床而其他人下车...

所以,基本上我需要一个小型火车和这三个车站的车站...如果有人可以帮我请...

真正的问题有22个站点,2个额外的车站改变车道,随机时间等待,42个列车具有不同的最大速度和容量,不同的乘客数量取决于车站和时间等...所有这些东西我可以管理以后,但火车站系统的建模逻辑我似乎无法弄清楚...感谢您的帮助!

python simulation model traffic-simulation simpy

2
推荐指数
1
解决办法
3089
查看次数

使用C++或Python生成随机数

我听说计算结果对随机数发生器的选择非常敏感.

1我想知道是否与编程自己的Mersenne-Twister或其他伪随机例程相关以获得一个好的数字生成器.另外,我不明白为什么我不应该将本机或库生成器作为numpy中的random.uniform(),在C++中使用rand().据我所知,我可以自己构建生成器,用于除均匀以外的分布(反向重分配函数方法,极坐标方法).但使用一个内置发电机进行均匀采样是不是很邪恶?

2默认的'时间'种子有什么问题?应该重新播种代码样本中的种子和频率(以及为什么)?

3也许你对这些主题有一些很好的联系!

--edit更准确地说,我需要多分量优化例程的随机数,以及统一空间样本来初始化一些其他优化例程参数.我还需要蒙特卡罗方法的随机数(敏感性分析).我希望精确有助于找出问题的范围.

c++ python random simulation probability

2
推荐指数
1
解决办法
2493
查看次数

如何反向循环?

我正在制作一个水模拟程序,我需要它来循环通过y,x.但我需要它先检查最底层,然后再检查.这是我的lvl:

lvl = [[0, 0, 1, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 1, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我需要它来检查lvl [4]然后lvl [3],lvl [2]等等.请帮忙!

注意:我正在使用嵌套for循环,所以我可以检查y,x.

python algorithm simulation loops for-loop

2
推荐指数
1
解决办法
6007
查看次数

离散事件模拟中的时钟

我正在为我的离散事件模拟开发一个时钟类.我已经在PriorityQueue中保存了事件,因此根据哪个事件具有最近的事件时间进行排序.然而,有一件事我无法理解.在我读过的关于离散事件模拟的论文中,明确指出时钟从事件跳转到事件,因此没有必要有一个"滴答"的时钟.

但是如何工作,我有一个EventScheduler类,它将事件保存在PriorityQueue中.所以在确定下一个事件的时间之后,我可以在Clock中调用一个"setTime"方法,EventScheduler会在下一个事件的给定时间内调用它吗?但那么它永远不会真正作为一个时钟运行它只会继续跳到下一个事件?

我认为时钟运行(滴答),然后它知道EventScheduler何时发生事件,当时钟到达那个时间时,它处理事件,更新系统状态并可能生成输出事件.

很抱歉有点不清楚,但我只是对时钟如何工作的任何提示感兴趣,它是否记录,然后只在事件发生时"做"事情或者只是从事件跳到事件?

你也建议我可以使用java中的任何内置功能吗?例如Timer类

java simulation scheduling timer clock

2
推荐指数
1
解决办法
1499
查看次数

模拟到达时间的问题

我试图模拟事件的发生(车辆进入隧道),事实证明这是一个泊松过程.

从上午9点到下午5点,我把这一天打破了1分钟.

对于每1分钟的间隔,我已经计算/获得了平均值:

  1. 在此期间进入隧道的车辆数量.
  2. 每辆车进入隧道之间的时间(预计到达时间)

例如,对于分钟10:37-38,平均值是5辆车,平均到达时间为12秒

为了抽样10:37-38分钟,我做了以下事情:

  1. 对平均值为5的泊松分布进行采样,以确定将到达的项目数,分配给X.
  2. 采样平均值为1/12 X倍的指数分布,得出到达间隔时间y_0,y_1 ... _ y_x
  3. 将到达时间相加并分配给K.
  4. 如果K大于60秒,请转到步骤2
  5. 积累各种柜台
  6. 最后打印统计.

代码如下:

#include <iostream>
#include <cstdio>
#include <random>
#include <algorithm>
#include <iterator>

int main()
{

   double mean_num_itms = 5.0;
   double mean_inter_time = 12; //seconds
   double max_sec_in_period = 60; //seconds

   unsigned int rounds = 10000;

   std::random_device r;
   std::exponential_distribution<double> exponential(1.0 / mean_inter_time);
   std::poisson_distribution<double> poisson(mean_num_itms);

   double total_itms = 0;
   double total_inter_time = 0;

   for (std::size_t i = 0; i < rounds; ++i)
   {
      //Determine how …
Run Code Online (Sandbox Code Playgroud)

c++ simulation math sample distribution

2
推荐指数
1
解决办法
1066
查看次数

VHDL包'IEEE.std_logic_arith'是否附带ghdl?

我试图用GHDL模拟Xilinx GTXE2收发器.在GTXE2_CHANNEL.vhd中,我收到一个错误,即在'ieee'库中找不到'std_logic_arith'.

首先,这是我的机器设置:

问题1:这个包是否包含在GHDL中?

我试图将VHDL标准更改为VHDL-2008 --std=08,但ghdl无法识别此选项,因此我目前正在使用VHDL-2002进行编译.但没有改变.

我还试图从Xilinx的vhdl源文件夹中手动包含IEEE源代码C:\Xilinx\14.7\ISE_DS \ISE\vhdl\src\ieee.但是当我编译std_logic_arith时,它抱怨缺少std_logic_1164,这通常是找到的.除此之外,std_logic_1164中的FOREIGN属性存在问题.

所以这是我要编译的文件列表/编译顺序(Xilinx'*.prj文件的修改版本):

# board and device configuration
#vhdl poc       "tb/common/my_config_KC705.vhdl"

# IEEE packages
#xilinx ieee    "ieee/std_logic_1164.vhd"
#xilinx ieee    "ieee/std_logic_arith.vhd"

# Xilinx Packages and Primitives
xilinx unisim   "unisims/unisim_VCOMP.vhd"
xilinx unisim   "unisims/unisim_VPKG.vhd"
xilinx work     "unisims/primitive/FD.vhd"
xilinx work     "unisims/primitive/BUFG.vhd"
xilinx work     "unisims/primitive/BUFR.vhd"
xilinx work     "unisims/secureip/GTXE2_CHANNEL.vhd"
Run Code Online (Sandbox Code Playgroud)

此列表将转换为GHDL命令,这些命令在临时目录中执行:

C:\Program Files …
Run Code Online (Sandbox Code Playgroud)

simulation vhdl xilinx ghdl

2
推荐指数
1
解决办法
3951
查看次数