task_list.append(task) for index in range(1, len(task_list)): # Downscale the failing task by minimum amount. while task_list[index].current > task_list[index -1].current: task_list[index].ScaleDown1() consumption = battery.tasks_consumption(38, tasks) print(battery.battery_failed) while battery.battery_failed: failed_task = battery.failed_task failed_task.ScaleDown() tasks.calculate_runtime() consumption = battery.tasks_consumption(38, tasks) plot_consumption(battery, tasks) ### Phase 2 # Overall planning strategy to scale down based on maximum slack time slack_times = {} for task in task_list: if task.slack > 0: slack_times[task] = task.slack print(f'Task {task} with slack time {task.slack}') while slack_times: max_slack_task = max(slack_times.items(), key=operator.itemgetter(1))[0] print(f'Task {max_slack_task} with slack time {slack_times[max_slack_task]}') max_slack_task.ScaleDown1()