Spaces:
Sleeping
Sleeping
| from abc import ABC, abstractmethod | |
| from typing import List | |
| from netzero_nav.models import Action | |
| class BaseGrader(ABC): | |
| def score(self, final_state: dict) -> float: | |
| ... | |
| class EasyGrader(BaseGrader): | |
| """Fulfill orders with minimal carbon footprint.""" | |
| def score(self, final_state: dict) -> float: | |
| carbon = final_state.get("carbon_total", 0.0) | |
| quota = final_state.get("carbon_quota", 1000.0) | |
| orders_remaining = len(final_state.get("pending_orders", [])) | |
| perf = max(0.01, min(0.99, 1.0 - (carbon / quota))) | |
| if orders_remaining > 0: | |
| perf *= 0.5 | |
| return max(0.01, min(0.99, perf)) | |
| class MediumGrader(BaseGrader): | |
| def score(self, final_state: dict) -> float: | |
| return EasyGrader().score(final_state) | |
| class HardGrader(BaseGrader): | |
| def score(self, final_state: dict) -> float: | |
| return EasyGrader().score(final_state) | |
| class TaskConfig: | |
| def __init__(self, name: str, grader: BaseGrader): | |
| self.name = name | |
| self.grader = grader | |
| TASK_REGISTRY = { | |
| "easy": TaskConfig("easy", EasyGrader()), | |
| "medium": TaskConfig("medium", MediumGrader()), | |
| "hard": TaskConfig("hard", HardGrader()), | |
| } | |