Skip to content

Algoritmo Genético desenvolvido em Python aplicado ao Problema do Caixeiro Viajante.

Notifications You must be signed in to change notification settings

felipeverones/Algoritmo-Genetico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Solução Algorítmica para o Problema do Caixeiro Viajante (PCV)

Sobre o Projeto

Este projeto aborda uma solução computacional para o clássico Problema do Caixeiro Viajante (PCV) utilizando algoritmos genéticos, uma subárea da computação evolutiva. O objetivo é encontrar a rota mais curta que permite a um caixeiro visitar uma série de cidades uma única vez e retornar à cidade de origem, minimizando o custo total de viagem.

Contexto

O Problema do Caixeiro Viajante é um problema NP-difícil na área de otimização combinatória, significando que não existe um algoritmo conhecido que o resolva em tempo polinomial. Assim, abordagens heurísticas como algoritmos genéticos se mostram valiosas, oferecendo soluções aproximadas em tempo razoável.

Tecnologias Utilizadas

  • Python: Linguagem de programação de alto nível, dinâmica e interpretada.
  • DEAP (Distributed Evolutionary Algorithms in Python): Um framework de computação evolucionária que facilita a implementação de algoritmos evolutivos.

Como Funciona

O algoritmo inicia com uma população de soluções aleatórias (rotas). Em cada geração, indivíduos (rotas) são selecionados com base em sua aptidão (distância total da rota) e combinados através de operações de cruzamento e mutação para formar uma nova geração. Esse processo se repete até que se atinjam critérios de parada pré-definidos, como um número máximo de gerações ou uma solução de aptidão satisfatória.

Características

  • Modelagem das Cidades: Utiliza uma representação gráfica onde as cidades são nós e as distâncias entre elas são arestas.
  • Seleção: O algoritmo de seleção por torneio escolhe os indivíduos para reprodução.
  • Cruzamento: O cruzamento parcialmente combinado (CPM) é utilizado para manter a validade das rotas geradas.
  • Mutação: Uma simples troca de índices promove a diversidade genética.
  • Avaliação: A função de aptidão avalia a qualidade das soluções baseada na distância total percorrida.

Instalação e Execução

  1. Pré-requisitos: Certifique-se de ter Python 3.x instalado em seu sistema.

  2. Instale as dependências:

pip install deap numpy
  1. Clone o repositório:
git clone git@github.com:felipeverones/Algoritmo-Genetico.git
cd Algoritmo-Genetico
  1. Execute o script:
python problema_caixeiro_viajante.py

Resultados Esperados

  • O algoritmo deve convergir para uma solução que representa uma das melhores rotas possíveis dadas as condições iniciais e os parâmetros do algoritmo.
  • Estatísticas de execução como a melhor distância encontrada, média e desvio padrão das distâncias das rotas na população final serão apresentadas.

Conclusão

Este projeto demonstra a aplicabilidade e eficácia dos algoritmos genéticos para resolver problemas complexos de otimização, como o Problema do Caixeiro Viajante. Através do uso do DEAP, é possível implementar uma solução robusta e flexível, capaz de encontrar soluções aproximadas para instâncias do problema que seriam inabordáveis por métodos exatos devido à sua complexidade computacional.

About

Algoritmo Genético desenvolvido em Python aplicado ao Problema do Caixeiro Viajante.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages