def load_configuration(config_file): with open(config_file, 'r') as f: config = {} R, C, A = get_line(f.readline()) config['R'] = R config['C'] = C config['A'] = A L, V, B, T = get_line(f.next()) config['L'] = L config['V'] = V config['B'] = B config['T'] = T start_cell = tuple(get_line(f.next())) config['start_cell'] = start_cell targets = [] for l in range(L): targets.append(tuple(get_line(f.next()))) config['targets'] = targets A_MAP = [] for a in range(A): a_map = [] for r in range(R): a_map.append(list(izip(*[iter(get_line(f.next()))]*2))) A_MAP.append(a_map) config['a_map'] = A_MAP return config
def __init__(self, config_file): with open(config_file, 'r') as f: self.rows, self.cols, self.num_drones, self.num_turns, self.max_payload = get_line(f.readline()) self.num_product_types = get_line_first(f.readline()) weights = get_line(f.readline()) self.products = [] for idx in range(self.num_product_types): self.products.append(Product(idx, weights[idx])) self.num_warehouses = get_line_first(f.readline()) self.warehouses = [] for warehouse_idx in range(self.num_warehouses): loc = tuple(get_line(f.readline())) warehouse = Warehouse(warehouse_idx, loc) for prod_idx, prod_quant in enumerate(get_line(f.readline())): prod = self.products[prod_idx] warehouse.add_product(prod, prod_quant) self.warehouses.append(warehouse) self.num_orders = get_line_first(f.readline()) self.orders = [] for order_idx in range(self.num_orders): loc = tuple(get_line(f.readline())) order = Order(order_idx, loc) f.readline() #just skip cause we know it from the next line for prod_id in get_line(f.readline()): prod = self.products[prod_id] order.add_product(prod) self.orders.append(order) self.drones = [Drone(drone_idx, self.warehouses[0].location, self.max_payload) \ for drone_idx in range(self.num_drones)]