Skip to content

UnBParadigmas2024-2/2024.2_G5_SMA_Semaforos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Semáforos

Disciplina: FGA0210 - PARADIGMAS DE PROGRAMAÇÃO - T01
Número do Grupo: 05
Paradigma: Sistemas Multiagentes

Alunos

Matrícula Aluno
18/0015311 Danilo Domingo
20/0018442 Gabrielly Assunção
19/0030291 Jackes Fonseca
20/0021541 Karla Chaiane
17/0039803 Lucas Medeiros Rosa
18/0042661 Luís Furtado de Araújo
19/0020814 Vinícius Roriz

Sobre

Este trabalho tem como objetivo explorar o uso do paradigma de sistemas multiagentes (MAS - Multi-Agent Systems) por meio da simulação de tráfego urbano. Para isso, foi utilizado o framework MESA, uma poderosa biblioteca Python voltada para a modelagem e simulação de agentes em ambientes discretos.

Na simulação, agentes representam veículos que interagem em um ambiente composto por ruas, semáforos e cruzamentos. Cada agente possui comportamentos autônomos, como deslocar-se em uma direção específica, respeitar sinais de trânsito e evitar colisões com outros veículos. O ambiente é gerenciado de forma descentralizada, destacando a aplicação prática do paradigma multiagente para resolver problemas complexos, como o gerenciamento do fluxo de tráfego.

Este projeto demonstra como conceitos fundamentais de sistemas multiagentes, como autonomia, interação e adaptação, podem ser aplicados em contextos reais, promovendo uma compreensão mais aprofundada do paradigma estudado.

Uso e Screenshots

Excutando o servidor:

GIF Local

Em funcionamento:

GIF Local

Instalação

Linguagens: Python 3.11 ou superior
Tecnologias: MESA

Para instalar o MESA e suas dependências, utilize o seguinte comando:

pip3 install -r requirements.txt

Para executar o projeto, na pasta raiz, basta executar o servidor:

solara run server.py

Erros

Se durante a instalação de dependências ocorrer o erro error: externally-managed-environment,
significa que o mesa é uma dependência gerenciada externamente. Para isso, instale as dependências utilizando uma virtualenv no projeto:

python3 -m venv semaforos
source semaforos/bin/activate
python3 -m pip install -r requirements.txt

É imperativo o uso de uma versão do Python equivalente ou superior à 3.11, caso contrário ocorrem diversos erros que impedem a execução do projeto.

Vídeo

Clique aqui para assistir o vídeo.

Participações

Apresente, brevemente, como cada membro do grupo contribuiu para o projeto.

Nome do Membro Contribuição Significância da Contribuição para o Projeto (Excelente/Boa/Regular/Ruim/Nula) Comprobatórios (ex. links para commits)
Danilo Domingo Vitoriano Silva Criação da primeira versão de inputs para os usuários Boa Inputs
Gabrielly Assunção Agentes de semáforos, alternância entre os estados e estruturação do documento Execelente https://github.com/UnBParadigmas2024-2/2024.2_G5_SMA_Semaforos/commit/bd225ddeeaa09a0ea0b20788fb65cd7aae3181ca, https://github.com/UnBParadigmas2024-2/2024.2_G5_SMA_Semaforos/commit/4e6dfb674faf0a88fc716e86fd72e31e4cde4128, https://github.com/UnBParadigmas2024-2/2024.2_G5_SMA_Semaforos/commit/d83a5369dd24bb5df3f8cc28b5272e0d237b2632
Jackes Fonseca Atuei na criação do documento de estudo e análise do paradigma e projeto Regular https://github.com/UnBParadigmas2024-2/2024.2_G5_SMA_Semaforos/commit/e0a871bbdfe273fed054729fad55f4d8a8685051
Karla Feliciano Interação do carro com outros agentes Boa Commit
Lucas Medeiros Rosa Implementei o agente pedestre e adicionei o sistema de colisões com carros Excelente Commit
Luís Furtado de Araújo Criação e possibilidade de escalar os posicionamentos no mapa: buildings, traffic lights e intersections nas traffics cells. Documentação fix do problema comum das dependências do meta que está descrita neste Readme. Boa Error installing Mesa, Regra dinâmica para as ruas, Regras de interseção dinâmicas
Vinícius Roriz Criação das classes TrafficLightAgent, CarAgent, TrafficModel, TrafficCell. Implementação dos parâmetros de modelo. Excelente Semáforos, Carro, Parâmetros

