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 Class Referenceabstract

#include <TProcuraMelhorativa.h>

Inheritance diagram for TProcuraMelhorativa:
Collaboration diagram for TProcuraMelhorativa:

Public Member Functions

 TProcuraMelhorativa (void)
 
 ~TProcuraMelhorativa (void)
 
virtual TPonto Duplicar (void)=0
 Cria um objecto que é uma cópia deste.
 
virtual void Copiar (TPonto objecto)
 Fica com uma cópia do objecto.
 
virtual void NovaSolucao (void)
 
virtual int Avaliar (void)
 
bool Acao (TString acao)
 
void ResetParametros () override
 Inicializa os parâmetros, indicadores e instâncias.
 
bool Parar (void)
 Verifica se a procura deve ser interrompida.
 
virtual void Vizinhanca (TVector< TPonto > &vizinhos)
 
virtual void Mutar (void)
 
virtual void Cruzamento (TPonto a, TPonto b)
 
virtual int Distancia (TPonto a)
 
int EscaladaDoMonte ()
 
int AlgoritmoGenetico ()
 
int AlgoritmoEvolutivo ()
 
void DebugMelhorEncontrado (TPonto ponto)
 
int64_t Indicador (int id) override
 Redefinição. Ver TProcura::Indicador().
 
void Inicializar (void)
 Inicializar a instância. No final, chamar NovaSolucao() para inicializar o estado.
 
void LimparEstatisticas ()
 Chamar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução.
 
- Public Member Functions inherited from TProcura
 TProcura (void)
 
virtual ~TProcura (void)
 
virtual void Gravar (void)
 
virtual void Debug (bool completo=true)
 Mostra o estado no ecrã, para debug.
 
virtual void TesteManual (TString nome)
 Inicializa a interação com o utilizador.
 
virtual void TesteValidacao (TVector< int > instancias, TVector< int > impossiveis, TVector< int > referencias, TString fichSolucoes, TString fichResultados="")
 Executa testes de validação, executando cada solução na instância respetiva, e verificando a sua validade bem como características.
 
virtual void RelatorioValidacao (TVector< TResultado > resultados, TVector< int > referencias)
 
virtual bool Validar (TVector< TString > solucao)
 Verifica a validade de uma solução para a instância atual.
 
virtual void TesteEmpirico (TVector< int > instancias, TString ficheiro="")
 Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.
 
virtual void TesteEmpiricoGestor (TVector< int > instancias, TString ficheiro="")
 Teste empírico com modo mestre-escravo (este é o mestre)
 
virtual void TesteEmpiricoTrabalhador (TVector< int > instancias, TString ficheiro="")
 Teste empírico com modo mestre-escravo (este é o escravo)
 
virtual void main (int argc, char *argv[], TString nome)
 Inicializa a interação com o utilizador.
 
virtual void ExecucaoTerminada ()
 Chamar após a execução do algoritmo. Grava o tempo consumido.
 
virtual void MostrarSolucao ()
 definir para visualizar a solução
 
virtual TVector< int64_tCodificarSolucao ()
 retorna um vetor de inteiros com a codificação da solução (esta codificação será adicionada aos indicadores, no ficheiro CSV de resultados)
 
virtual TVector< TStringSolucao ()
 retorna uma solução no formato do TResultado, para ser gravada em ficheiro de soluções, ou visualizada (pode ser utilizada para mostrar a solução, ou para gravar a solução num formato mais legível)
 
bool TempoExcedido ()
 
bool IteracoesExcedido ()
 
int Parametro (int id) const
 
intParametro (int id)
 
bool ParametroAtivo (int id, TVector< int > *valores=NULL) const
 

Public Attributes

int custo = -1
 Custo total, atualizada após Avaliar()
 

Static Public Attributes

static int lowerBound = 0
 Lower Bound, se existir.
 
static int geracoes = 0
 Número de estados gerados.
 
static int epocas = 0
 Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.
 
static const chardebugPrefixo = ""
 Utilizar como prefixo em cada linha no método Debug() do estado.
 
- Static Public Attributes inherited from TProcura
static TParametro instancia = { "",1,1,1 }
 ID da instância atual, a ser utilizado em SolucaoVazia().
 
