TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
TCodificacaoReal Class Referenceabstract

#include <TCodificacaoReal.h>

Inheritance diagram for TCodificacaoReal:
Collaboration diagram for TCodificacaoReal:

Public Member Functions

 TCodificacaoReal ()
 
 ~TCodificacaoReal ()
 
int Avaliar (void)=0
 
void Inicializar (void)=0
 Coloca o objecto no estado inicial da procura.
 
void Debug (bool completo=true) override
 Mostra o estado no ecrã, para debug.
 
virtual void Debug (bool completo=true)
 Mostra o estado no ecrã, para debug.
 
- Public Member Functions inherited from TProcuraMelhorativa
 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)
 
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 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
 

Static Public Member Functions

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 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.
 

Public Attributes

TVector< doubleestado
 
- Public Attributes inherited from TProcuraMelhorativa
int custo = -1
 Custo total, atualizada após Avaliar()
 

Static Public Attributes

static int nElementos
 
static TVector< doubleminValor
 
static TVector< doublemaxValor
 
- Static Public Attributes inherited from TProcuraMelhorativa
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)
 

Additional Inherited Members

- Protected Member Functions inherited from TProcuraMelhorativa
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 ()
 
- 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 3 of file TCodificacaoReal.h.

Constructor & Destructor Documentation

◆ TCodificacaoReal()

TCodificacaoReal::TCodificacaoReal ( )
inline

Definition at line 7 of file TCodificacaoReal.h.

◆ ~TCodificacaoReal()

TCodificacaoReal::~TCodificacaoReal ( )
inline

Definition at line 8 of file TCodificacaoReal.h.

Member Function Documentation

◆ Avaliar()

int TCodificacaoReal::Avaliar ( void  )
pure virtual

Reimplemented from TProcuraMelhorativa.

◆ Debug() [1/3]

void TProcura::Debug ( bool  completo = true)
virtual

Mostra o estado no ecrã, para debug.

Note
Redefinição opcional. Necessário para visualizar a procura, e explorar o espaço manualmente.

Esta função deverá mostrar claramente o estado atual, em texto mas da forma mais confortável possível. O formato texto destina-se principalmente a quem implementa o problema, e não utilizadores finais. É importante poder explorar o espaço de estados, para verificar a correta implementação dos sucessores, como também possa ver a árvore de procura dos algoritmos, para árvores pequenas, e assim detectar bugs.

Note
Antes de cada linha, chame a função NovaLinha(). Dependendo do contexto, NovaLinha() pode imprimir caracteres que representam os ramos da árvore de procura, criando uma visualização textual que simula a estrutura da procura.
A exibição do estado pode variar conforme o nível de debug definido em Parametro(NIVEL_DEBUG). Um nível menor pode mostrar informações mais sucintas, enquanto um nível maior pode detalhar todas as variáveis do estado.
See also
NovaLinha()
void CSubProblema::Debug(bool completo) // refazer comentários....
{
NovaLinha();
// neste exemplo o estado é apenas um número
printf("--<([%d])>--", variavel); // versão compacta do estado
else {
// versão mais elaborada do estado
}
}
@ 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
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:575

Reimplemented from TProcura.

Definition at line 325 of file TProcura.cpp.

◆ Debug() [2/3]

void TCodificacaoReal::Debug ( bool  completo = true)
overridevirtual

Mostra o estado no ecrã, para debug.

Note
Redefinição opcional. Necessário para visualizar a procura, e explorar o espaço manualmente.

Esta função deverá mostrar claramente o estado atual, em texto mas da forma mais confortável possível. O formato texto destina-se principalmente a quem implementa o problema, e não utilizadores finais. É importante poder explorar o espaço de estados, para verificar a correta implementação dos sucessores, como também possa ver a árvore de procura dos algoritmos, para árvores pequenas, e assim detectar bugs.

Note
Antes de cada linha, chame a função NovaLinha(). Dependendo do contexto, NovaLinha() pode imprimir caracteres que representam os ramos da árvore de procura, criando uma visualização textual que simula a estrutura da procura.
A exibição do estado pode variar conforme o nível de debug definido em Parametro(NIVEL_DEBUG). Um nível menor pode mostrar informações mais sucintas, enquanto um nível maior pode detalhar todas as variáveis do estado.
See also
NovaLinha()
void CSubProblema::Debug(bool completo) // refazer comentários....
{
NovaLinha();
// neste exemplo o estado é apenas um número
printf("--<([%d])>--", variavel); // versão compacta do estado
else {
// versão mais elaborada do estado
}
}

Reimplemented from TProcura.

Definition at line 4 of file TCodificacaoReal.cpp.

◆ Debug() [3/3]

static bool TProcura::Debug ( ENivelDebug  tipo,
bool  exato,
const char fmt,
  ... 
)
inlinestatic

Mostra uma informação de debug, se o nível de debug for suficiente.

Parameters
tipoNível de detalhe necessário para exibir a mensagem.
exatoSe true, só imprime se o nível de debug for exatamente igual a tipo. Se false, imprime se for >= tipo.
fmtFormato da mensagem, como no printf.
Returns
true se a mensagem foi impressa, false caso contrário.
Note
Pode ser usado com || para encadear mensagens de diferentes níveis, imprimindo apenas a primeira que corresponda ao nível de debug atual.
// Exemplo: tenta imprimir no nível passos, senão no detalhe
Debug(passos, true, "\nPasso %d", iteracoes) ||
Debug(detalhe, false, "\nPasso %d | Melhor custo: %d", iteracoes, custo) ||
void Debug(bool completo=true) override
Mostra o estado no ecrã, para debug.
int custo
Custo total, atualizada após Avaliar()
static int iteracoes
Número total de iterações realizadas na última execução.
Definition TProcura.h:579

Definition at line 635 of file TProcura.h.

◆ Inicializar()

void TCodificacaoReal::Inicializar ( void  )
pure virtual

Coloca o objecto no estado inicial da procura.

Note
Obrigatória a redefinição.

Este método inicializa as variáveis de estado no estado inicial vazio. Representa o estado inicial antes de qualquer ação ser realizada na procura. Caso existam dados de instância, deve neste método carregar a instância. A primeira instrução deverá chamar o método da superclasse, conforme modelo em baixo.

Note
A variável instancia.valor, tem o ID da instância que deve ser carregada.
void CSubProblema::Inicializar(void)
{
// acertar as variáveis estáticas, com a instância (ID: instancia.valor)
CarregaInstancia(); // exemplo de método em CSubProblema para carregar uma instância
// pode/deve utilizar variável "ficheiroInstancia" concatenado com instancia.valor, com o ID da instância
// inicializar todas as variáveis de estado
variavel = 0;
// Determinar o tamanho máximo do estado codificado, se aplicável
}
virtual void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition TProcura.h:248

Reimplemented from TProcura.

Member Data Documentation

◆ estado

TVector<double> TCodificacaoReal::estado

Definition at line 10 of file TCodificacaoReal.h.

◆ maxValor

TVector<double> TCodificacaoReal::maxValor
static

Definition at line 12 of file TCodificacaoReal.h.

◆ minValor

TVector<double> TCodificacaoReal::minValor
static

Definition at line 12 of file TCodificacaoReal.h.

◆ nElementos

int TCodificacaoReal::nElementos
static

Definition at line 11 of file TCodificacaoReal.h.


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