Outros

I. Licões Aprendidas

Danilo Domingo

Foi um experiência bem diferente do convencional, a onde tive que aprender como cada agente se comporta a entrar em contato com outro e como eles podem trabalhar de forma autônoma.

Gabrielly Assunção

Minha principal tarefa foi desenvolver a lógica que gerencia a alternância entre os estados (verde, amarelo e vermelho) de forma sincronizada e eficiente. Durante esse processo, enfrentei dificuldades em compreender o paradigma de sistemas multiagentes, pois trata-se de uma abordagem descentralizada que exige uma mudança de mentalidade em relação aos paradigmas mais tradicionais de programação. Essa experiência me ajudou a desenvolver uma nova perspectiva sobre como os agentes podem interagir de maneira autônoma

Jackes Fonseca

Durante o desenvolvimento deste trabalho, diversas lições foram adquiridas, como por exemplo Compreensão do paradigma multiagente e modelagem de cenários realistas, uso de ferramentas e Frameworks e impacto dos parâmetros no desempenho

Karla Feliciano

Apesar de ser um paradigma bastante diferente, utilizar o framework mesa facilitou bastante o entendimento de como os agentes funcionam e interagem entre si.

Lucas Medeiros

Acredito que a maior lição que tive com essa atividade foi o cuidado necessário para modelar os diferentes comportamentos e interações entre os agentes. Dificilmente em outros paradigmas é tão necessário avaliar os corner cases e prever comportamentos emergentes.

Luís Furtado

O uso da ferramenta Mesa no desenvolvimento dos agentes nos reforçou a relevância da descentralização em determinados contextos de sistemas. Observamos que, embora cada agente opere de forma independente, as dinâmicas coletivas entre eles podem gerar fenômenos inesperados, como padrões no fluxo de tráfego e formação de congestionamentos.

Vinícius Roriz

Trabalhar com agentes autônomos destacou a importância da descentralização em sistemas complexos. Cada agente toma decisões localmente, mas as interações entre eles geram comportamentos emergentes, como congestionamentos e padrões de fluxo no tráfego.

II. Percepções

Este trabalho demonstrou a aplicabilidade do paradigma multiagente (MAS) na simulação de tráfego urbano, evidenciando como a interação entre agentes pode fornecer uma visão detalhada e realista de fenômenos complexos, como congestionamentos e padrões de fluxo. O modelo implementado destacou-se pela capacidade de representar comportamentos individuais e suas interações no ambiente simulado, permitindo a análise de métricas relevantes, como tempo médio de viagem, tempos de espera em cruzamentos e padrões de congestionamento. Os resultados mostraram que o uso de sistemas multiagentes oferece uma ferramenta flexível e adaptável para explorar soluções de mobilidade urbana, além de abrir caminhos para aplicações em planejamento de infraestrutura e gestão de tráfego em tempo real. A implementação utilizando o framework MESA reforçou a simplicidade e eficiência na criação de cenários customizados, contribuindo para o aprendizado e experimentação no campo da simulação. Além disso, o trabalho evidenciou os desafios inerentes a simulações realistas, como a necessidade de calibrar parâmetros adequados e as limitações computacionais quando se lida com cenários de grande escala.

Análise do Paradigma

Confira o documento de estudo e análise do paradigma sistemas multiagentes, que explora os fundamentos teóricos e práticos desse modelo computacional, destacando sua aplicação na simulação de tráfego urbano com o framework MESA.

III. Contribuições e Fragilidades

Danilo Domingo

Fiz a primeira versão de inputs, a onde os usuários informavam a quantidade de carros, tamanho do mapa, etc, porém com o desenvolvimento do código ele precisou ser refatorado para que se adequasse melhor aos novos parâmetros.

Gabrielly Assunção

