Downloads · 30 days
0
jwsouza2025/fl_project
fl_project is a machine learning model from jwsouza2025. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Sistema de Aprendizado Federado (FL) para prever consumo de combustível usando dados de sensores OBD de diferentes veículos, mantendo a privacidade dos dados em cada cliente.
Downloads · 30 days
0
Access
Public
Updated Aug 26, 2025
Repo size
3.5 MB
Likes
0
Public
Click a slice to open those files.
.pdf4.1 MB · 49%
From the Hugging Face model README
Sistema de Aprendizado Federado (FL) para prever consumo de combustível usando dados de sensores OBD de diferentes veículos, mantendo a privacidade dos dados em cada cliente.
Este projeto implementa um sistema de Aprendizado Federado usando o framework Flower, onde:
┌─────────────────┐
│ Servidor (Win) │
│ 16GB RAM │
│ Porta: 8080 │
└────────┬────────┘
│
┌────┴────┬──────────┐
│ │ │
┌───▼───┐ ┌──▼───┐ ┌────▼───┐
│Cliente│ │Cliente│ │Cliente │
│ 1 │ │ 2 │ │ 3 │
│Ubuntu │ │Ubuntu│ │Ubuntu │
│ 8GB │ │ 8GB │ │ 8GB │
└───────┘ └──────┘ └────────┘
fl_project/
├── data/ # Dados dos veículos (não versionado)
│ ├── client_1/ # Percursos do veículo 1
│ │ ├── percurso_1.csv
│ │ ├── percurso_2.csv
│ │ └── ...
│ ├── client_2/ # Percursos do veículo 2
│ └── client_3/ # Percursos do veículo 3
├── server.py # Código do servidor FL
├── client.py # Código dos clientes FL
├── utils.py # Modelo LSTM e funções auxiliares
├── analysis_tool.py # Ferramenta de análise pós-treinamento
├── run.sh # Script para execução local
├── run_all_strategies.sh # Script para testar todas as estratégias
├── requirements.txt # Dependências Python
└── README.md # Este arquivo
git clone https://github.com/seu-usuario/fl_project.git
cd fl_project
No Ubuntu (Clientes):
python3 -m venv venv
source venv/bin/activate
No Windows (Servidor):
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
Organize os dados de cada veículo na estrutura:
data/
├── client_1/ # Dados do veículo 1
├── client_2/ # Dados do veículo 2
└── client_3/ # Dados do veículo 3
Formato esperado dos CSVs:
vehicle_speed, engine_rpm, accel_x, accel_y, P_kW, dtIdentifique o IP do servidor Windows:
ipconfig
Procure pelo IPv4 Address (ex: 192.168.1.100)
Teste a conectividade dos clientes Ubuntu:
ping 192.168.1.100
# Ative o ambiente virtual
.\venv\Scripts\activate
# Execute o servidor
python server.py --strategy fedavg --rounds 15
# Ou com parâmetros customizados
python server.py --strategy fedadam --rounds 20 --min-clients 3
O servidor iniciará na porta 8080 e aguardará a conexão dos clientes.
Em cada máquina Ubuntu, execute em terminais separados:
Cliente 1:
# Ative o ambiente virtual
source venv/bin/activate
# Execute o cliente 1
python client.py --client-id 1 --server-address 192.168.1.100:8080 --prediction-length 10
Cliente 2:
source venv/bin/activate
python client.py --client-id 2 --server-address 192.168.1.100:8080 --prediction-length 10
Cliente 3:
source venv/bin/activate
python client.py --client-id 3 --server-address 192.168.1.100:8080 --prediction-length 10
O progresso será exibido em tempo real:
Executar análise automática:
python analysis_tool.py --results-dir results
Visualizações geradas (PDFs):
performance_analysis_*.pdf: Análise de desempenho completaconvergence_analysis_*.pdf: Métricas de convergênciaheatmap_performance_*.pdf: Mapa de calor temporalcomparative_analysis.pdf: Comparação entre estratégiasclient_evolution_analysis.pdf: Evolução individualMétricas salvas:
results/detailed_metrics_*.csv: Dados completosresults/summary_report.json: Relatório consolidadometrics/client_*/metrics_history.json: Histórico por cliente| Estratégia | Descrição | Quando Usar |
|---|---|---|
| FedAvg | Média ponderada simples | Dados homogêneos |
| FedAdam | Otimização adaptativa | Convergência mais rápida |
| FedYogi | Adam com controle de variância | Dados heterogêneos |
| FedAdagrad | Taxa de aprendizado adaptativa | Dados esparsos |
# Linux/Ubuntu
chmod +x run_all_strategies.sh
./run_all_strategies.sh 15 10
# Windows (usando Git Bash ou WSL)
bash run_all_strategies.sh 15 10
Problema: Clientes não conseguem conectar ao servidor
Soluções:
Verifique o firewall do Windows:
# Permitir porta 8080
netsh advfirewall firewall add rule name="FL Server" dir=in action=allow protocol=TCP localport=8080
Confirme que o servidor está rodando:
netstat -an | findstr :8080
Problema: Out of Memory durante treinamento
Soluções:
utils.pyProblema: "conjunto de treino ou teste vazio"
Soluções:
data/client_X/--strategy: Estratégia de agregação (fedavg, fedadam, etc.)--rounds: Número de rodadas de FL (default: 10)--min-clients: Clientes mínimos para iniciar (default: 3)--client-id: ID do cliente (1, 2 ou 3)--server-address: Endereço IP:porta do servidor--prediction-length: Passos futuros a prever (default: 10)sequence_length: Janela de entrada (default: 60)batch_size: Tamanho do batch (default: 32)learning_rate: Taxa de aprendizado (default: 1e-5)git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Distribuído sob a licença MIT. Veja LICENSE para mais informações.