擅长:python、mysql、java
<p>我尝试了其他方法,重载了Resource类,只添加了一个方法,虽然我不能完全理解源代码,但它似乎可以正常工作。您可以告诉资源更改模拟中某处的容量。在</p>
<pre><code>from simpy.resources.resource import Resource, Request, Release
from simpy.core import BoundClass
from simpy.resources.base import BaseResource
class VariableResource(BaseResource):
def __init__(self, env, capacity):
super(VariableResource, self).__init__(env, capacity)
self.users = []
self.queue = self.put_queue
@property
def count(self):
return len(self.users)
request = BoundClass(Request)
release = BoundClass(Release)
def _do_put(self, event):
if len(self.users) < self.capacity:
self.users.append(event)
event.usage_since = self._env.now
event.succeed()
def _do_get(self, event):
try:
self.users.remove(event.request)
except ValueError:
pass
event.succeed()
def _change_capacity(self, capacity):
self._capacity = capacity
</code></pre>
<p>我认为这应该行得通,但我对触发器的工作原理并不是百分之百的自信。在</p>