gridmind / openenv.yaml
adityss's picture
feat: add task weights to configuration and implement LLM-based inference agent
0361922
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