def generate_distorted_problem(self, problem, arrival_time=0): problem_active_execution_time = 0 distorted_job_list = problem.get_jobs_list() for job in distorted_job_list: problem_active_execution_time += JobUtil.calculate_active_execution_time(job) job.arrival_time = arrival_time expected_distortion_level = self.distortion_factor * problem_active_execution_time distortion_level = 0 while distortion_level < expected_distortion_level: job = self.__draw_random_job(distorted_job_list) task = self.__draw_random_task(job) distortion_level += self.__distort_task(task) return Problem(distorted_job_list)
def add_job(self, job): if self.__total_active_execution_time > self.__predictive_time: raise Exception("Job window is already full") self.__total_active_execution_time += JobUtil.calculate_active_execution_time(job) self.__jobs.append(job) return self.is_full()