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