import random from data.Item import Item from data.ItemType import ItemType from data.Order import Order class InitialStateFactory: @staticmethod def generate_order_list(self, output_order_list_size: int): order_list = [Order] for i in range(0, output_order_list_size): order_list.append(self.__generate_order()) return order_list @staticmethod def __generate_order(self) -> Order: order_size = random.randint(1, 4) items = [Item] for i in range(order_size): items.append(self.generate_item()) time_base = random.randint(8, 20) final_time = time_base * order_size value = sum(i.price for i in items) return Order(final_time, items, value) @staticmethod def generate_input_sequence(self, input_sequence_size): sequence = [Item] for i in range(0, input_sequence_size): sequence.append(self.__generate_item()) return sequence @staticmethod def __generate_item() -> Item: randomly_picked_type = random.choice(list(ItemType)) return Item(randomly_picked_type)