python – Queue theory: how to recognize Agents in data?


I’m dealing with the queueing-tool library for stimulate a one-node M/D/1 system where requests arrive with the arrival time defined as follows:

def slow_arr(t): return t + random.expovariate(1.5)

and service time:

def ser(t): return t + 0.5

During the simulation I need to simulate the arrival of additional requests that have lower arrival time:

def fast_arr(t): return t + random.expovariate(0.15)

From what I got from the docs, I defined two Agents (requests) as follows:

ag_slow = qt.Agent(
    agent_id = (1, 1),   # edge 1, agent 1
    arrival_f = slow_arr,
)

ag_fast = qt.Agent(
    agent_id = (1, 2),
    arrival_f = fast_arr
)

and the queue (which is only one in my simulation):

q = qt.QueueServer(
    num_servers = 1,
    collect_data = True,
    service_f = ser,
)

Now, I injected the first Agent into the server and simulate 10 events and checked the data (just in case)

q.set_active()  # accept agents
ag_slow.queue_action(queue=q)
q.simulate(n=10)
q.fetch_data()

Everything seems right.
Then I injected the second Agent (the requests with lower arrival time):

ag_fast.queue_action(queue=q)
q.simulate(n=10)

Then I port the data into a dataframe and that’s the result:

arrival service departure num_queued num_total q_id index
0 1.967303 1.967303 2.467303 0.0 1.0 0.0
1 2.093401 2.467303 2.967303 1.0 2.0 0.0
2 5.400844 5.400844 5.900844 0.0 1.0 0.0
3 5.765601 5.900844 6.400844 1.0 2.0 0.0
4 8.493998 8.493998 8.993998 0.0 1.0 0.0
5 9.035278 9.035278 9.535278 0.0 1.0 0.0
6 9.874867 9.874867 10.374867 0.0 1.0 0.0
7 10.542173 10.542173 11.042173 0.0 1.0 0.0
8 11.993661 11.993661 12.493661 0.0 1.0 0.0
9 13.107135 13.107135 0.000000 0.0 1.0 0.0
10 13.565815 0.000000 0.000000 1.0 2.0 0.0

Now I have two questions (or more?).
First of all, is the way I simulate the network okay? (please don’t roast me).

Second, is there a way to get the info about the agents? (like, “is this an agent from those with lower arrival time?”). Maybe should be implemented such a thing? Like a label.

Thanks for the help.



Source link

Leave a Comment