问题标签 [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.
python - 简单的资源可用性计划
我在 Python 中使用 SimPy 来创建离散事件模拟,该模拟需要根据用户在 csv 文件中输入的时间表来提供资源。目的是表示在一天中的不同时间可用的相同资源(例如员工)的不同数量。据我所知,这不是基本 SimPy 中可用的东西——比如资源优先级。
我已经设法让这个工作,并包含下面的代码来展示如何。但是我想问社区是否有更好的方法可以在 SimPy 中实现此功能?
下面的代码通过在每天开始时在不应该可用的时间请求资源来工作 - 具有更高的优先级以确保他们获得资源。然后在适当的时间释放资源以供其他事件/进程使用。正如我所说的那样,它可以工作,但似乎很浪费,因为有很多虚拟进程正在努力确保资源的正确真实可用性。欢迎任何会导致改进的意见。
所以csv看起来像:
其中 Number 表示在定义时间可用的员工数量。例如:6-8 点将有 5 名员工,8-10 点将有 20 名员工,10-17 日将有 50 名员工,依此类推,直到一天结束。
编码:
python-2.7 - 消除简单的多事件结果
作为网络建模练习的一部分,我正在尝试在 simpy 中编写一个简单的多路复用器。我有两个商店,s1 和 s2,我希望通过标准 Store.get() 方法等待 s1 和 s2 中的一个或两个返回一个“数据包”。这确实有效,但我无法确定这两家商店中的哪一家实际返回了数据包。这样做的正确方法是什么 - 通过插入适当的代码而不是下面代码中的注释?
python - 如何中断或取消 SimPy 超时事件?
我想创建一个带有回调的计时器,可以使用 SimPy 中断或重置。如果中断,我不希望执行回调,如果重置,我希望计时器以相同的延迟从env.now
. 最初只需使用env.timeout
. 但是,文档指出:
为了真正让时间在模拟中流逝,有超时事件。超时有两个参数:延迟和可选值:Timeout(delay, value=None)。它在创建过程中自行触发,并在现在 + 延迟时自行安排。因此,succeed() 和 fail() 方法无法再次调用,您必须在创建超时时将事件值传递给它。
因为模拟开始触发,我不能添加回调,因为你不能调用fail
,我不能中断超时。
我考虑过只实现一个等待一个时间步长并检查标志是否已被中断或到达env.now
它正在等待的标志,但这似乎非常低效,如果我有很多计时器(我会这样做),我'我担心生成器的数量会压倒模拟。(超时功能似乎通过在模拟的未来自行安排来工作,这就是为什么你可以让大量的人跑来跑去)。
所以规范是 - 创建一个在指定时间后触发回调的事件,但可以在该时间发生之前重置或中断。有什么想法吗?
python - 模拟环形网络
我正在尝试模拟令牌环,但到目前为止遇到了一些麻烦。我修改了一个简单的例子来得到这个:
我的问题是:我怎样才能得到它,以便在模拟运行时始终将数据包传入主机。
我已经尝试过while True
in 设置,但我认为这不是放置它的正确位置。
另外,主机函数如何保存数据包缓冲区?我尝试将host()
函数转换为Host
类,但现在有编译问题。
谢谢你。
python - Python-simpy 按位或
现在我学习了simpy
python的库。你能解释一下为什么bitwise-or
在这个例子中使用。为什么我们不能使用简单的or
语句。
simpy - Simpy 同步通信通道
我是一个开始使用 Python 和 Simpy 的新手。我想在两个进程之间建立一个同步的通信通道。例如,我想拥有:
结果应该是:
我应该为频道的定义制作/使用什么?
如果我使用 a Store
,我会得到(与上面略有不同):
输出将是:
但我应该得到如上所述的。作者应该等到读者准备好阅读。
simpy - 如何在 SimPy 中拆分相关事件
我想实现一个离散事件维护调度模拟,其中一些维护活动必须在另一个维护活动发生时发生。
例如,如果墙壁每 5 年重新粉刷一次,并且每 14 年更换一次干衬,那么每当更换干衬并重新启动时钟时,都必须重新粉刷墙壁。
我不确定是否应该将每个活动实现为引用依赖流程的流程,或者“墙壁维护”是否应该是内部处理逻辑的流程,或者其他方式。
我拥有的代码将每个活动作为一个进程,并将依赖进程存储为一个属性,但我觉得我可能错过了正确的方法,因为我看到事件在同一年发生了两次。
python - python:在simpy中暂停模拟
当我在 Simpy 中构建队列模型时,我希望有人能指出正确的方向。Simpy 网站上的文档和示例非常棒,我想看看我是否可以在他们提供的示例的基础上进行构建。
本质上,我正在模拟一个职员必须审查文书工作的过程。文书工作在随机时间间隔(很像 MM1 队列)以先进先出的服务规则到达和退出他的队列(即被服务)。
我发现的棘手部分是,我想对流程进行建模,以便职员在返回工作之前必须睡一段时间。例如,如果模拟运行“4 周”,那么在此期间店员应该每天睡 12 小时。我似乎无法让最后一个警告发挥作用。请看我下面的代码,谢谢!
python - Simpy - 访问多个资源
我开始学习 SimPy DES 框架。我想实现一个模拟,其中请求在不同时间到达服务器。有不同类型的请求,每个请求都会以特定的内存/cpu 负载加载服务器。因此,例如,可能存在通常使用 10% 的 CPU 和 100MB 内存的请求,而其他请求可能需要 15% 的 CPU 和 150MB 的 RAM(这些只是示例数字)。服务器有自己的特点和一定的内存量。如果请求到达服务器并且它没有准备好所需数量的资源,则该请求应该等待。我知道如何处理单个资源的情况——例如,我可以使用容量为 100 且初始数量为 100 的容器类来实现 CPU 负载,对于内存类似。然而,
提前致谢!
python - simpy 3.0 中的 2.2 示例
我正在尝试研究 simpy 2.2 的一些示例(请参阅:https ://pythonhosted.org/SimPy/Tutorials/TheBank2OO.html )并使用 simpy 3.0 词典重写它们(请参阅:http://simpy.readthedocs。 io/en/latest/about/history.html)。有没有人遇到过为 3.0 重写的以下示例(银行门打开)?我不完全确定如何使用 simpy 3.0 将“客户”类中的“self.sim.door_open”编写为事件。
到目前为止我有什么,但我收到错误“环境对象没有属性'door_open'”
忍者编辑:我设法让模拟运行,但是我无法让门初始化为“关闭”然后在某个时候打开。