Spaces:
Sleeping
Sleeping
| """ | |
| ECHO future prediction module. | |
| """ | |
| from env.models import Task | |
| def _clamp(value: float, lower: float, upper: float) -> float: | |
| return max(lower, min(upper, value)) | |
| def predict_future(task: Task, current_time: int, max_deadline: float = 20.0) -> dict[str, float]: | |
| capped_deadline = max(max_deadline, 1.0) | |
| future_risk = _clamp(task.risk * (1.0 + 0.1 * current_time), 0.0, 1.0) | |
| deadline_pressure = 1.0 - (_clamp(task.deadline, 0.0, capped_deadline) / capped_deadline) | |
| return { | |
| "future_risk": round(future_risk, 4), | |
| "deadline_pressure": round(_clamp(deadline_pressure, 0.0, 1.0), 4), | |
| } | |
| class ECHO: | |
| """ | |
| Environment change oracle for future risk and deadline pressure. | |
| """ | |
| def __init__(self, max_deadline: float = 20.0): | |
| self.max_deadline = max_deadline | |
| def predict(self, task: Task, current_time: int) -> Task: | |
| values = predict_future(task, current_time=current_time, max_deadline=self.max_deadline) | |
| task.future_risk = values["future_risk"] | |
| task.deadline_pressure = values["deadline_pressure"] | |
| return task | |