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. | |
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 () |
void | TesteManualX (const char *nome) |
provavelmente apagar | |
void | DebugMelhorEncontrado (TPonto ponto) |
provavalmente apagar | |
int | Indicador (int id) override |
Redefinição. Ver TProcura::Indicador(). | |
void | LimparEstatisticas (clock_t &inicio) |
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 | Inicializar (void) |
Coloca o objecto no estado inicial da procura. | |
virtual void | Debug (void) |
Mostra o estado no ecrã, para debug. | |
virtual bool | Parar (void) |
Verifica se a procura deve ser interrompida. | |
virtual void | TesteManual (const char *nome) |
Inicializa a interação com o utilizador. | |
virtual void | TesteEmpirico (TVector< int > instancias, bool mostrarSolucoes=true, char *ficheiro=NULL) |
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas. | |
virtual void | main (int argc, char *argv[], const char *nome) |
Inicializa a interação com o utilizador. | |
virtual void | ExecucaoTerminada (clock_t inicio) |
Chamar após a execução do algoritmo. Grava o tempo consumido. | |
virtual void | MostrarSolucao () |
definir para visualizar a solução | |
virtual TVector< int > | CodificarSolucao () |
retorna um vetor de inteiros com a codifciação da solução (esta codificação será adicionada aos indicadores, no ficheiro CSV de resultados) | |
bool | TempoExcedido () |
bool | IteracoesExcedido () |
int | Parametro (int id) |
Public Attributes | |
int | custo |
Custo total, atualizada após Avaliar() | |
int | geracoes |
Número de estados gerados. | |
int | epocas |
Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única. | |
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) |
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 | DebugVizinhos (TVector< TPonto > &vizinhos) |
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) |
![]() | |
void | InserirRegisto (TVector< TResultado > &resultados, int inst, int conf) |
Insere um novo registo de resultados. | |
int | Registo (TResultado &resultado, int id) |
Procura um registo com determinado id. | |
void | Registo (TResultado &resultado, int id, int valor) |
Atualiza o valor de um registo. | |
void | MostraParametros (int detalhe=1, TVector< int > *idParametros=NULL) |
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 > ¶metros, int operacao) |
Grava ou lê a configuração atual. | |
int | NovaConfiguracao (TVector< int > ¶metros) |
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< TResultado > | ExtrairConfiguracao (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< int > | SolicitaInstancias () |
Solicita ao utilizador uma lista de instâncias. | |
void | RelatorioCSV (TVector< TResultado > &resultados, FILE *f) |
Gera um relatório CSV com os resultados. | |
TVector< int > | ExtraiLista (char *str) |
Extrai uma lista de inteiros a partir de uma string. | |
void | InserirConfiguracoes (char *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 (const char *programa) |
Mostra ajuda de utilização do programa. | |
Additional Inherited Members | |
![]() | |
static int | NovoValor (const char *prompt) |
static char * | NovoTexto (const char *prompt) |
![]() | |
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 int | 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 | Dominio (int &variavel, int min=INT_MIN, int max=INT_MAX) |
Limita o domínio de um parâmetro inteiro. | |
Definition at line 34 of file TProcuraMelhorativa.h.
TProcuraMelhorativa::TProcuraMelhorativa | ( | void | ) |
Definition at line 11 of file TProcuraMelhorativa.cpp.
TProcuraMelhorativa::~TProcuraMelhorativa | ( | void | ) |
Definition at line 15 of file TProcuraMelhorativa.cpp.
int TProcuraMelhorativa::AlgoritmoGenetico | ( | ) |
Definition at line 227 of file TProcuraMelhorativa.cpp.
Reimplemented in COitoDamas, and CParticao.
Definition at line 64 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 212 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 COitoDamas, CParticao, and CProblemaArtificial.
Definition at line 107 of file TProcuraMelhorativa.h.
Reimplemented in COitoDamas, and CParticao.
Definition at line 133 of file TProcuraMelhorativa.h.
Definition at line 170 of file TProcuraMelhorativa.cpp.
provavalmente apagar
Definition at line 365 of file TProcuraMelhorativa.cpp.
Definition at line 161 of file TProcuraMelhorativa.cpp.
Definition at line 153 of file TProcuraMelhorativa.cpp.
Reimplemented in COitoDamas, and CParticao.
Definition at line 136 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, COitoDamas, CParticao, and CProblemaArtificial.
int TProcuraMelhorativa::EscaladaDoMonte | ( | ) |
Definition at line 81 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].valor 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 447 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 457 of file TProcuraMelhorativa.cpp.
Redefinição. Ver TProcura::Indicador().
Reimplemented from TProcura.
Definition at line 374 of file TProcuraMelhorativa.cpp.
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 383 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 204 of file TProcuraMelhorativa.cpp.
Reimplemented in COitoDamas, and CParticao.
Definition at line 131 of file TProcuraMelhorativa.h.
Reimplemented in COitoDamas, and CParticao.
Definition at line 58 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 335 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 19 of file TProcuraMelhorativa.cpp.
|
protected |
Definition at line 342 of file TProcuraMelhorativa.cpp.
provavelmente apagar
Definition at line 391 of file TProcuraMelhorativa.cpp.
Definition at line 196 of file TProcuraMelhorativa.cpp.
Reimplemented in COitoDamas, and CParticao.
Definition at line 72 of file TProcuraMelhorativa.cpp.
int TProcuraMelhorativa::custo |
Custo total, atualizada após Avaliar()
Definition at line 42 of file TProcuraMelhorativa.h.
int TProcuraMelhorativa::epocas |
Número de épocas decorridas num algoritmo evolutivo. Uma época é uma geração única.
Definition at line 46 of file TProcuraMelhorativa.h.
int TProcuraMelhorativa::geracoes |
Número de estados gerados.
Definition at line 44 of file TProcuraMelhorativa.h.