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

Classe para utilizar TProcura em binários externos. More...

#include <TProcura.h>

Inheritance diagram for TProcuraExecutavel:
Collaboration diagram for TProcuraExecutavel:

Public Member Functions

 TProcuraExecutavel ()
 
 ~TProcuraExecutavel (void)
 
void ResetParametros ()
 Reset parâmetros, assumindo variáveis da classe definidas.
 
int ExecutaAlgoritmo ()
 Executa o algoritmo e extrai os indicadores.
 
int64_t Indicador (int id)
 retorna indicadores após execução
 
void Debug (bool completo)
 Mostra o estado no ecrã, para debug.
 
- Public Member Functions inherited from TProcura
 TProcura (void)
 
virtual ~TProcura (void)
 
virtual void Inicializar (void)
 Coloca o objecto no estado inicial da procura.
 
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
 

Public Attributes

TString solver
 
TParametro inst
 
TVector< TIndicadorind
 
TVector< TStringindPrefixo = {"", "", ""}
 
TVector< TParametropar
 
TVector< TStringparPrefixo = {"", "", "", "", ""}
 
TVector< int64_tindValores
 
TVector< intomissao
 

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 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 para utilizar TProcura em binários externos.

Definition at line 872 of file TProcura.h.

Constructor & Destructor Documentation

◆ TProcuraExecutavel()

TProcuraExecutavel::TProcuraExecutavel ( )
inline

Definition at line 893 of file TProcura.h.

◆ ~TProcuraExecutavel()

TProcuraExecutavel::~TProcuraExecutavel ( void  )
inline

Definition at line 894 of file TProcura.h.

Member Function Documentation

◆ Debug()

void TProcuraExecutavel::Debug ( bool  completo)
inlinevirtual

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 905 of file TProcura.h.

◆ ExecutaAlgoritmo()

int TProcuraExecutavel::ExecutaAlgoritmo ( )
virtual

Executa o algoritmo e extrai os indicadores.

Reimplemented from TProcura.

Definition at line 1921 of file TProcura.cpp.

Here is the call graph for this function:

◆ Indicador()

int64_t TProcuraExecutavel::Indicador ( int  id)
virtual

retorna indicadores após execução

Reimplemented from TProcura.

Definition at line 1958 of file TProcura.cpp.

Here is the call graph for this function:

◆ ResetParametros()

void TProcuraExecutavel::ResetParametros ( )
virtual

Reset parâmetros, assumindo variáveis da classe definidas.

Reimplemented from TProcura.

Definition at line 1892 of file TProcura.cpp.

Here is the call graph for this function:

Member Data Documentation

◆ ind

TVector<TIndicador> TProcuraExecutavel::ind

Definition at line 879 of file TProcura.h.

◆ indPrefixo

TVector<TString> TProcuraExecutavel::indPrefixo = {"", "", ""}

Definition at line 880 of file TProcura.h.

◆ indValores

TVector<int64_t> TProcuraExecutavel::indValores

Definition at line 890 of file TProcura.h.

◆ inst

TParametro TProcuraExecutavel::inst

Definition at line 878 of file TProcura.h.

◆ omissao

TVector<int> TProcuraExecutavel::omissao

Definition at line 891 of file TProcura.h.

◆ par

TVector<TParametro> TProcuraExecutavel::par

Definition at line 883 of file TProcura.h.

◆ parPrefixo

TVector<TString> TProcuraExecutavel::parPrefixo = {"", "", "", "", ""}

Definition at line 884 of file TProcura.h.

◆ solver

TString TProcuraExecutavel::solver

Definition at line 877 of file TProcura.h.


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