Skip to content

ggbaguidi/smart-uti

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Energy Supply Scheduling for Green Telecom Challenge

Overview

This project is a solution for the Zindi ML competition "Smart Energy Supply Scheduling for Green Telecom Challenge". The goal is to develop machine learning models to predict solar energy generation and create optimal energy supply strategies for telecom sites with hybrid power sources (grid, solar, diesel) and battery storage. The objective is to minimize energy costs while maintaining battery State of Charge (SOC) above safe thresholds.

The competition focuses on 10 telecom sites over 7-day periods, requiring predictions and strategies at 15-minute intervals.

Academic Context

This project serves as the foundation for an undergraduate thesis titled "Optimized Energy Supply Strategies for Green Telecommunications Networks: An AI and Multi-Objective Optimization Approach", supervised by Professor Eugène C. Ezin. The competition dataset and problem formulation provide the empirical basis for exploring AI-driven optimization techniques in sustainable telecommunications infrastructure.

Key Features

  • Solar Prediction: ML models to forecast hourly solar generation based on weather conditions
  • Load Prediction: Forecasting energy consumption patterns
  • Strategy Optimization: Various algorithms (greedy, dynamic programming, genetic algorithms, etc.) to generate optimal energy source usage strategies
  • Feasibility Validation: Ensuring battery SOC constraints are met
  • Scoring: Official evaluation using the provided error metric

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd smart-uti
  2. Set up Python environment:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    pip install -r requirements.txt

    Note: If requirements.txt doesn't exist, install core dependencies:

    pip install pandas numpy scikit-learn autogluon matplotlib seaborn autogluon

Data

The training data is located in trainData/:

  • energy consumption.csv: Hourly energy consumption per site
  • solar power and weather condition.csv: Weather features and actual solar generation
  • site information and grid outage.csv: Site configurations including battery specs and grid outage plans

Usage

1. Generate Predictions

Run the prediction scripts to generate solar and load forecasts:

python scripts/generate_predictions.py

This will create predictions/solar_predictions.csv and predictions/load_predictions.csv.

2. Generate Strategy

Choose from various strategy generation scripts:

  • Baseline: python scripts/generate_baseline_strategy.py
  • Conservative: python scripts/generate_conservative_strategy.py
  • Optimized: python scripts/generate_optimized_feasible_strategy.py
  • Probabilistic: python scripts/generate_probabilistic_strategy.py
  • Smart Conservative: python scripts/generate_smart_conservative_strategy.py
  • Ultra Safe: python scripts/generate_ultra_safe_strategy.py

Or use optimization algorithms:

  • Greedy: python scripts/greedy_optimization.py
  • Dynamic Programming: python scripts/dp_optimization.py
  • Genetic Algorithm: python scripts/genetic_optimization.py

3. Validate Strategy

Check if your strategy is feasible:

python scripts/validate_strategy.py --strategy submission_optimized_feasible.csv

4. Evaluate Score

Estimate the score using the official metric:

python scripts/estimate_score.py --strategy submission_optimized_feasible.csv

Model Training

Solar Predictor

Train solar prediction models using AutoGluon:

python notebooks/solar_prediction_autogluon.ipynb

Load Predictor

Train load prediction models:

python notebooks/energy_forecasting_autogluon.ipynb

Evaluation

The official scoring metric is defined in errorMetric_ex.py. The score is calculated as:

score = 300 * dieselStartups + totalDieselTime + 0.95 * maxDieselContinuousTime + 0.25 * totalGridTime

Key constraints:

  • Battery SOC must never drop below DOD threshold
  • Strategy must cover exactly 672 time intervals (15-min granularity over 7 days)
  • Grid can only be used when available according to outage plan

Project Structure

├── docs/                    # Documentation
├── models/                  # Trained ML models
│   ├── load_predictor/
│   └── solar_predictor/
├── notebooks/               # Jupyter notebooks for analysis and training
├── predictions/             # Generated predictions
├── scripts/                 # Python scripts for strategy generation
├── trainData/               # Training data
├── errorMetric_ex.py        # Official scoring script
├── SampleSubmission.csv     # Sample submission format
└── README.md

Troubleshooting

Common Issues

  1. Strategy not feasible: Check battery SOC constraints using validate_strategy.py
  2. High score: Minimize diesel startups (300x penalty) and continuous runtime
  3. Grid usage errors: Ensure grid is only used when gridPlan[hour] == true
  4. Time granularity: Strategies must have exactly 672 rows per site

Performance Tips

  • Use probabilistic strategies for uncertainty handling
  • Optimize for diesel startup minimization
  • Consider weather patterns for solar prediction accuracy

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly using validation scripts
  5. Submit a pull request

License

This project is for educational and research purposes in the context of the Zindi competition.

References

About

AI-powered energy optimization for green telecom networks. Undergraduate thesis project tackling Zindi's Smart Energy Supply Scheduling challenge with ML and multi-objective algorithms.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors