File size: 4,330 Bytes
1875b13 a43b40b 1875b13 60cbc23 1875b13 6d74982 1875b13 a43b40b 1875b13 a43b40b 1875b13 6d74982 1875b13 0361922 1875b13 0361922 1875b13 0361922 1875b13 6d74982 1875b13 0361922 | 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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | 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
|