| 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 |
|
|
|
|