static TString ficheiroInstancia = ""
 prefixo do nome ficheiro de uma instância - editado pelo utilizador Caso não seja nulo, utilizar como prefixo, concatenando com ID da instância, para obter o ficheiro da instância Pode ser utilizado para gravar a instãncia num novo formato, colocando um indicador ativo que é chamado após a execução
 
static TString ficheiroGravar = ""
 prefixo do nome do ficheiro para gravar a instância para ficheiro (terá sido gerada)
 
static TVector< TParametroparametro
 Parâmetros a serem utilizados na configuração atual.
 
static TVector< TIndicadorindicador
 Indicadores que podem ser calculados após a execução, quer com informação da instãncia, quer com resultado da última corrida.
 
static TVector< intindAtivo
 
static TVector< TVector< int > > configuracoes
 Conjuntos de configurações para teste empírico.
 
static int resultado = 0
 Resultado retornado pelo algoritmo na última execução.
 
static double tempo = 0
 tempo consumido na última execução.
 
static int iteracoes = 0
 Número total de iterações realizadas na última execução.
 
static clock_t instanteFinal = 0
 Instante final (deadline) da corrida atual.
 
static bool memoriaEsgotada = false
 Flag indicando problemas de memória esgotada.
 
static int mpiID = 0
 MPI - rank do processo.
 
static int mpiCount = 1
 MPI - número de processos.
 
static int modoMPI = 0
 Modo MPI.
 
static int gravarSolucao = 0
 Gravar solução CSV (todas as ações)
 

Protected Member Functions

void Selecao (int &pai, int &mae, TVector< int > &pesos, int total)
 
void OrdemValor (TVector< TPonto > &populacao, TVector< int > &id)
 
void CalcularAvaliacoes (TVector< TPonto > &vizinhos, int &melhorValor, int &melhorIndice)
 
void VerificaMelhor (TPonto &melhor, TPonto atual)
 
bool VerificaMelhor (TPonto atual)
 
int MelhorCusto (TVector< TPonto > &populacao, bool inverter=false)
 
TPonto MelhorAtual (TPonto &atual, TVector< TPonto > &vizinhos, int indice)
 
void ObterExtremos (TVector< TPonto > &populacao, int &minCusto, int &maxCusto)
 
void Explorar () override
 definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)
 
void LibertarVector (TVector< TPonto > &vector, int excepto=-1)
 
int ExecutaAlgoritmo ()
 Executa o algoritmo com os parametros atuais.
 
void DebugInicioEM (int ID, TPonto solucao)
 
void DebugOptimoLocal (TPonto solucao)
 
void DebugPassoEM (TPonto solucao)
 
void DebugPassoAG (int pop, int min, int max)
 
void DebugCruzamentoAG (int gPai, int gMae, int gFilho, int mutou)
 
TVector< TPontoCompletarPopulacaoAE (TVector< TPonto > &populacao)
 
TVector< TPontoSelecionarPaisAE (TVector< TPonto > &populacao)
 
TVector< TPontoReproduzirAE (TVector< TPonto > &pais, TVector< TPonto > &populacao)
 
TVector< TPontoSelecionarSobreviventesAE (TVector< TPonto > &populacao, TVector< TPonto > &descendentes)
 
TVector< TPontoAplicarDiversidadeAE (TVector< TPonto > &populacao)
 
void DebugGeracaoAE (int epoca, TVector< TPonto > &populacao)
 
void DebugPopulacaoAE (TVector< TPonto > &populacao, TString titulo)
 
void DebugDiversidadeAE (TVector< TPonto > &populacao, TString titulo)
 
void DebugID (int id, int pop)
 
void DiversidadeAE (TVector< TPonto > &populacao, int &minDist, int &maxDist, int &avgDist, int &melhorPior)
 
- Protected Member Functions inherited from TProcura
void ExecutaTarefa (TVector< TResultado > &resultados, int inst, int conf)
 Executa uma tarefa num teste empírico.
 
void InserirRegisto (TVector< TResultado > &resultados, int inst, int conf)
 Insere um novo registo de resultados.
 
int64_t Registo (TResultado &resultado, int id)
 Procura um registo com determinado id.
 
void Registo (TResultado &resultado, int id, int64_t valor)
 Atualiza o valor de um registo.
 
void MostraParametros (int detalhe=1, TVector< int > *idParametros=NULL, TString titulo="")
 Mostra os parâmetros atuais.
 
void MostraIndicadores ()
 Mostra os indicadores definidos.
 
void MostrarConfiguracoes (int detalhe, int atual=-1)
 Mostra as configurações disponíveis.
 
bool EditarIndicadores ()
 Permite ao utilizador editar os indicadores a utilizar.
 
void EditarParametros ()
 Permite ao utilizador editar os parâmetros.
 
void EditarConfiguracoes ()
 Permite ao utilizador editar as configurações.
 
void MostraRelatorio (TVector< TResultado > &resultados, bool ultimo=false)
 Mostra um relatório dos resultados.
 
void ConfiguracaoAtual (TVector< int > &parametros, int operacao)
 Grava ou lê a configuração atual.
 
int NovaConfiguracao (TVector< int > &parametros)
 Adiciona uma nova configuração se ainda não existir.
 
int MelhorResultado (TResultado base, TResultado alternativa)
 Compara dois resultados para determinar o melhor.
 
void CalculaTorneio (TVector< TResultado > &resultados)
 Calcula o torneio entre várias configurações.
 
void MostrarTorneio (TVector< TVector< int > > &torneio, bool jogo=false)
 Mostra os resultados do torneio.
 
void BarraTorneio (bool nomes)
 Mostra a barra de progresso ou nomes do torneio.
 
TVector< TResultadoExtrairConfiguracao (TVector< TResultado > &resultados, int configuracao)
 Extrai resultados de uma determinada configuração.
 
void SolicitaInstancia ()
 Solicita ao utilizador o ID da instância a utilizar, permitindo alterar também o prefixo do ficheiro.
 
TVector< intSolicitaInstancias ()
 Solicita ao utilizador uma lista de instâncias.
 
bool RelatorioCSV (TVector< TResultado > &resultados, TString ficheiro, bool parametros=true)
 Gera um relatório CSV com os resultados.
 
void InserirConfiguracoes (TString str, TVector< int > &base)
 Insere configurações a partir de uma string.
 
void InserirConfiguracoes (TVector< int > &base, TVector< int > &produto, TVector< TVector< int > > &valores)
 Insere configurações gerando o produto cartesiano de valores.
 
void AjudaUtilizacao (TString programa)
 Mostra ajuda de utilização do programa.
 
void DebugTabela (ENivelDebug nivel, TVector< int >tabela, TString tipo="", TString prefixo="", int modoCor=0, bool duplaColuna=false)
 Mostra uma tabela de inteiros, 10 elementos por linha, apenas se o nível de debug for igual ou superior.
 
bool JuntarCSV (TString ficheiro)
 Juntar ficheiros CSV gerados por diferentes processos MPI em um único ficheiro.
 
void TesteInicio (TVector< int > &instancias, TVector< int > &configAtual)
 arranque de teste, auxiliar aos Testes Empíricos
 
void TesteFim ()
 

Additional Inherited Members

- Static Public Member Functions inherited from TProcura
static int NovoValor (TString prompt)
 
static TString NovoTexto (TString prompt)
 
static bool Debug (ENivelDebug tipo, bool exato, const char *fmt,...)
 Mostra uma informação de debug, se o nível de debug for suficiente.
 
static TString MostraTempo (double segundos)
 Mostra tempo num formato humano.
 
static void MostraCaixa (TVector< TString > titulo, ECaixaParte parte, TVector< int > largura, bool aberta=true, int identacao=0)
 
static void MostraCaixa (TString titulo, ECaixaParte parte, int largura=70, bool aberta=true, int identacao=0, const char *icon="")
 
static void MostraCaixa (TVector< TString > textos, int largura=70, bool aberta=true, int identacao=0)
 
static void Mensagem (TString titulo, const char *fmt,...)
 
static void MostraConjunto (TVector< int > valores, const char *etiqueta)
 
static void DebugHSL (float h=-1, float s=1.0, float l=0.2, bool fundo=true)
 Muda a cor (fundo/letra) com HSL.
 
