TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
TProcuraMelhorativa.h
Go to the documentation of this file.
1#pragma once
2
3#include "../TProcura.h"
4
5// um ponto no espaço de estados das soluções completas, é um apontador para um estado
8
9// nomes dos parâmetros fixos na procura melhorativa
13
19
20
22// TProcuraMelhorativa class
24// Author: José Coelho
25// Last revision: 2025-01-30
26// Description:
27// Superclasse de procuras no espaço das soluções completas (a solução é melhorada).
28// As variaveis da classe devem ser apenas de uma solucao, se existir informação
29// sobre a instancia, esta informação deve ser colocada em variaveis estáticas
30// para não serem duplicadas desnecessariamente.
31// A única variavel é o valor da solução que após ser calculada em Avaliar
32// deve ser actualizada (se o valor não estiver actualizado, deve ter -1)
35 public TProcura
36{
37public:
40
42 int custo;
46 int epocas;
47
49 // Métodos para redefinir
51
79 virtual TPonto Duplicar(void) = 0;
80
107 virtual void Copiar(TPonto objecto) { }
108
109 virtual void NovaSolucao(void);
110 // Retorna o valor da solução completa actual. Atribuir o valor a custo
111 virtual int Avaliar(void);
112 // redefinir, para aceitar ações que sejam operadores
113 bool Acao(const char* acao) { return false; }
114 // Método para inicializar os parâmetros (redefinir se forem adicionados parâmetros específicos)
115 void ResetParametros() override;
116
117
119 // Operadores a redefinir para Escalada-do-Monte
121
122 // Operador de vizinhanca (apenas em soluções completas)
123 // chamar a função nesta classe para actualizacao de estatisticas
124 virtual void Vizinhanca(TVector<TPonto>& vizinhos);
125
127 // Algorithmos Evolutivos
129
130 // Operador mutação, altera o estado actual (de acordo com a parametrizacao global)
131 virtual void Mutar(void) { }
132 // Operador cruzamento, cruza os dois elementos a e b, colocando o resultado no estado atual
133 virtual void Cruzamento(TPonto a, TPonto b) { }
134 // Função distância: distancia deste elemento ao elemento a
135 // (opcional para manter os elementos diversos)
136 virtual int Distancia(TPonto a) { return 0; }
137
139 // Algoritmo de procura local: Escalada do Monte
141 // retorna a avaliação do resultado actual
142 int EscaladaDoMonte();
143
145 // Algoritmo de procura local: Algoritmos Geneticos
147 // retorna a avaliação do resultado final
148 int AlgoritmoGenetico();
149
150
151 // Método para teste manual do objecto (chamadas aos algoritmos, construcao de uma solucao manual)
152 void TesteManualX(const char* nome);
153
154 // Chamar sempre que uma solução melhor que a actual e encontrada
156
160 int Indicador(int id) override;
161
163
164
165protected:
166 // métodos internos
167 void Selecao(int& pai, int& mae, TVector<int>& pesos, int total);
170 void VerificaMelhor(TPonto& melhor, TPonto atual);
171 TPonto MelhorAtual(TPonto& atual, TVector<TPonto>& vizinhos, int indice);
172 void ObterExtremos(TVector<TPonto>& populacao, int& minCusto, int& maxCusto);
173 void Explorar() override;
175 int ExecutaAlgoritmo();
176 // Mostrar vizinhos
178 void DebugInicioEM(int ID, TPonto solucao);
179 void DebugOptimoLocal(TPonto solucao);
180 void DebugPassoEM(TPonto solucao);
181 void DebugPassoAG(int pop, int min, int max);
182 void DebugCruzamentoAG(int gPai, int gMae, int gFilho, int mutou);
183};
EIndicadoresConstrutiva
@ indEpocas
Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.
@ indMelhorativa
Marcador para permitir a extensão do enum em subclasses.
@ indGeracoes
número de estados gerados durante a procura
@ probMutacaoAG
@ parametrosMelhorativas
@ populacaoAG
@ distMinimaAG
@ movePrimeiroEM
TProcuraMelhorativa * TPonto
@ indProcura
Marcador para permitir a extensão do enum em subclasses.
Definition TProcura.h:20
@ parametrosProcura
Marcador para permitir a extensão do enum em subclasses.
Definition TProcura.h:47
virtual void NovaSolucao(void)
bool Acao(const char *acao)
void ObterExtremos(TVector< TPonto > &populacao, int &minCusto, int &maxCusto)
int epocas
Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.
virtual void Mutar(void)
void LibertarVector(TVector< TPonto > &vector, int excepto=-1)
virtual void Cruzamento(TPonto a, TPonto b)
int Indicador(int id) override
Redefinição. Ver TProcura::Indicador().
virtual void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
void DebugPassoAG(int pop, int min, int max)
void CalcularAvaliacoes(TVector< TPonto > &vizinhos, int &melhorValor, int &melhorIndice)
void TesteManualX(const char *nome)
provavelmente apagar
TPonto MelhorAtual(TPonto &atual, TVector< TPonto > &vizinhos, int indice)
void DebugOptimoLocal(TPonto solucao)
void DebugMelhorEncontrado(TPonto ponto)
provavalmente apagar
void DebugVizinhos(TVector< TPonto > &vizinhos)
void Explorar() override
definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)
virtual void Vizinhanca(TVector< TPonto > &vizinhos)
void LimparEstatisticas(clock_t &inicio)
Chapar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para...
virtual int Avaliar(void)
void DebugPassoEM(TPonto solucao)
void DebugInicioEM(int ID, TPonto solucao)
int custo
Custo total, atualizada após Avaliar()
virtual int Distancia(TPonto a)
void Selecao(int &pai, int &mae, TVector< int > &pesos, int total)
void DebugCruzamentoAG(int gPai, int gMae, int gFilho, int mutou)
void ResetParametros() override
Inicializa os parametros, indicadores e instâncias.
void VerificaMelhor(TPonto &melhor, TPonto atual)
void OrdemValor(TVector< TPonto > &populacao, TVector< int > &id)
int ExecutaAlgoritmo()
Executa o algoritmo com os parametros atuais.
virtual TPonto Duplicar(void)=0
Cria um objecto que é uma cópia deste.
int geracoes
Número de estados gerados.
Classe base para todas as procuras.
Definition TProcura.h:152
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459