Генерация клиентов в соответствии с графиком в Simpy - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь смоделировать прибытие клиентов в определенное время (не генерируется в соответствии со статистическим распределением) с помощью Simpy v3. Время прибытия определяется в файле csv, который я загрузил в кадр данных pandas.

В предыдущей версии Simpy (v2.2) был аргумент для функции активации «at», которая активировала бы клиента в конкретном случае activate(c,c.visit(timeInBank),at=5.0). Как это сделать в Simpy версии 3 ??

Фрейм данных 'df' передает время прибытия для каждого клиента

df.head()

arrival_time  start_service  end_service  waiting_time  service_duration
09:00:20      09:01:00       09:06:00     0.40      5.00
09:01:00      09:02:20       09:04:00     1.20      1.40 

.

import random
import simpy
import pandas as pd `

def source(env, df, counter):
    for i, row in df.iterrows():
        c = client(env, 'Client%02d' % i, counter, row,time_in_bank=row["service_duration"])
        env.process(c)   

def client(env, name, counter, row, time_in_bank):
    arrive = env.now # probably some changes to be done here
    print('%s arrived at %7.4f' % (name,arrive))

    with counter.request() as req:
        results = yield req

        wait = env.now - row["waiting_time"]

        print('%s waited %6.3f' % (name, wait))

        yield env.timeout(time_in_bank)
        print('%s exited the office at %7.4f' % (name, env.now))


df = pd.read_csv("arrivals.csv",sep=",",header=0)

env = simpy.Environment()

counter = simpy.Resource(env, capacity=1)
env.process(source(env, df.head(), counter))
env.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...