- Static Protected Member Functions inherited from TProcura
static int Dominio (int &variavel, int min=INT_MIN, int max=INT_MAX)
 Limita o domínio de um parâmetro inteiro.
 
static void InicializaMPI (int argc, char *argv[])
 Inicializa o ambiente MPI, se aplicável.
 
static void FinalizaMPI ()
 Finaliza o ambiente MPI, se aplicável.
 
static double Cronometro (enum ECronometro id=CONT_ALGORITMO, bool inicializar=false)
 retorna o tempo em segundos desde que o cronómetro foi inicializado
 

Detailed Description

Definition at line 39 of file TProcuraMelhorativa.h.

Constructor & Destructor Documentation

◆ TProcuraMelhorativa()

TProcuraMelhorativa::TProcuraMelhorativa ( void  )

Definition at line 19 of file TProcuraMelhorativa.cpp.

◆ ~TProcuraMelhorativa()

TProcuraMelhorativa::~TProcuraMelhorativa ( void  )

Definition at line 24 of file TProcuraMelhorativa.cpp.

Member Function Documentation

◆ Acao()

bool TProcuraMelhorativa::Acao ( TString  acao)
inline

Definition at line 120 of file TProcuraMelhorativa.h.

◆ AlgoritmoEvolutivo()

int TProcuraMelhorativa::AlgoritmoEvolutivo ( )

Definition at line 376 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AlgoritmoGenetico()

int TProcuraMelhorativa::AlgoritmoGenetico ( )

Definition at line 243 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ AplicarDiversidadeAE()

TVector< TPonto > TProcuraMelhorativa::AplicarDiversidadeAE ( TVector< TPonto > &  populacao)
protected

Definition at line 878 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Avaliar()

int TProcuraMelhorativa::Avaliar ( void  )
virtual

Reimplemented in COitoDamas, COitoDamasCI, COitoDamasCP, CParticao, CParticaoCB, TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, and TCodificacaoReal.

Definition at line 79 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CalcularAvaliacoes()

void TProcuraMelhorativa::CalcularAvaliacoes ( TVector< TPonto > &  vizinhos,
int melhorValor,
int melhorIndice 
)
protected

Definition at line 228 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CompletarPopulacaoAE()

TVector< TPonto > TProcuraMelhorativa::CompletarPopulacaoAE ( TVector< TPonto > &  populacao)
protected

Definition at line 535 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Copiar()

virtual void TProcuraMelhorativa::Copiar ( TPonto  objecto)
inlinevirtual

Fica com uma cópia do objecto.

Note
Obrigatória a redefinição.

Este método tem de ser criado na subclasse, de modo a um estado poder ficar igual a outro. As variáveis de estado, devem ser todas copiadas.

Deve garantir que as variáveis copiadas sejam suficientes para reconstruir o estado corretamente. No entanto, uma instância pode ter dados que não mudam em cada estado. Essas variáveis não precisam de estar no estado, e podem ser alocadas de forma estática na subclasse, não sendo necessário copiar nesta função.

A não ser que exista uma estrutura de dados completa, o modelo de código em baixo pode ser facilmente reproduzido para qualquer subclasse.

Note
Não é preciso copiar as variáveis da classe TProcuraConstrutiva, pai, custo, heuristica.
See also
Sucessores() e Heuristica()
void CSubClasse::Copiar(TPonto objecto) {
// copiar todas as variáveis do estado
variavel = obj.variavel;
}
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:575

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, CParticao, and CProblemaArtificial.

Definition at line 114 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

◆ Cruzamento()

virtual void TProcuraMelhorativa::Cruzamento ( TPonto  a,
TPonto  b 
)
inlinevirtual

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.

Definition at line 145 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

◆ DebugCruzamentoAG()

void TProcuraMelhorativa::DebugCruzamentoAG ( int  gPai,
int  gMae,
int  gFilho,
int  mutou 
)
protected

Definition at line 333 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugDiversidadeAE()

void TProcuraMelhorativa::DebugDiversidadeAE ( TVector< TPonto > &  populacao,
TString  titulo 
)
protected

Definition at line 452 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugGeracaoAE()

void TProcuraMelhorativa::DebugGeracaoAE ( int  epoca,
TVector< TPonto > &  populacao 
)
protected

Definition at line 400 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugID()

void TProcuraMelhorativa::DebugID ( int  id,
int  pop 
)
protected

Definition at line 496 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugInicioEM()

void TProcuraMelhorativa::DebugInicioEM ( int  ID,
TPonto  solucao 
)
protected

Definition at line 176 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugMelhorEncontrado()

void TProcuraMelhorativa::DebugMelhorEncontrado ( TPonto  ponto)

Definition at line 943 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugOptimoLocal()

void TProcuraMelhorativa::DebugOptimoLocal ( TPonto  solucao)
protected

Definition at line 170 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugPassoAG()

void TProcuraMelhorativa::DebugPassoAG ( int  pop,
int  min,
int  max 
)
protected

Definition at line 339 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugPassoEM()

void TProcuraMelhorativa::DebugPassoEM ( TPonto  solucao)
protected

Definition at line 164 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DebugPopulacaoAE()

void TProcuraMelhorativa::DebugPopulacaoAE ( TVector< TPonto > &  populacao,
TString  titulo 
)
protected

Definition at line 434 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Distancia()

virtual int TProcuraMelhorativa::Distancia ( TPonto  a)
inlinevirtual

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.

Definition at line 148 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

◆ DiversidadeAE()

void TProcuraMelhorativa::DiversidadeAE ( TVector< TPonto > &  populacao,
int minDist,
int maxDist,
int avgDist,
int melhorPior 
)
protected

Definition at line 503 of file TProcuraMelhorativa.cpp.

Here is the caller graph for this function:

◆ Duplicar()

virtual TPonto TProcuraMelhorativa::Duplicar ( void  )
pure virtual

Cria um objecto que é uma cópia deste.

Note
Obrigatória a redefinição.

Este método tem de ser criado na subclasse, de modo a criar uma cópia do mesmo tipo. O código da subclasse geralmente segue um padrão e pode utilizar o modelo abaixo, aproveitando o método Copiar(). É especialmente útil na função de Sucessores(), na geração de um novo estado.

Returns
Retorna o novo estado, acabado de gerar.
Note
Caso exista falha de memória, colocar a variável memoriaEsgotada a true, para tentativa de terminar a execução de forma graciosa.
TPonto CSubClasse::Duplicar(void)
{
if(clone!=NULL)
clone->Copiar(this);
else
return clone;
}
virtual void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
Definition TProcura.h:583

Implemented in COitoDamas, CParticao, COitoDamas, COitoDamasCI, COitoDamasCP, CParticao, CParticaoCB, CProblemaArtificial, TCodificacaoBinaria, TCodificacaoInteira, and TCodificacaoPermutacao.

Here is the caller graph for this function:

◆ EscaladaDoMonte()

int TProcuraMelhorativa::EscaladaDoMonte ( )

Definition at line 92 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ ExecutaAlgoritmo()

int TProcuraMelhorativa::ExecutaAlgoritmo ( )
protectedvirtual

Executa o algoritmo com os parametros atuais.

Note
Redefinição necessária

No caso de adicionar algum algoritmo, chame o algoritmo com base em Parametro(ALGORITMO) Se TesteManual() não for utilizado, esta função pode ser chamada diretamente, desde que os parâmetros necessários já estejam configurados corretamente.

Reimplemented from TProcura.

Definition at line 969 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ Explorar()

void TProcuraMelhorativa::Explorar ( )
overrideprotectedvirtual

definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)

Reimplemented from TProcura.

Definition at line 979 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ Indicador()

int64_t TProcuraMelhorativa::Indicador ( int  id)
overridevirtual

Redefinição. Ver TProcura::Indicador().

Reimplemented from TProcura.

Definition at line 954 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ Inicializar()

void TProcuraMelhorativa::Inicializar ( void  )
inlinevirtual

Inicializar a instância. No final, chamar NovaSolucao() para inicializar o estado.

Reimplemented from TProcura.

Definition at line 182 of file TProcuraMelhorativa.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LibertarVector()

void TProcuraMelhorativa::LibertarVector ( TVector< TPonto > &  vector,
int  excepto = -1 
)
protected

Definition at line 184 of file TProcuraMelhorativa.cpp.

Here is the caller graph for this function:

