Skip to content

ElectricSim es una plataforma educativa orientada al análisis, simulación y predicción de la demanda eléctrica en el Gran Buenos Aires (GBA). El sistema integra datos energéticos, meteorológicos y astronómicos en una arquitectura distribuida basada en Apache Kafka, y los expone a un modelo de deep learning capaz de anticipar variaciones de consumo.

License

Notifications You must be signed in to change notification settings

ramirocabral/ElectricSim-ML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ElectricSim Logo

Proyecto G8: ElectricSim – Plataforma de simulación y predicción de demanda eléctrica

Descripción del proyecto

ElectricSim es una plataforma educativa orientada al análisis, simulación y predicción de la demanda eléctrica en el Gran Buenos Aires (GBA). El sistema integra fuentes de datos energéticas, meteorológicas y astronómicas, las consolida mediante Apache Kafka y las expone a un modelo de deep learning capaz de anticipar variaciones en el consumo eléctrico y detectar comportamientos anómalos en tiempo real.

El proyecto busca servir como entorno experimental para el estudio de sistemas distribuidos, procesamiento de datos en streaming y machine learning aplicado al dominio energético, combinando datos históricos y datos en tiempo real dentro de una arquitectura desacoplada y escalable.

Características del proyecto
  1. Integración de múltiples fuentes de datos
  2. El sistema unifica información energética oficial, datos meteorológicos y variables astronómicas relevantes para el modelado del consumo eléctrico.

  3. Procesamiento de datos en tiempo real
  4. Los datos actuales son distribuidos mediante Apache Kafka, permitiendo desacoplar la recolección de datos del procesamiento analítico.

  5. Modelo predictivo basado en deep learning
  6. Una red neuronal feedforward permite estimar la demanda eléctrica a partir de variables climáticas, temporales y energéticas.

  7. Inferencia bajo demanda
  8. El sistema expone una API REST que permite realizar predicciones puntuales y simulaciones con datos de pronóstico.

  9. Detección de anomalías en tiempo real
  10. Se detectan desvíos significativos entre valores reales y predichos mediante Server-Sent Events (SSE).

Beneficios
  1. Anticipación de picos de consumo
  2. Permite prever aumentos o caídas en la demanda eléctrica con antelación.

  3. Análisis energético integral
  4. Combina variables ambientales, temporales y operativas en un único modelo.

  5. Arquitectura escalable
  6. El uso de Kafka permite escalar productores y consumidores de datos de forma independiente.

  7. Aplicación educativa
  8. Sirve como base para el estudio de sistemas distribuidos y machine learning aplicado.

Tecnologías utilizadas
  1. Fuentes de datos
    • CAMMESA API: datos oficiales de generación y demanda eléctrica
    • OpenWeather API: variables meteorológicas
    • Sunrise-Sunset API: información astronómica
  2. Streaming y mensajería
    • Apache Kafka
    • Kafka Streams
  3. Backend y procesamiento
    • Spring Boot: recolección y exposición de datos
    • Python + FastAPI: inferencia, detección de anomalías y SSE
    • APIs HTTP/REST
    • Server-Sent Events (SSE)
  4. Machine Learning
    • TensorFlow / Keras
    • Scikit-learn
    • Pandas y NumPy
  5. Infraestructura
    • Docker
    • Docker Compose

Arquitectura del sistema

ElectricSim se organiza en dos bloques funcionales principales:

esquema_completo
  • Recolección y distribución de datos: las fuentes energéticas, meteorológicas y astronómicas son consultadas de manera periódica por un backend desarrollado en Spring Boot. En este proceso, solo los datos en tiempo real son enviados hacia Apache Kafka, que actúa como sistema de mensajería y desacople entre productores y consumidores. Por otro lado, los datos históricos no pasan por Kafka: quedan disponibles directamente a través de un endpoint específico del backend, desde donde luego son consumidos para el proceso de entrenamiento del modelo. Paralelamente, los datos en tiempo real almacenados en Kafka se utilizan para la visualización continua mediante Grafana.
  • Entrenamiento del modelo: los datos provenientes de Kafka (en tiempo real) y los datos históricos previamente almacenados son procesados mediante un módulo de preprocesamiento que limpia, transforma y organiza la información. Luego, estos datos alimentan un modelo de deep learning diseñado para predecir la demanda eléctrica. Una vez entrenado, el modelo se expone mediante una API que no solo permite realizar inferencias, sino que también ofrece un endpoint para la obtención de anomalías cada 5 minutos mediante SSE. Además, este bloque integra datos en tiempo real para reentrenar periódicamente el modelo con información más reciente, permitiendo que la red se adapte a los cambios actuales del sistema.

Estructura del proyecto

Este repositorio corresponde exclusivamente al módulo de Deep Learning de ElectricSim. Aquí se implementa el modelo predictivo, el preprocesamiento de datos, la inferencia, la detección de anomalías y el mecanismo de reentrenamiento en tiempo real.

La recolección de datos, la publicación en Kafka y la visualización del sistema forman parte de otros repositorios del proyecto ElectricSim y no se encuentran incluidos aquí.

ElectricSim-ML/
│
├── api/                    # API de inferencia y streaming (FastAPI, SSE)
├── data/                   # Datos utilizados para entrenamiento y reentrenamiento
├── lib/                    # Utilidades de preprocesamiento y helpers
├── ml/                     # Lógica principal de entrenamiento y reentrenamiento
├── models/                 # Modelos entrenados y escaladores (StandardScaler)
│
├── model.ipynb             # Notebook experimental de diseño y evaluación del modelo
├── requirements.txt        # Dependencias del proyecto
├── README.md               # Documentación del módulo
├── LICENSE                 # Licencia del proyecto
├── __init__.py
└── __pycache__/            # Archivos de cache de Python

Alcance del repositorio

Este repositorio contiene únicamente la implementación del modelo de Deep Learning utilizado por ElectricSim.

  • Preprocesamiento de datos energéticos, climáticos y temporales
  • Entrenamiento inicial del modelo predictivo
  • Inferencia bajo demanda mediante API REST
  • Detección de anomalías en tiempo real mediante Server-Sent Events (SSE)
  • Reentrenamiento automático e incremental del modelo

La arquitectura completa de ElectricSim incluye otros componentes como la recolección de datos desde APIs externas, la publicación en Apache Kafka y la visualización del sistema, los cuales se desarrollan y despliegan en repositorios independientes.


Flujo de funcionamiento del sistema

Flujo general de ElectricSim
  1. Recolección de datos
  2. El backend consulta periódicamente las APIs de CAMMESA, OpenWeather y Sunrise-Sunset.

  3. Publicación en Kafka
  4. Los datos en tiempo real se publican en tópicos de Apache Kafka.

  5. Consumo y preprocesamiento
  6. El backend analítico consume los datos, los limpia y los transforma.

  7. Inferencia del modelo
  8. El modelo de deep learning predice la demanda eléctrica.

  9. Detección de anomalías
  10. Se comparan valores reales y predichos y se notifican desvíos mediante SSE.

  11. Reentrenamiento periódico
  12. El modelo se reentrena automáticamente con datos recientes.


Puesta en marcha del sistema

ElectricSim utiliza Docker y Docker Compose para simplificar la ejecución del entorno completo de desarrollo.

Para construir las imágenes y levantar los servicios:

docker compose up --build

Para detener el entorno y liberar los recursos:

docker compose down

Autores

  • Blasco, Gonzalo
  • Cabral, Ramiro Nicolás
  • Savenia, Manuel

About

ElectricSim es una plataforma educativa orientada al análisis, simulación y predicción de la demanda eléctrica en el Gran Buenos Aires (GBA). El sistema integra datos energéticos, meteorológicos y astronómicos en una arquitectura distribuida basada en Apache Kafka, y los expone a un modelo de deep learning capaz de anticipar variaciones de consumo.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •