def __init__( self, resource_names: List[str] = None, task_ids: List[int] = None, tasks_mode: Dict[int, Dict[int, Dict[str, int]]] = None, successors: Dict[int, List[int]] = None, max_horizon: int = None, resource_availability: Dict[str, int] = None, resource_renewable: Dict[str, bool] = None, ): self.resource_names = resource_names self.task_ids = task_ids self.tasks_mode = tasks_mode # transform the "mode_details" dict that we largely used in DO in the good format. self.task_mode_dict = {} self.duration_dict = {} for task in self.tasks_mode: self.task_mode_dict[task] = {} self.duration_dict[task] = {} for mode in self.tasks_mode[task]: self.task_mode_dict[task][mode] = ConstantModeConsumption({}) for r in self.tasks_mode[task][mode]: if r in self.resource_names: self.task_mode_dict[task][mode].mode_details[r] = [ self.tasks_mode[task][mode][r] ] self.duration_dict[task][mode] = self.tasks_mode[task][mode][ "duration"] self.successors = successors self.max_horizon = max_horizon self.resource_availability = resource_availability self.resource_renewable = resource_renewable self.initialize_domain()
def _get_tasks_mode(self) -> Dict[int, ModeConsumption]: return { 1: ConstantModeConsumption({ "r1": 0, "r2": 0 }), 2: ConstantModeConsumption({ "r1": 1, "r2": 1 }), 3: ConstantModeConsumption({ "r1": 1, "r2": 0 }), 4: ConstantModeConsumption({ "r1": 2, "r2": 1 }), 5: ConstantModeConsumption({ "r1": 0, "r2": 1 }), 6: ConstantModeConsumption({ "r1": 1, "r2": 0 }), 7: ConstantModeConsumption({ "r1": 0, "r2": 0 }), }
def _get_tasks_modes(self) -> Dict[int, Dict[int, ModeConsumption]]: return { 1: { 1: ConstantModeConsumption({ "r1": 0, "r2": 0 }) }, 2: { 1: ConstantModeConsumption({ "r1": 1, "r2": 1 }), 2: ConstantModeConsumption({ "r1": 2, "r2": 0 }), }, 3: { 1: ConstantModeConsumption({ "r1": 1, "r2": 0 }), 2: ConstantModeConsumption({ "r1": 0, "r2": 1 }), }, 4: { 1: ConstantModeConsumption({ "r1": 2, "r2": 1 }), 2: ConstantModeConsumption({ "r1": 2, "r2": 0 }), }, 5: { 1: ConstantModeConsumption({ "r1": 0, "r2": 0 }) }, }