sassy78420/openenv-datacenter-optimisation
0
Data Center Energy Optimization — OpenEnv
An AI agent optimises a data center's energy consumption by tuning server power states, cooling settings, and workload placement — while never violating thermal limits or SLA performance targets.
Why This Environment?
Data centers consume ~1–2 % of global electricity. Operators constantly balance three competing objectives:
This environment models those trade-offs with a simplified but physically grounded simulation so RL / LLM agents can learn to make the same decisions a human operator would.
Observation Space
Each observation is a CallToolObservation (OpenEnv spec) containing:
Action Space (MCP Tools)
Tasks & Difficulty
Baseline Scores (Mock Agent — no LLM)
Mock agent submits immediately with no changes, so normalised reward from baseline is 0.0.
Reward Function
- Per-step delta reward — each step returns
new_score - old_score, giving the agent immediate signal for every action. - Partial credit across multiple dimensions (energy, thermal, SLA, PUE, balance, power-cap).
- Penalty via normalisation — the score is normalised against the initial (unoptimised) state, so doing nothing yields 0.
- Step cap at 20 to prevent infinite loops.
Setup & Usage
Install
pip install -e .Run Inference
export HF_TOKEN="your_token"
export API_BASE_URL="https://router.huggingface.co/v1"
export MODEL_NAME="Qwen/Qwen3.5-35B-A3B"
python inference.pyValidate OpenEnv Spec
openenv validateDocker
cd server
docker build -t dc-energy-env .
docker run -p 8000:8000 dc-energy-envEnvironment Variables
Project Structure
├── datacenter_generator.py # Scenario generation (baseline + golden)
├── graders.py # Multi-dimensional scoring per task
├── inference.py # Baseline LLM inference script
├── openenv.yaml # OpenEnv metadata
├── pyproject.toml # Python project configuration
├── client.py # MCPToolClient wrapper
├── __init__.py # Package exports
├── server/
│ ├── datacenter_environment.py # MCPEnvironment implementation
│ ├── app.py # FastAPI app factory
│ └── Dockerfile # Container build
└── README.mdLicense
BSD-style license. See LICENSE file.
