Projetos
Academic Group Project·2026·1.º Semestre 2025/2026

Simulador de Trânsito Urbano Distribuído

Motor de simulação de trânsito urbano distribuído multi-processo em Java com 10 nós JVM independentes a comunicar por sockets TCP nativos, concorrência multi-thread, políticas adaptativas de semáforos, algoritmos de encaminhamento dinâmico e dashboard gráfico em Swing a 20 FPS.

Secção 01

Simulando trânsito urbano com nós distribuídos multi-processo.

Desenvolvido para a unidade curricular de Sistemas Distribuídos do Politécnico do Porto, este sistema simula o fluxo complexo de veículos (Motos, Carros, Camiões) numa rede urbana com múltiplos cruzamentos, onde cada componente executa como um processo independente do sistema operacional em JVMs separadas.

A solução implementa comunicação Cliente-Servidor via sockets TCP com serialização de envelopes de mensagens, estruturas de dados concorrentes (ConcurrentLinkedQueue, AtomicLong), threads dedicadas para semáforos e um dashboard gráfico desktop em Java Swing com animações de mapa a 20 FPS em tempo real.

10Processos JVM Independentes
4Políticas de Semáforo
4Algoritmos de Encaminhamento
20 FPSAnimação de Mapa em Java Swing
Simulador de Trânsito Urbano Distribuído

Animação de mapa interativo em tempo real a 20 FPS desenhado em Java Swing com rastreio de posições dos veículos

Secção 02

O Problema & Desafios Chave

A simulação de trânsito urbano de elevada densidade exige a coordenação de componentes de rede distribuídos sem pontos únicos de estrangulamento, garantindo o acompanhamento preciso dos veículos, formação de filas e ciclos semafóricos.

O sistema desacopla a geração de veículos (EntranceProcess), o processamento de filas e semáforos (IntersectionProcess), o registo de destinos (ExitProcess) e a visualização em tempo real (Coordinator) ao longo de 10 processos independentes.

Desafios Chave de Engenharia
  • Coordenação de 10 processos JVM concorrentes sobre sockets TCP customizados sem perda de mensagens nem condições de corrida
  • Conceção de um envelope de serialização binária TCP suportando 11 tipos distintos de eventos e mensagens de métricas
  • Implementação de políticas adaptativas de semáforos em tempo real calculando a densidade de filas (AdaptiveDensityPolicy) e tempos de espera (AdaptiveWaitTimePolicy)
  • Desenvolvimento de algoritmos de encaminhamento dinâmico de veículos baseados em filas (QueueBasedRoutingPolicy) com cache local de métricas
  • Construção de um dashboard gráfico interativo e analítico a 20 FPS em Java Swing puro (Graphics2D) sem bibliotecas externas
Secção 03

Arquitetura & Decisões Técnicas

Arquitetura distribuída multi-processo com 10 nós JVM independentes comunicando via Sockets TCP utilizando serialização de objetos Java e protocolo de envelope personalizado.

Diagrama de Topologia & Fluxo de Componentes
Loading architecture topology...
Porquê Esta Arquitetura
  • Isolamento real de processos: falhas num nó não causam falha em cascata, mimetizando nós distribuídos reais
  • Comunicação assíncrona por sockets TCP evita o bloqueio do fluxo de veículos entre cruzamentos
  • Threads dedicadas para controlo de semáforos garantem temporização precisa independente do I/O de rede
  • Coordenador centralizado agrega métricas e desenha a GUI a 20 FPS sem alterar a lógica da simulação
Secção 04

Stack Tecnológica & Infraestrutura

OpenJDKJava
Socket.ioTCP Sockets
Multithreading
Java Swing