Minha contribuição principal foi a implementação do agente semáforo e o desenvolvimento da lógica de interação entre os estados de verde, amarelo e vermelho, que são cruciais para a simulação do fluxo de tráfego.Entretanto, uma das fragilidades que enfrentei foi a minha dificuldade inicial em compreender e aplicar o paradigma multiagente de maneira eficiente. A descentralização e a autonomia dos agentes foram conceitos desafiadores de assimilar no início do projeto, especialmente em relação ao entendimento de como as interações locais resultam em comportamentos no sistema global.

Jackes Fonseca

Atuei na criação do documento de estudo e análise do paradigma e projeto.

Karla Feliciano

Atuei na implementação de funcionalidades da integração do carro com outros agentes, adicionando algumas regras e validações para adequar ao cenário do mundo real.

Lucas Medeiros

Idealizei e implementei a adição do agente pedestre no sistema, modelando seu comportamento de andar e definindo as eurísticas de movimentação. Além disso também implementei a colisão entre carros e pedestres, e por fim refatorei o código completo do projeto que antes estava em apenas um arquivo.

Luís Furtado

Trabalhei na criação e escalabilidade dinâmica dos posicionamentos no mapa: buildings, traffic lights e intersections nas traffics cells. Além disso, contribui na documentação do readme também do fix das dependências do meta que está descrita neste Readme.

Vinícius Roriz

Trabalhei na conceitualização do projeto e na implementação básica dos agentes e do modelo. A maior parte do tempo foi gasto pesquisando a documentação pois os exemplos disponíveis no repositório do MESA utilizam uma versão mais antiga, e muito foi alterado desde então. Também fiquei responsável pela correção de erros no código e a refatoração de algumas implementações.

IV. Trabalhos Futuros

Embora o modelo atual tenha alcançado seus objetivos iniciais, há diversas possibilidades de extensão e aprimoramento que podem ampliar o impacto e a aplicabilidade prática do trabalho. Entre elas: Expansão do modelo para incluir pedestres e ciclistas: A inclusão de agentes representando pedestres e ciclistas permitiria analisar a interação entre diferentes modos de transporte, contribuindo para o planejamento de soluções mais inclusivas e seguras para todos os usuários das vias urbanas. Essa expansão poderia incluir a simulação de faixas exclusivas, cruzamentos compartilhados e o impacto de medidas como passarelas e ciclovias.

  • Avaliação de políticas de tráfego diversificadas: Simulação de rodízio de veículos para reduzir congestionamentos em horários de pico. Avaliação de estratégias para mudanças dinâmicas no tempo dos semáforos, considerando diferentes horários do dia ou condições de tráfego em tempo real. Testes de impacto de novas políticas públicas, como tarifas de congestionamento urbano (e.g., pedágio em áreas centrais) ou incentivos ao transporte coletivo.
  • Integração com aprendizado de máquina: O uso de aprendizado de máquina pode ajudar a melhorar a adaptação dos agentes, permitindo que aprendam a reagir de forma mais eficiente às mudanças no ambiente de tráfego. Isso incluiria a capacidade de prever congestionamentos e ajustar comportamentos em tempo real.
  • Simulação de redes urbanas reais: A aplicação do modelo em redes viárias reais, utilizando dados provenientes de fontes como OpenStreetMap ou sistemas de monitoramento de tráfego, poderia validar ainda mais sua aplicabilidade e relevância prática.
  • Otimização computacional e escalabilidade: Investir em técnicas de paralelismo e distribuição de carga, utilizando tecnologias como MPI ou integração com a nuvem, permitiria simular cenários maiores e mais complexos sem comprometer o desempenho.
  • Aplicação em contextos emergentes de mobilidade: Investigar o impacto de novas tecnologias, como veículos autônomos e sistemas de carona compartilhada, no tráfego urbano. Esses cenários poderiam fornecer insights sobre como preparar as cidades para o futuro da mobilidade

Fontes

MESA API Documentation. Acesso em: 22 jan. 2024.

MESA Introductory Tutorial. Acesso em: 22 jan. 2024.

MESA Visualization Tutorial. Acesso em: 23 jan. 2024.

MESA Examples: Conway's Game of Life (Fast). Acesso em: 25 jan. 2024.

MESA Migration Guide. Acesso em: 25 jan. 2024.

  • A maior parte dos exemplos disponíveis na internet foram criados usando o MESA 2.0. No Migration Guide estão listadas as mudanças que ocorreram no update 3.0, que é o que estamos utilizando.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages