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

Classe de teste para TVector, integrada na framework TProcura. More...

#include <CTesteTVector.h>

Inheritance diagram for CTesteTVector:
Collaboration diagram for CTesteTVector:

Public Member Functions

 CTesteTVector ()
 
 ~CTesteTVector ()
 
void ResetParametros ()
 Inicializa parâmetros de teste.
 
void Inicializar (void)
 Inicializa dados e estado para teste.
 
void Debug (bool completo=true) override
 Mostra informação de debug sobre o estado dos vetores.
 
int ExecutaAlgoritmo ()
 Executa o algoritmo de teste (a definir pelo utilizador).
 
int64_t Indicador (int id)
 Calcula indicadores de teste.
 
virtual void Debug (bool completo=true)
 Mostra o estado no ecrã, para debug.
 
- Public Member Functions inherited from TProcura
 TProcura (void)
 
virtual ~TProcura (void)
 
virtual void Gravar (void)
 
virtual bool Parar (void)
 Verifica se a procura deve ser interrompida.
 
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 LimparEstatisticas ()
 Chamar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução.
 
virtual void ExecucaoTerminada ()
 Chamar após a execução do algoritmo. Grava o tempo consumido.
 
virtual void Explorar ()
 definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)
 
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< intdadosA
 
TVector< intdadosB
 Vetores de teste para operações TVector.
 
std::vector< intstdA
 
std::vector< intstdB
 Vetores equivalentes em STL para comparação.
 

Additional Inherited Members

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

Classe de teste para TVector, integrada na framework TProcura.

Permite testar as funcionalidades do vetor dinâmico (TVector), nomeadamente operações sobre vetores de inteiros, e comparar resultados com a STL.

See also
TProcura, TVector

Definition at line 14 of file CTesteTVector.h.

Constructor & Destructor Documentation

◆ CTesteTVector()

CTesteTVector::CTesteTVector ( )
inline

Definition at line 17 of file CTesteTVector.h.

◆ ~CTesteTVector()

CTesteTVector::~CTesteTVector ( )
inline

Definition at line 18 of file CTesteTVector.h.

Member Function Documentation

◆ 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 CTesteTVector::Debug ( bool  completo = true)
overridevirtual

Mostra informação de debug sobre o estado dos vetores.

Reimplemented from TProcura.

Definition at line 61 of file CTesteTVector.cpp.

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

◆ 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 informação de debug sobre o estado dos vetores.
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.

◆ ExecutaAlgoritmo()

int CTesteTVector::ExecutaAlgoritmo ( )
virtual

Executa o algoritmo de teste (a definir pelo utilizador).

Reimplemented from TProcura.

Definition at line 85 of file CTesteTVector.cpp.

Here is the call graph for this function:

◆ Indicador()

int64_t CTesteTVector::Indicador ( int  id)
virtual

Calcula indicadores de teste.

Reimplemented from TProcura.

Definition at line 320 of file CTesteTVector.cpp.

Here is the call graph for this function:

◆ Inicializar()

void CTesteTVector::Inicializar ( void  )
virtual

Inicializa dados e estado para teste.

Reimplemented from TProcura.

Definition at line 38 of file CTesteTVector.cpp.

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

◆ ResetParametros()

void CTesteTVector::ResetParametros ( )
virtual

Inicializa parâmetros de teste.

Reimplemented from TProcura.

Definition at line 17 of file CTesteTVector.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ dadosA

TVector<int> CTesteTVector::dadosA

Definition at line 20 of file CTesteTVector.h.

◆ dadosB

TVector<int> CTesteTVector::dadosB

Vetores de teste para operações TVector.

Definition at line 20 of file CTesteTVector.h.

◆ stdA

std::vector<int> CTesteTVector::stdA

Definition at line 21 of file CTesteTVector.h.

◆ stdB

std::vector<int> CTesteTVector::stdB

Vetores equivalentes em STL para comparação.

Definition at line 21 of file CTesteTVector.h.


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