Spaces:
Sleeping
Sleeping
File size: 1,031 Bytes
4d0ffdd 6a28f91 4d0ffdd 6a28f91 4d0ffdd f6c65ef 4d0ffdd f6c65ef 4d0ffdd f6c65ef 4d0ffdd f6c65ef 4d0ffdd f6c65ef 4d0ffdd f6c65ef 4d0ffdd |
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 36 37 38 39 40 |
"""Age-based scheduling policy.
Prioritizes older cases to reduce maximum age and prevent starvation.
Uses case age (days since filing) as primary criterion.
"""
from __future__ import annotations
from datetime import date
from typing import List
from src.core.case import Case
from src.core.policy import SchedulerPolicy
class AgeBasedPolicy(SchedulerPolicy):
"""Age-based scheduling: oldest cases scheduled first."""
def prioritize(self, cases: List[Case], current_date: date) -> List[Case]:
"""Sort cases by age (oldest first).
Args:
cases: List of eligible cases
current_date: Current simulation date
Returns:
Cases sorted by age_days (descending)
"""
# Update ages first
for c in cases:
c.update_age(current_date)
return sorted(cases, key=lambda c: c.age_days, reverse=True)
def get_name(self) -> str:
return "Age-Based"
def requires_readiness_score(self) -> bool:
return False
|