◆ LimparEstatisticas()

void TProcuraMelhorativa::LimparEstatisticas ( )
virtual

Chamar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução.

Reimplemented from TProcura.

Definition at line 963 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MelhorAtual()

TProcuraMelhorativa * TProcuraMelhorativa::MelhorAtual ( TPonto atual,
TVector< TPonto > &  vizinhos,
int  indice 
)
protected

Definition at line 220 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MelhorCusto()

int TProcuraMelhorativa::MelhorCusto ( TVector< TPonto > &  populacao,
bool  inverter = false 
)
protected

Definition at line 211 of file TProcuraMelhorativa.cpp.

Here is the caller graph for this function:

◆ Mutar()

virtual void TProcuraMelhorativa::Mutar ( void  )
inlinevirtual

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.

Definition at line 143 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

◆ NovaSolucao()

virtual void TProcuraMelhorativa::NovaSolucao ( void  )
inlinevirtual

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.

Definition at line 116 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

◆ ObterExtremos()

void TProcuraMelhorativa::ObterExtremos ( TVector< TPonto > &  populacao,
int minCusto,
int maxCusto 
)
protected

Definition at line 366 of file TProcuraMelhorativa.cpp.

Here is the caller graph for this function:

◆ OrdemValor()

void TProcuraMelhorativa::OrdemValor ( TVector< TPonto > &  populacao,
TVector< int > &  id 
)
protected

Definition at line 346 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Parar()

bool TProcuraMelhorativa::Parar ( void  )
inlinevirtual

Verifica se a procura deve ser interrompida.

Note
A redefinição é opcional e deve ser feita apenas se houver necessidade de critérios de paragem adicionais, além dos já estabelecidos.
Returns
Retorna verdadeiro se a procura deve parar de imediato

O critério de paragem pode ser especificado em limite de tempo, limite de iterações. Caso exista uma falha na alocação de memória de um estado, em chamadas futuras irá retornar verdadeiro.

Note
Redefinir apenas se o critério de paragem não puder ser contemplado nestes pontos.
Esta função deve manter a eficiência elevada, dado que é chamada em ciclos internos dos algoritmos de procura.
bool CSubProblema::Parar(void) {
return TProcura::Parar() || CriterioParagem(); // critério de paragem definido em CSubProblema
}
virtual bool Parar(void)
Verifica se a procura deve ser interrompida.
Definition TProcura.h:405

Reimplemented from TProcura.

Definition at line 128 of file TProcuraMelhorativa.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReproduzirAE()

TVector< TPonto > TProcuraMelhorativa::ReproduzirAE ( TVector< TPonto > &  pais,
TVector< TPonto > &  populacao 
)
protected

Definition at line 638 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ResetParametros()

void TProcuraMelhorativa::ResetParametros ( )
overridevirtual

Inicializa os parâmetros, indicadores e instâncias.

Note
Redefinição necessária, para pelo menos indicar as instâncias existentes

Nesta função, a primeira instrução deverá ser a chamada da função da superclasse, para que sejam criados os parÂmetros da superclasse antes de qualquer outra instrução.

Cada problema pode ter um algoritmo e configurações padrão que funcionam bem na maioria dos casos. Nesta função, podem ser definidos estes valores por omissão.

Novos parâmetros podem ser adicionados conforme necessário para atender às particularidades do problema. Estes parâmetros podem depois ser selecionados ou incluídos num teste empírico, de modo a averiguar em fase de testes, qual a melhor configuração, evitando escolhas arbitrárias ou não fundamentadas.

Nesta função deve ser redefinida a variável com informação dos IDs das instâncias disponíveis. Essa variável é do tipo TParametro, mas não está na lista de parÂmetros, devendo ser inicializada aqui.

Existindo novos indicadores, devem ser adicionados aqui, e redefinida a função Indicador() para calcular o valor.

Note
Na criação de um novo parâmetro, dar uma estrutura TParametro.
Ao adicionar novos parâmetros, é recomendável manter a enumeração sincronizada com a da superclasse. O primeiro elemento deve ser parametrosConstrutivos, garantindo que novas adições na superclasse sejam automaticamente refletidas aqui.
A instância selecionada irá ser carregada em Inicializar(), utilizando o valor atual.
See also
TParametro

