问题标签 [simpy]

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 投票
0 回答
582 浏览

python - python expovariate()

我面临 python 的 random.expovariate() 的问题。

如果我运行以下代码: random.seed(44) for i in range(5): print random.expovariate(250.0/600.0)

我得到以下输出, 1.26037021316 1.87397995498 4.75384071801 0.466542950787 0.612235449166

但是,如果我在我的实际程序中使用相同的代码,如下所示,

我得到了一个不同的 expo_c- 它本质上是相同行的输出。

我使用相同的种子,但 expovariate() 生成的序列不同。如何确保在我的实际程序中生成相同的序列?

0 投票
1 回答
717 浏览

python - 如何根据时间表模拟客户的到达

我想模拟特定时间段的客户到达(不是根据统计分布生成的)。到达时间在我加载到 pandas 数据框的 csv 文件中定义df

这是我当前的代码,但我不知道如何强制实体(客户端)根据定义的时间表到达df,例如 at 09:00:20,然后 at09:01:00等。我假设我还应该在Environment,但我该怎么做呢?(我不需要实时模拟):

0 投票
1 回答
460 浏览

python - 使用 SimPy 3 时如何生成仿真输出报告

如何使用 SimPy 3 生成模拟报告?我在这里读到,对于第 2 版,可以执行以下操作:

但是我找不到 SimPy 3 的报告功能。报告应该包括,例如,服务器的平均吞吐量、资源利用率和其他统计信息。

0 投票
0 回答
621 浏览

python - 兼容 simpy 的开源动画库

是否可以将simpy离散事件模拟库与任何开源动画工具结合起来,以简单地可视化队列系统?我知道可以使用matplotlib,但它更适用于创建图表,而不是用于构建动画,例如实体的到达和离开,以及它们的服务(显示资源繁忙或空闲)。

例如,我发现panda3d哪个是游戏和模拟引擎,但如果使用这个工具,我可能需要对实体的所有运动轨迹进行编程,这看起来过于复杂了我真正需要的东西。

0 投票
3 回答
2437 浏览

python - 今天使用哪些书来学习离散事件仿真?

我刚刚参加了一个项目,该项目让我开始研究新的网络协议,我的第一个任务是学习离散事件模拟

推荐了2本书:

模拟计算机系统:Myron H. MacDougall的 技术和工具

仿真模型设计和执行:构建数字世界Paul Fishwick

这两本书都使用了我不会特别使用的工具,但有人告诉我这是一本学习离散事件模拟基础知识的好书。

但是,碰巧的是,MacDougall 的书在除 amazon dot com 之外的任何其他商店都没有,而且需要 2 个月才能将它送到我的地址。而菲什维克的书要花一大笔钱,我现在不愿意花。

现在,我来问一下,今天用哪些书来学习与那些类似的离散事件模拟?

PS:我将使用基于 Python 的 SimPy 仿真工具。

0 投票
1 回答
85 浏览

simpy - 在使用 Simpy 实现的模拟期间,计算机如何存储、排序和处理事件?

我在 Simpy 中遇到了同步问题。我的意思是,计算机没有按照我想要的顺序处理事件。我一直在寻找比 Simpy 文档中关于计算机如何对事件进行排队、排序和处理的更多信息。我到处都发现它是根据它们必须被触发的时间进行排序的。在阅读其余内容之前,有人有任何链接或文件可以建议我吗?

更具体地说,我正在尝试建模和模拟现实世界的系统(PoolSystem 类的一个实例),它是一个子系统池,可以进一步分解为子子系统或能够失败(最后一类系统称为原子系统)。总而言之,PoolSystem 由可以是 PoolSystem 或 AtomicSystem 的子系统组成。

例如,一辆汽车可以是这个 PoolSystem 类的一个实例,其中一个引擎作为子系统。但是发动机可以分解成其他几个子系统,例如活塞或火花塞,这些子系统实际上可能会发生故障。在这种情况下,引擎将被定义为 PoolSystem 实例,活塞和火花塞被定义为 AtomicSystem 实例。

AtomicSystem 和 PoolSystem 类基于相同的标准模型。他们都有:

  • 如果给定子系统的故障导致整个系统的故障(这意味着必须中断所有其他子系统),则为“关键”布尔属性,该属性为“真”
  • 一个“update_order”事件,它充当系统与其子系统(如果有)通信的信号
  • 一个“dysfunction_signal”事件,它是子系统告诉他们的系统他们已经失败的信号
  • 当给定系统无法正常工作或被更高级别系统中断时触发的“中断”事件
  • 一个“update_end”事件,它充当子系统的信号,告诉其更高级别的系统它已完成更新
  • 一个“生命周期”属性,它是模拟给定系统的操作服务的过程

我希望以下架构可以帮助您理解刚刚阅读的内容: 定义为池系统的汽车故障

在这个模式中,汽车被定义为一个 PoolSystem 实例,它的子系统是引擎和轮胎。轮胎可能是汽车故障的重要原因,因此它被定义为 AtomicSystem 实例。引擎被定义为另一个 PoolSystem,其子系统是活塞和火花塞,可能会发生故障,因此被定义为 AtomicSystem 实例。

类 AtomicSystem 可以在下面找到:

可以在下面找到类 PoolSystem:

我定义了另外两个类,Eu(继承自 AtomicSystem)和 ModSat(继承自 PoolSystem)。基本上,我正在用几个 Eu 对象(只有两个系统级别)构建一个 modsat 对象。我已经发布了下面的代码:

最后,我想测试 ModSat 对象,看看是否可以轻松替换 modsat 对象的故障子系统之一(Eu 类型),而不会影响 modsat 的良好行为。我创建了一个模拟函数,使我能够与 modsat 对象进行交互。我使用以下定义的 2 个 modsat 对象运行测试:

第一个测试非常简单,使用以下模拟功能:

输出是我想要的,因为所有事件似乎都已被计算机以正确的顺序触发和处理:

现在,我想使用以下模拟函数测试我的代码:

上面的模拟函数只是模拟了用新的替换第一个失败的 Eu。输出是:

如上所述,在“t = 5 : EU1:ModSat1 中断服务”行之后应该有一行“t = 5 : ModSat1 部分失败”。但相反,计算机直接跳转到模拟函数的“yield env.timeout(5)”之后的第一行。

我不明白这里发生了什么,我认为这是因为我对 Simpy 如何定义和排序事件队列缺乏了解。我在网上找不到任何关于这里发生了什么的提示。我在 stackoverflow 和其他论坛上没有看到任何此类问题。我很乐意为您提供任何帮助。

我的代码解释起来很长,所以我希望我发布的代码中的注释足够:\

非常感谢!

0 投票
1 回答
328 浏览

python - Simpy:在运行时添加进程

当 SimPy 环境已经运行时,有没有办法将 SimPy 进程添加到 SimPy 环境中?上下文如下:

我已经使用 SimPy 成功地为交通系统实现了一个排队网络,其中汽车通过链接传播。每辆车的出发地和目的地在“编译”时是已知的,它们的出发时间也是如此。因此,模拟描述了它们如何在网络中移动,其中传播速度取决于主要密度。如果链路上有很多汽车,它们的速度就会降低,就像现实一样。如果链接上的汽车太多,则它们会被阻止进入,直到另一辆车离开,等等。

我现在的问题是,我是否也可以在运行时提供流量需求?想象一下,当我的 SimPy 模拟已经在运行时,有一个实时生成汽车的总体过程。我怎么能这样做?有没有可用的教程或示例?

非常感谢任何帮助或评论。

0 投票
2 回答
878 浏览

python - Simpy:使用两种类型的过程进行模拟

我想模拟一家有两种客户的商店:普通客户和 VIP。

我不想为这些客户提供先进先出的服务。相反 - 无论队列是什么样子 - 我都想为机会 p 的 VIP 和机会1-p的普通客户提供服务。

我知道 Simpy 的基础知识,但我不知道如何实现收银员挑选下一个将要服务的客户的不同方式。

0 投票
2 回答
597 浏览

python - python 2.7 SimPy 导入错误

我有一个带有 python 2.7 和 pip 9.0.1 的 virtualenv 我已经使用 pip install SimPy 安装了 SimPy

但是当我尝试导入导入 SimPy

0 投票
0 回答
244 浏览

python-3.x - python simpy 使用大量对象/进程的内存使用

我正在使用 simpy 创建具有大量对象(数百万)的 DES。我遇到了内存问题,并试图弄清楚如何解决这个问题。可以计算出哪些对象将不再与其他进程进行交互,因此理论上我可以从模拟中删除这些对象以释放内存。我创建了以下测试。

我预计到时间 4 内存使用量会下降,因为许多对象已被删除并且进程已完成(大约 70%)。但是内存使用似乎保持不变(见下文)。为什么会这样?什么在使用这个内存?已完成的流程是否保留在模拟中?