File size: 1,334 Bytes
75c7554
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydantic import BaseModel, Field

class BatteryConfig(BaseModel):
    capacity_mwh: float = Field(50.0, description="Max energy capacity in MWh")
    max_charge_mw: float = Field(20.0, description="Max charging power in MW")
    max_discharge_mw: float = Field(20.0, description="Max discharging power in MW")
    efficiency_charge: float = Field(0.95, description="Charging efficiency")
    efficiency_discharge: float = Field(0.95, description="Discharging efficiency")
    initial_soc: float = Field(0.5, description="Initial State of Charge (0.0 to 1.0)")
    cell_price: float = Field(200.0, description="Cost per MWh of capacity for degradation")
    cycles: float = Field(5000.0, description="Lifecycle cycles (2N)")

class ObservationModel(BaseModel):
    hour_of_day: float
    soc: float
    price_lmp: float
    p_avg: float
    freq_regd: float
    load_mw: float
from typing import List

class ActionModel(BaseModel):
    action: List[float] = Field(..., description="Continuous actions [a_PS, a_EA, a_FR] from -1.0 to 1.0")

class StepResult(BaseModel):
    observation: ObservationModel
    reward: float
    terminated: bool
    truncated: bool
    info: dict

class ResetConfig(BaseModel):
    seed: int | None = None
    task: str = Field("hard", description="'easy' (EA), 'medium' (EA+FR), 'hard' (EA+FR+PS)")