Exemplo com a alteração do valor por omissão de um parâmetro, e adição de dois novos parametros.

// continuação da enumeração EParametrosProcura
void CSubProblema::ResetParametros(void)
{
static const char* nomesSuc[] = { "todas", "contributo" }; // nomes para os valores de opcaoSuc
// chamar primeiro o método na superclasse
// neste exemplo considerou-se que se pretende ver algum debug, por omissão
// novo parâmetro para utilizar na função Heuristica()
parametro += { "Opção Heurística", 0,0,10,
"explicação do que acontece na heuristica, com este parametro entre 0 e 10",NULL };
// novo parâmetro para utilizar na função Sucessores()
parametro += { "Opção Sucessores", 0,0,1,
"0 gera todas as ações; 1 gera apenas ações que tenham um contributo para a solução.",nomesSuc };
// novo indicador
indicador += { "Ordenado","verifica se um vetor está ordenado", indOrdenar };
indAtivo += indOrdenar; // adicionar aos indicadores ativos por omissão
// indicar que há 10 instâncias, sendo a instância inicial a 1
instancia = { "Problema", 1,1,10, "Características dos problemas", NULL };
}
@ ATIVIDADE
Apenas eventos principais.
Definition TProcura.h:92
@ NIVEL_DEBUG
Nível de debug, de reduzido a completo.
Definition TProcura.h:71
int Parametro(int id) const
Definition TProcura.h:607
virtual void ResetParametros()
Inicializa os parâmetros, indicadores e instâncias.
Definition TProcura.cpp:48
static TVector< TIndicador > indicador
Indicadores que podem ser calculados após a execução, quer com informação da instãncia,...
Definition TProcura.h:570
static TVector< int > indAtivo
Definition TProcura.h:571
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
Definition TProcura.h:22
static TVector< TParametro > parametro
Parâmetros a serem utilizados na configuração atual.
Definition TProcura.h:567

Reimplemented from TProcura.

Definition at line 28 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Selecao()

void TProcuraMelhorativa::Selecao ( int pai,
int mae,
TVector< int > &  pesos,
int  total 
)
protected

Definition at line 353 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SelecionarPaisAE()

TVector< TPonto > TProcuraMelhorativa::SelecionarPaisAE ( TVector< TPonto > &  populacao)
protected

Definition at line 546 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SelecionarSobreviventesAE()

TVector< TPonto > TProcuraMelhorativa::SelecionarSobreviventesAE ( TVector< TPonto > &  populacao,
TVector< TPonto > &  descendentes 
)
protected

Definition at line 739 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VerificaMelhor() [1/2]

void TProcuraMelhorativa::VerificaMelhor ( TPonto melhor,
TPonto  atual 
)
protected

Definition at line 192 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VerificaMelhor() [2/2]

bool TProcuraMelhorativa::VerificaMelhor ( TPonto  atual)
protected

Definition at line 200 of file TProcuraMelhorativa.cpp.

Here is the call graph for this function:

◆ Vizinhanca()

virtual void TProcuraMelhorativa::Vizinhanca ( TVector< TPonto > &  vizinhos)
inlinevirtual

Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.

Definition at line 136 of file TProcuraMelhorativa.h.

Here is the caller graph for this function:

Member Data Documentation

◆ custo

int TProcuraMelhorativa::custo = -1

Custo total, atualizada após Avaliar()

Definition at line 47 of file TProcuraMelhorativa.h.

◆ debugPrefixo

const char * TProcuraMelhorativa::debugPrefixo = ""
static

Utilizar como prefixo em cada linha no método Debug() do estado.

Definition at line 189 of file TProcuraMelhorativa.h.

◆ epocas

int TProcuraMelhorativa::epocas = 0
static

Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.

Definition at line 53 of file TProcuraMelhorativa.h.

◆ geracoes

int TProcuraMelhorativa::geracoes = 0
static

Número de estados gerados.

Definition at line 51 of file TProcuraMelhorativa.h.

◆ lowerBound

int TProcuraMelhorativa::lowerBound = 0
static

Lower Bound, se existir.

Definition at line 49 of file TProcuraMelhorativa.h.


The documentation for this class was generated from the following files: