feat: add random plane schedule in task 6
This commit is contained in:
45
task6/main.py
Normal file
45
task6/main.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from collections import deque
|
||||
from dataclasses import dataclass
|
||||
from icecream import ic
|
||||
from numpy import random
|
||||
from typing import Final, Iterable
|
||||
|
||||
from numpy.typing import NDArray
|
||||
|
||||
|
||||
class Plane:
|
||||
__id_increment = 0
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.id = self.__id_increment
|
||||
Plane.__id_increment += 1
|
||||
|
||||
@dataclass
|
||||
class Request:
|
||||
time: float
|
||||
plane: Plane
|
||||
|
||||
def generate_timeline(incoming_planes_per_hour: float, outcoming_planes_per_hour: float, interval_minutes: int) -> Iterable[tuple[int, int]]:
|
||||
def _generate(planes_per_hour: float) -> NDArray:
|
||||
return random.poisson(planes_per_hour / 60, interval_minutes)
|
||||
|
||||
incoming_planes_per_minute = _generate(incoming_planes_per_hour)
|
||||
outcoming_planes_per_minute = _generate(outcoming_planes_per_hour)
|
||||
return zip(incoming_planes_per_minute, outcoming_planes_per_minute)
|
||||
|
||||
# takeoff_duration: Final[float] = 30 # minutes
|
||||
|
||||
# max_queue: Final[int] = int(input())
|
||||
# interval: Final[float] = int(input()) # minutes
|
||||
# incoming_planes, outcoming_planes = map(float, input().split()) # per hour
|
||||
|
||||
# in_queue: deque[Plane] = deque(maxlen=max_queue)
|
||||
# out_queue: deque[Plane] = deque(maxlen=max_queue)
|
||||
|
||||
timeline = generate_timeline(5,2, 120)
|
||||
|
||||
for i, (in_planes_count, out_planes_count) in enumerate(timeline):
|
||||
for a in range(in_planes_count):
|
||||
ic(f"{i} in: {Plane().id}")
|
||||
for a in range(out_planes_count):
|
||||
ic(f"{i} out: {Plane().id}")
|
||||
Reference in New Issue
Block a user