|
TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
Representa um estado num problema artificial. More...
#include <ProblemaArtificial.h>
Public Member Functions | |
| CProblemaArtificial (void) | |
| ~CProblemaArtificial (void) | |
| TPonto | Duplicar (void) |
| Cria um objecto que é uma cópia deste. | |
| void | Copiar (TPonto objecto) |
| Fica com uma cópia do objecto. | |
| void | Inicializar (void) |
| Coloca o objecto no estado inicial da procura. | |
| void | Debug (bool completo=true) override |
| Mostra o estado no ecrã, para debug. | |
| void | TesteManual (const char *nome) |
| bool | Distinto (TPonto estado) const |
| int | Heuristica (void) |
| void | ResetParametros () |
| Inicializa os parâmetros, indicadores e instâncias. | |
Public Member Functions inherited from TProcuraMelhorativa | |
| TProcuraMelhorativa (void) | |
| ~TProcuraMelhorativa (void) | |
| virtual void | NovaSolucao (void) |
| virtual int | Avaliar (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_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) | |
| virtual TVector< TString > | Solucao () |
| 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 |
| int & | Parametro (int id) |
| bool | ParametroAtivo (int id, TVector< int > *valores=NULL) const |
Public Attributes | |
| unsigned int | id = 0 |
| int | nivel = 0 |
| int | heur = 0 |
Public Attributes inherited from TProcuraMelhorativa | |
| int | custo = -1 |
| Custo total, atualizada após Avaliar() | |
Static Public Attributes | |
| static TParametrosEspaco | espaco |
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 char * | debugPrefixo = "" |
| 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< 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. | |
| static int | gravarSolucao = 0 |
| Gravar solução CSV (todas as ações) | |
Representa um estado num problema artificial.
Neste problema um estado é um número inteiro, sendo abstrato. O número poderia representar um estado de um problema real. Pretende-se atingir estados múltiplos de um dado valor, tipicamente 10 ou 100, ficando os dígitos menos significativos a 0 Cada instância define características do espaço de estados como ramificação, nível mímimo em que está a solução, ou mesmo a profundidade máxima. Podemos observar o comportamento dos algoritmos em espaços de cada tipo de características.
Definition at line 30 of file ProblemaArtificial.h.
| CProblemaArtificial::CProblemaArtificial | ( | void | ) |
| CProblemaArtificial::~CProblemaArtificial | ( | void | ) |
Definition at line 12 of file ProblemaArtificial.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 from TProcuraMelhorativa.
Definition at line 55 of file ProblemaArtificial.h.
Mostra o estado no ecrã, para debug.
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.
NovaLinha() pode imprimir caracteres que representam os ramos da árvore de procura, criando uma visualização textual que simula a estrutura da procura.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.Reimplemented from TProcura.
Definition at line 28 of file ProblemaArtificial.cpp.
Definition at line 48 of file ProblemaArtificial.cpp.
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.
Implements TProcuraMelhorativa.
Definition at line 46 of file ProblemaArtificial.h.
Coloca o objecto no estado inicial da procura.
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.
Reimplemented from TProcura.
Definition at line 16 of file ProblemaArtificial.cpp.
|
virtual |
Inicializa os parâmetros, 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 parÂmetros 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 por omissão.
Novos parâmetros podem ser adicionados conforme necessário para atender às particularidades do problema. Estes parâmetros 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 parÂmetros, 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 por omissão de um parâmetro, e adição de dois novos parametros.
Reimplemented from TProcura.
Definition at line 41 of file ProblemaArtificial.cpp.
|
static |
Definition at line 38 of file ProblemaArtificial.h.
| int CProblemaArtificial::heur = 0 |
Definition at line 43 of file ProblemaArtificial.h.
Definition at line 41 of file ProblemaArtificial.h.
| int CProblemaArtificial::nivel = 0 |
Definition at line 42 of file ProblemaArtificial.h.