Travelling_Salesman_Algorithms
Membros públicos | Mostrar lista completa dos membros
Referência à classe GeneticAlgorithm

#include <geneticAlgorithm.h>

Diagrama de heranças da classe GeneticAlgorithm
Inheritance graph
[legenda]
Diagrama de colaboração para GeneticAlgorithm:
Collaboration graph
[legenda]

Membros públicos

 GeneticAlgorithm ()
 
 GeneticAlgorithm (Graph &graph)
 
 GeneticAlgorithm (Graph &&graph)
 
void run ()
 Define o número de gerações, o tamanho da população e a taxa de mutação para o algoritmo genético. Depois, cria a população de forma aleatória e começa a realizar mutações para cada geração. Mais...
 
void createRandomPath (int numVertices, vector< int > &cities)
 Cria um caminho hamiltoniano aleatório. Mais...
 
void mutateIndividual (Individual &individual, int numVertices, int numOfTries)
 Tenta mutar um indivíduo algumas vezes para que ele se torne melhor. Mais...
 
void mutatePopulation (vector< Individual > &population, int mutationRate, int numVertices, Individual &bestPath)
 Faz as mutações em toda a população baseando-se na taxa de mutação. Mais...
 
bool createIndividual (int numVertices, int i, Individual &individual, vector< Individual > &population)
 Cria um caminho para um indivíduo e checa se já existe outro indivíduo com o mesmo caminho. Mais...
 
void createRandomPopulation (vector< Individual > &population, int populationSize, int numVertices, Individual &bestPath)
 Gera uma população inicial para o algoritmo genético. Cada indivíduo será uma tupla (caminho, custoDoCaminho) onde 'caminho' é um vetor com os índices dos vértices do caminho hamiltoniano e o 'custoDoCaminho' é autoexplicativo. Mais...
 
- Membros públicos herdados de TSP
 TSP ()
 
 TSP (string name)
 
 TSP (Graph &graph, string name)
 
 TSP (Graph &&graph, string name)
 
void setGraph (Graph &graph)
 
void setName (string name)
 
string getName ()
 
void setTotalTime (double totalTime)
 
double getTotalTime ()
 
void printClock ()
 
double runAndCountTime ()
 
void printPath (int *array, int n)
 

Outros membros herdados

- Membros protegidos herdados de TSP
double sumPath (int *array, int arraySize)
 
double sumPath (int *array)
 
void showResult ()
 
- Atributos Protegidos herdados de TSP
Graph graph
 
double distance
 
unique_ptr< int[]> cities
 
string name
 
double time
 
double totalTime = 0
 

Documentação dos Construtores & Destrutor

◆ GeneticAlgorithm() [1/3]

GeneticAlgorithm::GeneticAlgorithm ( )

◆ GeneticAlgorithm() [2/3]

GeneticAlgorithm::GeneticAlgorithm ( Graph graph)

◆ GeneticAlgorithm() [3/3]

GeneticAlgorithm::GeneticAlgorithm ( Graph &&  graph)

Documentação dos métodos

◆ createIndividual()

bool GeneticAlgorithm::createIndividual ( int  numVertices,
int  i,
Individual individual,
vector< Individual > &  population 
)

Cria um caminho para um indivíduo e checa se já existe outro indivíduo com o mesmo caminho.

Parâmetros
numVerticesNúmero de vértices do grafo.
iVariável de controle do loop externo. Representa também o número de indivíduos gerados com sucesso - 1.
individualIndivíduo que receberá o novo caminho.
populationPopulação do algoritmo.
Retorna
true caso o indivíduo é válido, ou seja, não existe outro com o mesmo caminho.
false caso contrário.

◆ createRandomPath()

void GeneticAlgorithm::createRandomPath ( int  numVertices,
vector< int > &  cities 
)

Cria um caminho hamiltoniano aleatório.

Parâmetros
numVerticesNúmero de vértices do grafo.
citiesVetor que receberá esse caminho.

◆ createRandomPopulation()

void GeneticAlgorithm::createRandomPopulation ( vector< Individual > &  population,
int  populationSize,
int  numVertices,
Individual bestPath 
)

Gera uma população inicial para o algoritmo genético. Cada indivíduo será uma tupla (caminho, custoDoCaminho) onde 'caminho' é um vetor com os índices dos vértices do caminho hamiltoniano e o 'custoDoCaminho' é autoexplicativo.

Parâmetros
populationVetor que receberá a população.
populationSizeTamanho da população.
numVerticesNúmero de vértices que o grafo tem.
bestPathAo gerar a população, esse parâmetro será populado com o melhor indivíduo até o momento.

◆ mutateIndividual()

void GeneticAlgorithm::mutateIndividual ( Individual individual,
int  numVertices,
int  numOfTries = 3 
)

Tenta mutar um indivíduo algumas vezes para que ele se torne melhor.

Parâmetros
individualIndivíduo a ser mutado.
numVerticesNúmero de vértices do grafo.
numOfTriesNúmero de tentativas.

◆ mutatePopulation()

void GeneticAlgorithm::mutatePopulation ( vector< Individual > &  population,
int  mutationRate,
int  numVertices,
Individual bestPath 
)

Faz as mutações em toda a população baseando-se na taxa de mutação.

Parâmetros
populationPopulação do algoritmo.
mutationRateTaxa de mutação.
numVerticesNúmero de vértices do grafo.
bestPathAo mutar a população, esse indivíduo se transformará no novo melhor indivíduo dela.

◆ run()

void GeneticAlgorithm::run ( )
virtual

Define o número de gerações, o tamanho da população e a taxa de mutação para o algoritmo genético. Depois, cria a população de forma aleatória e começa a realizar mutações para cada geração.

Implementa TSP.


A documentação para esta classe foi gerada a partir dos seguintes ficheiros: