问题标签 [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 - SimPy 银行教程,用户排队等候特定柜台,并能够提前下线
我正在看这个 SimPy 教程https://pythonhosted.org/SimPy/Tutorials/TheBank.html#several-service-counters,我想知道如何改变这让客户使用同一行但使用特定的计数器? 作为进一步的修改,如果他们不必等待排在队伍的最前面就可以到达特定的柜台怎么办?
背景:我试图模拟一排人排队去剧院,有固定的座位。每个人都必须排队才能进入剧院,但不是每个人都必须等待第 5 排的人入座,如果他们在 6 排或更多排。每个人都有一个固定的座位(很像示例中的“柜台”)。我真的很喜欢我当地的剧院,但我希望能够模拟一种更简单的方式让人们排队和找到座位。
python - Python Simulation Patient-Doctor Link(Simpy,急诊科)
我正在开展一个项目,以使用 Simpy 2.6 描述急诊科的患者流程。
假设入口区域有 3 位医生。我的流程是,在看过一位特定的医生(比如 X 医生)后,患者会(有 80% 的机会)去实验室。实验室测试结束后,患者将通过重新加入队列返回原来的医生 X。
但是我怎样才能在患者医生之间建立联系?现在我的代码中的病人是“无记忆的”——他们只是在实验室测试后随机去看医生。入院区共有床位20张。
请帮我!先感谢您!!
python - simpy资源开放时间
我想模拟一个资源在白天有开放时间的系统:
当一个进程请求一个资源时,该资源只有在一天中有足够的时间来完成该进程时才提供它的可用性(该进程会声明它需要多少时间);否则,资源会一直等到第二天,将进程保留在队列中,而不会让其他进程跳到前面。
我正在考虑实现一个抢占式资源和一个特殊的高优先级进程,使资源在关闭时间保持忙碌。不幸的是,如果一个进程被抢占,它就会被中断并退出队列;因此,似乎我不能使用抢占。
您认为如何模拟开放时间?
提前感谢您的回答!
福斯托
simulation - Simpy:如何在火车地铁模拟中表示故障?
新的 python 用户在这里并第一次在这个伟大的网站上发帖。我一直无法找到我的问题的答案,所以希望它是独一无二的。
使用 simpy 我正在尝试创建一个火车地铁/地铁模拟,并定期在系统中内置故障和维修。这些故障不仅发生在火车上,也发生在轨道部分和平台上的信号上。我已经阅读并应用了官方的 Machine Shop 示例(您可以在附加的代码中看到相似之处),因此设法通过中断其“行程时间”来模拟火车的随机故障和维修。
但是,我还没有弄清楚如何对火车所遵循的路线上的信号故障进行建模。我目前只是指定从 A 到 B 的旅行时间,这确实会中断,但只是由于火车故障。
是否可以将每个行程定义为自己的流程,即 A_to_B 和 B_to_C 部分的单独流程,并将平台单独定义为 pA、pB 和 pC。每个都有一个资源(一次只允许一列火车),并为这些部分和平台流程合并随机故障和维修?我还可能需要在两个平台之间有几个部分,其中任何一个都可能会失败。
任何帮助将不胜感激。
到目前为止,这是我的代码:
simulation - Simpy 地铁模拟:如何在排队获取资源时修复班列中断故障?
我正在 simpy 中进行火车模拟,到目前为止,我已经成功使用遵循以下代码的单个火车实体。
火车流程是平台之后的部分。每个部分和平台的资源为 1,以确保一次仅使用一列火车。
但是我找不到解决以下错误的方法:
当我在模拟中添加第二列火车时,偶尔会出现这样的情况,即一列火车等待不可用的资源,然后该火车在等待时发生故障。
我最终得到一个中断:中断()错误。
有没有办法绕过这些失败的资源队列?
任何帮助深表感谢。
python - 使用回调开始一个简单的模拟运行
如何从回调中编写一些模拟代码(包括等待事件)?
将我的过程简化为最简单的示例,我想在我的简单模拟中发生事件时启动一些可执行代码。我所做的是将该可执行代码设置为事件的回调。该可执行代码本身具有一些简单的事件处理,特别是超时。在我的真实代码中,这发生在一个进程中,但是这个简化版本,event
在 main 中显示相同的问题行为:
我的预期输出是:
但是,我的实际输出是:
当我删除 yield 命令时,我得到:
显然回调设置正确,但重点是模拟simulationRun
. 如何在回调的代码中运行一些模拟代码(包括等待事件)?
这使用 Python 3.4.2 和 simpy。
python - SimPy yield hold 的语法错误
我是 Simpy 的初学者。我只是按照手册的第一步(http://simpy.sourceforge.net/old/SimPy_Manual/Manuals/Manual.html)并使其适应我想做的事情。我的代码
引发以下错误:
但是当我尝试手册的确切代码时,即:
它工作正常。我看不出两者有什么区别。如果你有什么想法...
conditional-statements - 多个条件事件
我有一个资源集合。传入进程将需要一组资源。例如,假设我在集合中有资源 A、B、C 和 D,并且出现了一个请求资源 A、B 和 D 的进程;我希望该过程停止,直到 A、B 和 D 可用。
这当然是一个微不足道的例子。我想知道是否可以生成 Resource.request() 事件列表,然后使用 yield 和 '&' 或其他方法等到所有事件都被授予(即所有事件都被触发)。
这就是我正在做的事情......
这就是我想做的事情......
python - 如何更改类属性的附加行为
我正在使用一个 python 包(simpy),它提供了我需要的几个类。其中一个类称为 Event,具有以下构造函数:
在代码中的许多不同位置,使用该Event.callbacks.append
方法将对象添加到事件的回调中。
我需要的是一个新类(我称之为 Zombie),它实际上是一个 Event 类,除了三个修改。首先,它应该包含一个附加属性Zombie.reset_callbacks
和一个Zombie.reset()
重置Zombie.callbacks
到先前状态的方法(这就是我需要该Zombie.reset_callbacks
属性的原因。所有这些,我都可以通过子类化来完成Event
。
但是,要使其正常工作,我需要每次Zombie.callbacks.append(x)
调用,x
不仅附加到Zombie.callbacks
,而且Zombie.reset_callbacks
. 我一直在研究装饰器,看看我能不能做到这一点,但我没有看到隧道尽头的光。我目前觉得这是不可能的,或者我可能看错了方向。
在 Python 中是否有可能(更改类属性的附加行为)?如果是这样,怎么办?
提前感谢您的努力!B.
python - Simpy:不明白为什么我的模拟永远不会结束
我正在尝试模拟反恐精英游戏。基本上我有两支不同球员的球队(现在所有球员都是相同的),我希望他们“战斗”,当一个球队的所有球员都死了时,模拟应该结束。
我试图理解为什么我正在运行的模拟永远不会结束。我觉得我误解了 simpy 的一些核心元素,但我真的不知道是什么。
所有流程和 simpy 相关代码都在 main.py 和 player.py 中。我试图让我的模拟在每个玩家“死亡”后结束。
基本上我希望每个玩家都是一个不断检查他们周围区域(他们所在的节点由 Hotspot 类表示的节点)以查看是否有任何敌人的过程。如果有任何敌人,他们会随机选择一个并“攻击”他们。一旦任何球队的所有球员的生命值都低于 0,模拟应该结束,获胜的球队应该将他们的胜利计数增加 1。
编辑:另外值得注意的是,当我通过 pdb 运行它时,似乎玩家的健康状况都没有下降,并且播放方法没有运行。
编辑 2:我认为不需要阅读所有代码来找到问题,我认为它主要在主文件和播放器文件中,但我不是 100% 确定,因为代码无限循环而没有错误
这是我的代码