Spaces:
Sleeping
Sleeping
File size: 1,519 Bytes
e3e3da2 c547cb1 e3e3da2 | 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class TransportMode(str, Enum):
SEA = "sea"
AIR = "air"
RAIL = "rail"
ROAD = "road"
class PartType(str, Enum):
CHIPS = "chips"
SENSORS = "sensors"
BATTERIES = "batteries"
CASING = "casing"
class Shipment(BaseModel):
id: str
part: PartType
quantity: int
mode: TransportMode
eta: int # steps remaining
carbon_impact: float
cost: float
class Order(BaseModel):
id: str
product: str
quantity: int
due_date: int
reward: float
class Inventory(BaseModel):
chips: int = 0
sensors: int = 0
batteries: int = 0
casing: int = 0
class Observation(BaseModel):
step: int
inventory: Inventory
active_shipments: List[Shipment]
pending_orders: List[Order]
carbon_total: float
carbon_quota: float
cash_balance: float
news: Optional[str] = None
class ActionType(str, Enum):
ORDER_PARTS = "order_parts"
REROUTE = "reroute"
PRODUCE = "produce"
OFFSET = "offset"
SKIP = "skip"
CANCEL = "cancel"
class Action(BaseModel):
action_type: ActionType
part_type: Optional[PartType] = None
quantity: Optional[int] = None
mode: Optional[TransportMode] = None
shipment_id: Optional[str] = None
product: Optional[str] = None
offset_amount: Optional[float] = None
class StepResponse(BaseModel):
observation: Observation
reward: float
done: bool
info: dict
|