Spaces:
Sleeping
Sleeping
File size: 1,113 Bytes
cb330aa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | """
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
|