NeoCodes-dev's picture
Upload folder using huggingface_hub
ac5cfba verified
raw
history blame contribute delete
986 Bytes
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
"""Badge reward component for Pokemon Red."""
from typing import Any, Dict
from .base import BaseRewardComponent
class BadgeReward(BaseRewardComponent):
"""
Rewards obtaining gym badges.
Provides significant reward for each gym badge obtained,
as badges represent major game progression milestones.
Attributes:
weight: Reward per badge (default 5.0).
"""
def __init__(self, weight: float = 5.0, enabled: bool = True):
super().__init__(name="badge", weight=weight, enabled=enabled)
def calculate(
self, state: Dict[str, Any], prev_state: Dict[str, Any]
) -> float:
"""Calculate reward for badges obtained."""
current_badges = state.get("badge_count", 0)
previous_badges = prev_state.get("badge_count", 0)
new_badges = current_badges - previous_badges
return max(0.0, float(new_badges))