File size: 915 Bytes
4d0ffdd
f6c65ef
6a28f91
 
 
 
4d0ffdd
f6c65ef
4d0ffdd
 
 
 
 
 
f6c65ef
c92a716
 
f6c65ef
c92a716
f6c65ef
c92a716
 
4d0ffdd
 
 
c92a716
4d0ffdd
f6c65ef
6a28f91
 
 
 
 
 
 
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
"""Scheduling policy implementations."""

from src.core.policy import SchedulerPolicy
from src.simulation.policies.age import AgeBasedPolicy
from src.simulation.policies.fifo import FIFOPolicy
from src.simulation.policies.readiness import ReadinessPolicy

# Registry of supported policies (RL removed)
POLICY_REGISTRY = {
    "fifo": FIFOPolicy,
    "age": AgeBasedPolicy,
    "readiness": ReadinessPolicy,
}


def get_policy(name: str, **kwargs):
    """Get a policy instance by name.

    Args:
        name: Policy name (fifo, age, readiness)
        **kwargs: Additional arguments passed to policy constructor
    """
    name_lower = name.lower()
    if name_lower not in POLICY_REGISTRY:
        raise ValueError(f"Unknown policy: {name}")
    return POLICY_REGISTRY[name_lower](**kwargs)


__all__ = [
    "SchedulerPolicy",
    "FIFOPolicy",
    "AgeBasedPolicy",
    "ReadinessPolicy",
    "get_policy",
]