TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
#include <TProcuraMelhorativa.h>
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 (const char *acao) |
void | ResetParametros () override |
Inicializa os parametros, 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 () |
Chapar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução. | |
![]() | |
TProcura (void) | |
virtual | ~TProcura (void) |
virtual void | Debug (bool completo=true) |
Mostra o estado no ecrã, para debug. | |
virtual void | TesteManual (const char *nome) |
Inicializa a interação com o utilizador. | |
virtual void | TesteEmpirico (TVector< int > instancias, char *ficheiro=NULL) |
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas. | |
virtual void | TesteEmpiricoGestor (TVector< int > instancias, char *ficheiro=NULL) |
Teste empírico com modo mestre-escravo (este é o mestre) | |
virtual void | TesteEmpiricoTrabalhador (TVector< int > instancias, char *ficheiro=NULL) |
Teste empírico com modo mestre-escravo (este é o escravo) | |
virtual void | main (int argc, char *argv[], const char *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_t > | CodificarSolucao () |
retorna um vetor de inteiros com a codificação da solução (esta codificação será adicionada aos indicadores, no ficheiro CSV de resultados) | |
bool | TempoExcedido () |
bool | IteracoesExcedido () |
int | Parametro (int id) const |
int & | Parametro (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 TParametro | instancia = { NULL,1,1,1, NULL, NULL } |
ID da instância atual, a ser utilizado em SolucaoVazia(). | |
static char | ficheiroInstancia [256] = "instancia_" |
nome do ficheiro de uma instância - editado pelo utilizador (utilizar como prefixo, concatenando com ID 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 (pode gravar a solução para ficheiro também, mas essa é mais facilmente gravada em CVS codificada em inteiros, onde fica associada à configuração utilizada para a gerar) | |
static TVector< TParametro > | parametro |
Parâmetros a serem utilizados na configuração atual. | |
static TVector< TIndicador > | indicador |
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< int > | indAtivo |
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. | |
Additional Inherited Members | |
![]() | |
static int | NovoValor (const char *prompt) |
static char * | NovoTexto (const char *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 char * | MostraTempo (double segundos) |
Mostra tempo num formato humano. | |
![]() | |
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 inicialiar=false) |
retorna o tempo em segundos desde que o cronómetro foi inicializado | |
Definition at line 39 of file TProcuraMelhorativa.h.
TProcuraMelhorativa::TProcuraMelhorativa | ( | void | ) |
Definition at line 17 of file TProcuraMelhorativa.cpp.
TProcuraMelhorativa::~TProcuraMelhorativa | ( | void | ) |
Definition at line 22 of file TProcuraMelhorativa.cpp.
Definition at line 120 of file TProcuraMelhorativa.h.
int TProcuraMelhorativa::AlgoritmoEvolutivo | ( | ) |
Definition at line 383 of file TProcuraMelhorativa.cpp.
int TProcuraMelhorativa::AlgoritmoGenetico | ( | ) |
Definition at line 250 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 789 of file TProcuraMelhorativa.cpp.
Reimplemented in COitoDamas, COitoDamasCI, COitoDamasCP, CParticao, CParticaoCB, TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, and TCodificacaoReal.
Definition at line 86 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 235 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 505 of file TProcuraMelhorativa.cpp.
Fica com uma cópia do objecto.
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.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, TCodificacaoReal, COitoDamas, CParticao, and CProblemaArtificial.
Definition at line 114 of file TProcuraMelhorativa.h.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, TCodificacaoReal, COitoDamas, and CParticao.
Definition at line 145 of file TProcuraMelhorativa.h.
Definition at line 340 of file TProcuraMelhorativa.cpp.
Definition at line 407 of file TProcuraMelhorativa.cpp.
Definition at line 183 of file TProcuraMelhorativa.cpp.
Definition at line 849 of file TProcuraMelhorativa.cpp.
Definition at line 177 of file TProcuraMelhorativa.cpp.
Definition at line 346 of file TProcuraMelhorativa.cpp.
Definition at line 171 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 463 of file TProcuraMelhorativa.cpp.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, COitoDamas, and CParticao.
Definition at line 148 of file TProcuraMelhorativa.h.
Cria um objecto que é uma cópia deste.
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.
Implemented in COitoDamas, CParticao, CProblemaArtificial, TCodificacaoReal, COitoDamas, COitoDamasCI, COitoDamasCP, CParticao, CParticaoCB, CProblemaArtificial, TCodificacaoBinaria, TCodificacaoInteira, and TCodificacaoPermutacao.
int TProcuraMelhorativa::EscaladaDoMonte | ( | ) |
Definition at line 99 of file TProcuraMelhorativa.cpp.
|
protectedvirtual |
Executa o algoritmo com os parametros atuais.
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 871 of file TProcuraMelhorativa.cpp.
|
overrideprotectedvirtual |
definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)
Reimplemented from TProcura.
Definition at line 881 of file TProcuraMelhorativa.cpp.
Redefinição. Ver TProcura::Indicador().
Reimplemented from TProcura.
Definition at line 856 of file TProcuraMelhorativa.cpp.
Inicializar a instância. No final, chamar NovaSolucao() para inicializar o estado.
Reimplemented from TProcura.
Definition at line 182 of file TProcuraMelhorativa.h.
|
virtual |
Chapar 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 865 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 227 of file TProcuraMelhorativa.cpp.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, TCodificacaoReal, COitoDamas, and CParticao.
Definition at line 143 of file TProcuraMelhorativa.h.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, TCodificacaoReal, COitoDamas, and CParticao.
Definition at line 116 of file TProcuraMelhorativa.h.
|
protected |
Definition at line 353 of file TProcuraMelhorativa.cpp.
Verifica se a procura deve ser interrompida.
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.
Reimplemented from TProcura.
Definition at line 128 of file TProcuraMelhorativa.h.
|
protected |
Definition at line 604 of file TProcuraMelhorativa.cpp.
|
overridevirtual |
Inicializa os parametros, indicadores e instâncias.
Nesta função, a primeira instrução deverá ser a chamada da função da superclasse, para que sejam criados os parametros 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 de omissão.
Novos parâmetros podem ser adicionados conforme necessário para atender às particularidades do problema. Estes parametros 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 parametros, devendo ser inicializada aqui.
Existindo novos indicadores, devem ser adicionados aqui, e redefinida a função Indicador() para calcular o valor.
parametrosConstrutivos
, garantindo que novas adições na superclasse sejam automaticamente refletidas aqui.Exemplo com a alteração do valor de omissão de um parametro, e adição de dois novos parametros.
Reimplemented from TProcura.
Definition at line 26 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 360 of file TProcuraMelhorativa.cpp.
Definition at line 516 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 667 of file TProcuraMelhorativa.cpp.
Definition at line 199 of file TProcuraMelhorativa.cpp.
Reimplemented in TCodificacaoBinaria, TCodificacaoInteira, TCodificacaoPermutacao, TCodificacaoReal, COitoDamas, and CParticao.
Definition at line 136 of file TProcuraMelhorativa.h.
int TProcuraMelhorativa::custo = -1 |
Custo total, atualizada após Avaliar()
Definition at line 47 of file TProcuraMelhorativa.h.
|
static |
Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.
Definition at line 53 of file TProcuraMelhorativa.h.
|
static |
Número de estados gerados.
Definition at line 51 of file TProcuraMelhorativa.h.
|
static |
Lower Bound, se existir.
Definition at line 49 of file TProcuraMelhorativa.h.