simplify Event class

This commit is contained in:
2025-03-17 17:46:08 +01:00
parent 6959923b0d
commit 98cff0ae47

View File

@@ -3,14 +3,9 @@ import random
from heapq import heappush, heappop
class Event:
def __init__(self, event_type, additional_options):
self.event_type = event_type
if event_type == "request":
self.request = additional_options['request']
elif event_type == "router_finish":
self.request = additional_options['request']
elif event_type == "process_finish":
self.request = additional_options['request']
def __init__(self, event_type, request):
self.event_type = event_type # 'request', 'router_finish', 'process_finish'
self.request = request
class Request:
def __init__(self, category, arrival_time):
@@ -53,7 +48,7 @@ class Simulation:
category = random.randint(0, self.C-1) if self.C>1 else 0
request = Request(category, arrival_time)
request_event = Event("request", {"request": request})
request_event = Event("request", request)
heappush(self.event_queue, (arrival_time, request_event))
@@ -72,7 +67,7 @@ class Simulation:
def router_process(self, request):
if self.router_state == "idle":
self.router_state = 'processing'
router_finish = Event("router_finish", {"request": request})
router_finish = Event("router_finish", request)
finish_time = self.current_time + self.router_processing_time
heappush(self.event_queue, (finish_time, router_finish))
else:
@@ -99,7 +94,7 @@ class Simulation:
def process_request(self, request):
interval = random.expovariate(self.service_rate)
finish_time = self.current_time + interval
process_finish = Event("process_finish", {"request": request})
process_finish = Event("process_finish", request)
heappush(self.event_queue, (finish_time, process_finish))
def process_request_finish(self, request):