Spaces:
Running
Running
| name: gridmind-rl | |
| version: 1.0.0 | |
| description: | | |
| GridMind-RL: Industrial Load-Shaping and Demand-Response Environment. | |
| An RL environment simulating a real-world building energy management system. | |
| Control HVAC, thermal storage, and schedule batch jobs in response to | |
| stochastic time-of-use prices and grid stress events. | |
| author: LOKyu Team | |
| tags: | |
| - openenv | |
| - reinforcement-learning | |
| - energy | |
| - demand-response | |
| - continuous-control | |
| - discrete-control | |
| server: | |
| host: "0.0.0.0" | |
| port: 7860 | |
| protocol: http | |
| schemas: | |
| observation: | |
| type: object | |
| properties: | |
| indoor_temperature: | |
| type: number | |
| description: Current building/process temperature (°C) | |
| thermal_storage_level: | |
| type: number | |
| minimum: 0.0 | |
| maximum: 1.0 | |
| description: Thermal storage tank level (0.0=empty, 1.0=full) | |
| process_demand: | |
| type: number | |
| description: Current process industrial power demand (kW) | |
| current_price: | |
| type: number | |
| description: Real-time electricity price ($/kWh) | |
| grid_stress_signal: | |
| type: number | |
| minimum: 0.0 | |
| maximum: 1.0 | |
| description: Utility signal for DR urgency (0=normal, 1=critical) | |
| carbon_intensity: | |
| type: number | |
| description: Grid carbon intensity (gCO2/kWh) | |
| hour_of_day: | |
| type: integer | |
| minimum: 0 | |
| maximum: 23 | |
| description: Hour of the day for time-aware scheduling | |
| batch_queue: | |
| type: array | |
| items: | |
| type: integer | |
| description: List of pending batch jobs (values are deadline slot indices) | |
| cumulative_cost: | |
| type: number | |
| description: Total energy cost incurred so far this episode ($) | |
| step: | |
| type: integer | |
| minimum: 0 | |
| maximum: 95 | |
| description: Current episode step index (0–95); 96 steps = 24 hours at 15-min resolution | |
| building_id: | |
| type: integer | |
| description: Building identifier for multi-building federation | |
| action: | |
| type: object | |
| required: | |
| [ | |
| "hvac_power_level", | |
| "thermal_charge_rate", | |
| "batch_job_slot", | |
| "load_shed_fraction", | |
| ] | |
| properties: | |
| hvac_power_level: | |
| type: number | |
| minimum: 0.0 | |
| maximum: 1.0 | |
| description: Fraction of max HVAC power to apply (0.0-1.0) | |
| thermal_charge_rate: | |
| type: number | |
| minimum: -1.0 | |
| maximum: 1.0 | |
| description: Thermal storage charge (+) or discharge (-) rate | |
| batch_job_slot: | |
| type: integer | |
| minimum: 0 | |
| maximum: 4 | |
| description: Which time slot to schedule the next batch job (0=now, 1-4=defer) | |
| load_shed_fraction: | |
| type: number | |
| minimum: 0.0 | |
| maximum: 0.5 | |
| description: Fraction of non-critical load to shed during grid stress (0.0-0.5) | |
| building_id: | |
| type: integer | |
| description: Building identifier for multi-building federation | |
| reward: | |
| type: number | |
| description: Dense multi-component reward (cost, optional temperature/grid/carbon/deadlines) task-gated to match objectives. | |
| tasks: | |
| - id: 1 | |
| name: "Cost Minimization" | |
| description: "Minimize total energy cost over a 24-hour episode with no process constraints." | |
| difficulty: "easy" | |
| weights: | |
| cost: 1.0 | |
| - id: 2 | |
| name: "Constrained Temperature Management" | |
| description: "Minimize cost while keeping indoor temperature within ±2°C of setpoint at all times." | |
| difficulty: "medium" | |
| weights: | |
| cost: 0.6 | |
| temperature: 0.4 | |
| - id: 3 | |
| name: "Full Demand-Response with Batch Scheduling" | |
| description: "Minimize cost, maintain temperature, respond to grid stress events, schedule all batch jobs, and minimize carbon." | |
| difficulty: "hard" | |
| weights: | |
| cost: 0.28 | |
| temperature: 0.20 | |
| grid_response: 0.20 | |
| batch_deadline: 0.12 | |
| carbon: 0.20 | |
| endpoints: | |
| health: | |
| path: /health | |
| method: GET | |
| ping: | |
| path: /ping | |
| method: GET | |
| reset: | |
| path: /reset | |
| method: POST | |
| step: | |
| path: /step | |
| method: POST | |
| state: | |
| path: /state | |
| method: GET | |
| grade: | |
| path: /grade | |
| method: GET | |
| replay: | |
| path: /replay | |
| method: GET | |
| tasks: | |
| path: /tasks | |
| method: GET | |
| metrics: | |
| path: /metrics | |
| method: GET | |