0
나는 상점에서 뭔가를 얻는 것이 다른 것에 의존하는 상황을 모델링하려고합니다.Simpy Store - Dependent Events
제한된 용량의 저장소 S1에 항목을 넣는 생산자가 있다고 가정 해 보겠습니다. 이 상품들은 다른 상점 S2로 이동합니다. (1) S1 및에 항목이있는 경우에만 S2에 공간이 있습니다.
P -> S1 -> S2
문제가 I S2 공간 인 조건으로 할 S1에서 항목의 제거를 필요로한다는 것이다.
from simpy import *
env = Environment()
S1 = Store(env, capacity=1)
S2 = Store(env, capacity=1)
def producer():
i = 0
while True:
yield S1.put(i)
print("Producer put item: %s"%i)
i += 1
def s1_to_s2():
while True:
item = yield S1.get()
yield S2.put(item)
env.process(producer())
env.process(s1_to_s2())
env.run(until=20)
Producer put item: 0
Producer put item: 1
Producer put item: 2
이 내가 원하지 않는 S1과 S2 사이 1 개 추가 저장 슬롯이있다 것처럼 보이게 내가 모델링 한 방법을 생산 : 코드에서
. 두 개의 저장 장치가 있으며 용량이 각각 1 개인 경우 생산자는 2 개의 장치 만 삽입 할 수 있어야합니다.
이 작업을 수행하는 방법을 알고 계십니까? 나는 Store.get을 재정의하여 조건을 취한 이벤트를 반환하고 _do_get (이 경우 첫 번째 Store의 get을 실행하기 전에 다음 Store에 여유 공간이 있는지를 확인할 수 있음)을 평가하려고했습니다. 그것은 여분의 공간의 문제를 해결할 수 있지만 목적지 상점에 공석이없는 경우 사건을 "재조정"하는 방법을 알 수는 없습니다. 제 말의 의미는 다음과 같습니다 : https://gist.github.com/sheridp/31516e95bee350481c1a39b1597e559f – sheridp
일반 상황보다 get 이벤트가 목적지 큐를 사용할 수 있습니다. 그렇다면 목적지에 여유가 없기 때문에 이벤트가 성공할 수 없다면 대상 큐가 get 이벤트를 경험할 때 이벤트를 다시 평가하도록 예약하는 방법은 무엇입니까? – sheridp