File size: 1,039 Bytes
b13fa7f
 
c041c09
 
ff33a83
b13fa7f
 
 
 
 
 
 
 
 
 
c041c09
 
b13fa7f
 
 
 
 
 
9691f5e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from dataclasses import dataclass
from typing import List
import numpy as np
from config import LEAD_TIME, LEAD_TIME_JITTER
#Order_processor
@dataclass
class Order:
    arrival_day: int
    quantity: int

class OrderProcessor:
    def __init__(self):
        self.order_queue: List[Order] = [] # self.order_queue stores Order objects

    def place_order(self, time_period: int, quantity: int):
        jitter = np.random.randint(-LEAD_TIME_JITTER, LEAD_TIME_JITTER + 1)
        arrival_day = max(time_period + 1, time_period + LEAD_TIME + jitter)
        self.order_queue.append(Order(arrival_day=arrival_day, quantity=quantity))

    def manage_order(self, time_period: int) -> int:
        arrived_orders = [order for order in self.order_queue if order.arrival_day == time_period]
        # if order.arrival_day < current_day order excluded after each call of process_order
        self.order_queue = [order for order in self.order_queue if order.arrival_day > time_period]
        return sum(order.quantity for order in arrived_orders)