Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modelo Gravitacional de Viagens Duplamente Restringido (GUI)

Autores: Danilo Ferreira e Samuel Sousa Disciplina: Análise e Planejamento de Sistema de Transportes

1. Introdução

Este projeto implementa o Modelo Gravitacional de Alocação de Viagens para estimar uma matriz de deslocamentos Origem-Destino (OD). O diferencial deste modelo é a aplicação do método de Fator Duplo (Doubly Constrained / Furness), que garante que os totais de viagens geradas ($O_i$) e atraídas ($D_j$) por cada zona na matriz estimada correspondam aos totais conhecidos.

Esta versão utiliza uma Interface Gráfica do Utilizador (GUI) desenvolvida com pywebview para facilitar a interação, visualização de dados e análise de cenários.

2. Metodologia: O Modelo de Fator Duplo

O modelo parte do princípio de que a atratividade entre duas zonas é proporcional à sua capacidade de geração ($O_i$) e atração ($D_j$), e inversamente proporcional a uma função de impedância ($f(C_{ij})$) entre elas.

Para garantir que as restrições de origem e destino sejam satisfeitas, o modelo introduz dois fatores de balanceamento iterativos, $A_i$ e $B_j$, calculados pelo Método de Furness. A equação completa do modelo é:

$T_{ij} = A_i \cdot O_i \cdot B_j \cdot D_j \cdot f(C_{ij})$

Fatores de Balanceamento A_i e B_j

Fórmulas para os fatores de balanceamento $A_i$ e $B_j$

Onde:

  • $T_{ij}$: Viagens estimadas da origem i para o destino j.
  • $O_i$ e $D_j$: Totais conhecidos de viagens que saem da zona i e chegam na zona j.
  • $A_i$ e $B_j$: Fatores de balanceamento calculados iterativamente.
  • $f(C_{ij})$: Função de impedância, que pode ser configurada (exponencial ou potência) e considera custos como tempo, distância e preço.

O núcleo do modelo (core/gravitational_model.py) implementa a rotina iterativa de Furness que ajusta $A_i$ e $B_j$ até a convergência.

3. Estrutura do Projeto

O projeto está organizado nos seguintes diretórios principais:

  • main_gui.py: Ponto de entrada da aplicação GUI.
  • api.py: Interface entre o backend Python e a GUI (JavaScript).
  • core/: Contém a lógica central do modelo:
    • gravitational_model.py: Implementação do algoritmo de Furness.
    • analysis_service.py: Orquestra a execução das análises e cálculo de métricas.
    • data_models.py: Define estruturas de dados (Dataclasses) para entrada e resultados.
  • services/: Módulos para tarefas específicas:
    • data_loader.py: Carregamento de dados (Excel, exemplo, cenários).
    • visualization.py: Geração de gráficos e heatmaps (usados no PDF e potencialmente na GUI).
    • pdf_exporter.py: Criação de relatórios em PDF.
    • exceptions.py: Definição de exceções personalizadas.
  • gui/: Arquivos da interface gráfica:
    • index.html: Estrutura principal da interface.
    • css/: Folhas de estilo.
    • js/: Lógica JavaScript para interatividade da GUI.
    • assets/: Recursos como Bootstrap.
  • config/: Configurações da aplicação:
    • app_config.py: Parâmetros do algoritmo (ex: iterações, tolerância).
  • cenarios.json: Definição dos cenários de análise pré-configurados.
  • tests/: Testes unitários para o modelo.

4. Funcionalidades

A aplicação GUI oferece as seguintes funcionalidades:

  1. Gestão de Dados:
    • Carregar dados de um ficheiro Excel (.xlsx) ou usar um conjunto de dados de exemplo.
    • Editar os dados de entrada (zonas, O/D, matrizes de custo) diretamente na interface.
    • Adicionar ou remover zonas dinamicamente.
    • Exportar os dados atuais para um ficheiro Excel.
    • Baixar um modelo (.xlsx) vazio para preenchimento.
  2. Análise Completa de Cenários:
    • Executa uma análise de sensibilidade com cenários pré-definidos (cenarios.json), variando os pesos $\alpha, \beta, \gamma$.
    • Exibe uma tabela comparativa dos resultados e métricas na GUI.
    • Permite a exportação de um relatório detalhado em PDF.
  3. Cenário Interativo:
    • Permite ao utilizador definir valores customizados para os parâmetros $\alpha, \beta, \gamma$ através de sliders.
    • Visualiza a matriz de viagens e métricas resultantes em tempo real.
    • Mantém um histórico comparativo dos custos para os diferentes parâmetros testados.
  4. Dashboard e Ferramentas:
    • Apresenta um dashboard com métricas chave do cenário base.
    • Inclui ferramentas para:
      • Calcular e visualizar o Índice de Acessibilidade por zona.
      • Analisar a proporção de viagens intrazonais vs. interzonais.
      • Gerar uma matriz de diferença (absoluta ou percentual) entre dois cenários selecionados.
  5. Configurações:
    • Permite ajustar parâmetros do algoritmo de Furness (máx. iterações, tolerância).
    • Permite escolher a função de impedância (Potência ou Exponencial).
    • Permite ativar/desativar o cálculo de viagens intrazonais.

5. Como Executar

  1. Configurar Ambiente Virtual (Recomendado):
    python -m venv .venv
    # Windows
    .\.venv\Scripts\activate
    # macOS/Linux
    source .venv/bin/activate
  2. Instalar as dependências:
    pip install -r requirements.txt
  3. Executar a aplicação:
    python main_gui.py

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages