问题标签 [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 投票
1 回答
231 浏览

modeling - 使用 SimPy 模拟 Chord 分布式系统

我正在对几个分布式系统(例如 Chord)进行一些研究,我希望能够仅用我的桌面编写算法并运行分布式系统的模拟。

在模拟中,我需要能够让每个节点独立执行并相互通信,同时手动诱导延迟、丢包、随机崩溃等元素。然后收集数据来估计系统的性能。

经过一番搜索,我发现 SimPy 非常适合我的目标。

SimPy会是适合这项任务的库吗?如果是,对于实施这样的系统有哪些建议/注意事项?

0 投票
1 回答
1023 浏览

simulation - simpy中的中断条件事件

简单的新手在这里。我刚开始用 simpy 进行 Speaker-Moderator 模拟。这是我的代码

当我以 speak_time > 30 或 speak_time < 30 运行它时,它没有问题,但如果我将函数扬声器中的 speak_time 更改为 30,则会出现如下错误:

发生了什么?

0 投票
1 回答
389 浏览

python - SimPy 使用逻辑在两个或多个资源之一之间进行选择

如何为流程提供从两个或多个不同资源中进行选择的选项?

我需要这样做,因为我将维护活动模拟为流程,资源代表可用于执行维护的共享设施。一些维护活动只能使用一种类型的设施,但其他维护活动更灵活,可以选择使用多种类型的设施。

因此,在 SimPy 术语中,一个进程只能选择一种唯一类型的资源,而其他进程可以从多种唯一类型的资源中进行选择。

对我要达到的目标的粗略解释:

学习如何使用 FilterStore 可以回答我的问题吗?

0 投票
1 回答
388 浏览

python-3.x - 运行 Simpy 模拟直到给定值

我是 SymPy (3.0.8) 的新手,想运行一个演示模拟“会议参加者”,直到给定值 (250),即运行到第 7 次谈话(3 次谈话,1 次休息,3 次谈话,1 次休息,1讲话)。

3*30 + 15 + 3*30 + 15 + 1*30 = 240

但模拟在 3 次谈话、1 次休息、3 次谈话和 1 次休息后结束 (210)。

我想知道为什么在“talk 7”之前模拟不会运行,以及如何解决这个问题。

这个模拟的输出是:

但我希望它是:

0 投票
1 回答
172 浏览

python - 从 SimPy2 转换为 SimPy3

我正在尝试模拟去银行的客户。我想打印队列的平均长度,以及请求开始时间的每个值对和对[time of request or release, length of queue]

我知道 simpy3 中没有监视器类,所以我尝试使用此处的示例下面我留下了我正在转换的文件中的相关代码并尝试转换它。simpy2 和 python2

simpy3 和 python3

如何让我的 SimPy3 模拟器的输出类似于 SimPy2 模拟器,而不仅仅是打印 None?

0 投票
0 回答
874 浏览

python - 从 FilterStore [Python][Simpy] 获取多个项目

我正在使用 Python 和Simpy进行模拟。在模拟中,作业由资源处理。一些工作需要单一资源,而另一些工作需要多个资源。我想一次检索(获取)多个资源,因此优先考虑需要较少资源的作业。

资源由FilterStore中的项目表示。

下面的示例解决方案利用 for 循环并保留资源。我正在寻找一种不保留资源,而是将资源分配给所有资源都可用的作业的解决方案。下面的例子被简化了,但我正在寻找一种解决方案,它允许我同时产生大量资源,类似于AllOf 事件

我遇到了创建 FilterStore 对象的子类的建议,但我不知道该怎么做。我还遇到了一个使用 store 对象的子类的示例。有没有办法在不创建子类的情况下实现预期的行为?如果没有,如何创建 FilterStore 的子类?

代码:

输出:

在示例中,这意味着作业 3 的优先级应高于作业 2。在时间 4,作业 3 所需的所有资源都可用。但是,作业 2 在时间 2 保留了资源 (2) 之一,并在作业 3 之前启动。

工作顺序:

更新:

下面的代码采用了稍微不同的方法。它避免了FilterStore。相反,它利用字典中的 id 包含的多个 Store。id 可以在两个商店中找到正确的资源。当时为了从两个不同的商店中提取两个资源,我使用了以下语句:'yield env.all_of'。不过,顺序并不如预期。资源似乎被保留了。

结果:

工作顺序:

更新 2:

下面的代码再次采用了稍微不同的方法。现在,使用 PriorityResource 代替存储。该资源再次包装在字典对象中。通过优先考虑需要较少资源的作业,可以获得所需的顺序(使用上面的作业列表)。但是,现在总是优先考虑较短的工作,这不是我的本意。所有资源都可用的作业应优先于某些资源可用的作业。我已经更改了下面的工作列表以反映问题。如果可以根据“未来”的时间对工作进行优先级排序,那么当工作的所有资源都可用时,这个问题就有可能得到解决。是否可以确定何时有资源可用?

代码:

输出:

工作顺序:

0 投票
2 回答
530 浏览

python - Simpy: Possible to do priority requests with filterstore?

I have a get request for one of two objects inside a filterstore that looks like this:

I want to make this particular request a priority so that it queue jumps all other requests. Is this possible?

0 投票
1 回答
2141 浏览

python - Simpy - 何时使用 yield 以及何时调用函数

我正在尝试使用 Simpy 来模拟一些在城市电网周围移动汽车的行为。但是,我在概念上围绕何时使用类似的东西时遇到了一些麻烦

yield self.env.timeout(delay)yield env.process(self.someMethod()) 与仅调用方法相比self.someMethod()

在非常理论的层面上,我了解yield语句和生成器如何应用于可迭代对象,但不太确定它与Simpy.

Simpy教程还是挺密集的 。

例如:

0 投票
1 回答
295 浏览

python - Simpy Store - 相关事件

我试图模拟从商店获取东西依赖于其他东西的情况。

假设我有一个生产者将物品放入容量有限的存储 S1 中。当且仅当 (1) S1 中有物品并且 S2 中有空间时,这些物品会转移到另一个商店S2

P -> S1 -> S2

问题是我需要从 S1 中删除一个项目以在 S2 中有空间为条件。

在代码中:

产生

我对此建模的方式使它看起来像在 S1 和 S2 之间有 1 个额外的存储插槽,这是我不想要的。由于我有 2 个存储单元,每个容量为 1,生产者应该只能插入 2 个单元。

0 投票
4 回答
30714 浏览

python - “builtin_function_or_method”对象没有属性“randrange”

我有一个奇怪的问题,

我创建了以下代码以随机生成 1 和 x 之间的数字,增量为 1 并存储它们

这段代码本身工作正常,但是当我将它插入我的主代码库时,我得到了错误

第 90 行的代码是

这只是调用

它将随机值附加到模拟时间中,我认为它与这行代码没有任何关系,因为它根本不使用随机库,实际上插入的代码是迄今为止唯一使用该库的代码

有人知道问题是什么吗?它快把我逼疯了!

谢谢 !

尝试将我的导入更改为随机导入,现在得到: