我一直在研究一个问题,在这个问题上,我必须在一个Simpy 4.0.1程序中模拟一个治疗中心的病人,这个程序有多个类别的病人(比如"A“、"B”和"C")。患者“到达”的基础上产生的numpy.random.exponential()和“占用一张床”(Simpy资源)的中心基于numpy.random.lognormal()。每个病人类型都有一组不同的值来控制这种抽样。这是一个简单的FIFO过程,不涉及优先级,患者只是到达和停留在不同的速率。
我尝试的第一种方法是为每一类患者创建3个流程,并让Simpy处理它们的生成:
import simpy
from num
我一直在寻找让PyQt和SimPy互相“对话”的机会。例如,在下面的代码中,我有一个带有单个标签的PyQt小部件,它显示SimPy环境时间。我希望这个标签随着模拟的进行而更新(我曾尝试用simpy_generator函数显示--小部件中的标签被更新,SimPy在一段时间内超时,并且此模式重复)。 import sys
import simpy
from PyQt5 import QtWidgets
class Window(QtWidgets.QWidget):
""" A generic Qt window that can interact with S
流程3同时需要资源A和B,并且只能在流程1(按资源A)和进程2(按资源B)完成之后才能启动。下面的代码似乎按照需要执行,但是if / else语句看起来非常不优雅。有什么“更好”的方法来完成同样的行为?
def orchestration(self):
# Request resources A and B
req_resourceA = self.resourceA.request()
req_resourceB = self.resourceB.request()
# Wait until first resource is available (will
所以基本上,为了请求一个资源,在它等待的时候,如果在X秒内没有资源分配给请求,我们基本上什么都不做。“客户未获得帮助”等。
从他们的示例代码中:
print('%s arrives at the carwash at %.2f.' % (name, env.now))
with cw.machine.request() as request:
yield request
所以..。当它请求cw.machine.request()时,仅在移除请求之前的特定持续时间内执行该操作,例如不执行任何操作。
print('%s arrives at the carwash
我目前正在使用以下命令创建simpy.resource:
str1_counter = simpy.Resource(env, capacity=1)
但是,如果我想以一种基于用户输入的动态方式创建它,即假设用户说容量(变量上限)应该是4,那么在这种情况下,我尝试了以下方法:
cap = input("Enter the capacity of the store")
str1_counter = 'simpy.Resource(env, capacity=' + cap + ')'
但是您可以看到,结果不是创建simpy.resource的实例
我正在对一个制造系统建模,在这个系统中,机器可以随机发生故障,并请求技术人员以指定的优先级进行维修。但是,当机器等待技术人员可用时,其优先级可能会发生变化。这是我可以在SimPy中建模的东西吗?我的代码的相关部分如下: with technician.request(priority=self.get_priority()) as req:
yield req
yield self.env.timeout(self.time_to_repair)
因此,我目前正在尝试创建一个应用程序,它允许我通过与java应用程序的WebSocket连接启动和停止不同的进程。我有一个类来管理每个进程,比如
public class ServerProgram {
Process p;
public void Start() {
this.p = new Process(...);
}
public void Stop() {
this.p.destroy();
}
}
如何同时管理多个实例,以便运行多个进程?
如何监视进程,以便启动服务器的线程能够知道进程何时崩溃?
考虑一个,如Simpy示例列表中所述。现在假设每一辆车被维修,相应的洗车单元必须自己维修,然后才能清洗下一辆车。同时,维修车可以离开。
我怎样才能最好地模拟以上这些呢?我目前的解决方案是有一个高度优先的“鬼车”,以阻止洗车在再生时间。我不觉得这个解决方案很优雅,我想还有更好的方法。
在下面的例子中,代表了上面提到的教程的一个糟糕的副本,维修的汽车不能在再生期间离开泵。我怎样才能修正它来模仿预期的行为呢?我想解决方案很简单,我只是看不出来。
import random
import simpy
RANDOM_SEED = 42
NUM_MACHINES = 2 # Number of mac
我正在学习SimPy。目前,我需要周期性地调用一个方法,直到模拟结束。
我是这样写的
import SimPy.Simulation as Simpy
class mod(Simpy.Process):
def do(self):
print(Simpy.now(), "Do!")
yield Simpy.hold, self, 5.0
class trigger(Simpy.Process):
def ACTIONS(self):
while True:
for i in self.t
我对Simpy还不熟悉,并试图实现一个简单的模拟,其中流程必须等待条件为False,而当条件变为True时,则必须继续处理该过程的其余部分。考虑一下简单的代码:
import simpy
import random
condition_flag = 0
def car(env):
while True:
global condition_flag
#wait for the condition to become true
while(condition_flag != 1):
pass
我对python非常陌生,正在尝试使用我在网上找到的一个简单脚本来排队时间。当我使用“监视器”时,我得到了一个名称错误--我以为它是SimPy的一部分。是否有其他我应该导入监视器的地方?
提前感谢您的帮助!
如下所示:
#!/usr/bin/env python
from __future__ import generators
import simpy
from multiprocessing import Queue, Process
from random import Random,expovariate,uniform
# MMC.py simulation of an M/M/c
在我的程序中,代理需要使用一些特定的资源。我想同时调用为代理分配的所有资源,并使用第一个可用的资源。
想想3台服务器和4台代理。
agent1可以使用server1,
agent2可以使用server1和server2,
agent3可以使用server2和server3,
agent4可以使用server3
我正在创建如下的请求:
{server: server.request() for server in agent_2_server_list}
output:
{<simpy.resources.resource.Resource at 0x7fd091b215e0>: