TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
Representa um estado no espaço de estados. More...
#include <TProcuraAdversa.h>
Public Member Functions | |
TProcuraAdversa (void) | |
~TProcuraAdversa (void) | |
void | ResetParametros () |
Método para inicializar os parâmetros (redefinir se forem adicionados parâmetros especÃficos) | |
int | MiniMax (int nivel=4) |
retorna o valor do estado actual, apos procura de profundidade nivel | |
int | MiniMaxAlfaBeta (int nivel=4, int alfa=-infinito, int beta=+infinito) |
retorna o valor do estado actual, apos procura de profundidade nivel. Idêntico a MiniMax | |
void | TesteEmpirico (int inicio=-1, int fim=-1, bool mostrarSolucoes=true) |
int | ExecutaAlgoritmo () |
Executa o algoritmo com os parametros atuais. | |
int | Heuristica (void) |
chamar após calcular a heurÃstica (grava o valor, dependendo da parametrização) | |
bool | ExisteHeuritica (void) |
int | MaiorAmeaca (TVector< int > &qMin, TVector< int > &qMax, int maxAmeaca) |
Utilitário para calculo de uma heurÃstica standard em jogos simples. | |
![]() | |
TProcuraConstrutiva (void) | |
virtual | ~TProcuraConstrutiva (void) |
virtual TNo | Duplicar (void)=0 |
Cria um objecto que é uma cópia deste. | |
virtual void | Copiar (TNo objecto) |
Fica com uma cópia do objecto. | |
void | Inicializar (void) override |
Coloca o objecto no estado inicial da procura. | |
virtual void | Sucessores (TVector< TNo > &sucessores) |
Coloca em sucessores a lista de estados sucessores. | |
virtual bool | SolucaoCompleta (void) |
Verifica se o estado actual é objectivo (é uma solução completa) | |
void | ResetParametros () override |
Redefinição. Ver TProcura::ResetParametros(). | |
virtual const char * | Acao (TNo sucessor) |
Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor. | |
virtual void | Codifica (uint64_t estado[OBJETO_HASHTABLE]) |
Codifica o estado para um vetor de inteiros de 64 bits. | |
virtual bool | Acao (const char *acao) |
Executa a ação (movimento, passo, jogada, lance, etc.) no estado atual. | |
virtual bool | Distinto (TNo estado) |
Verifica se o estado actual distinto do fornecido. | |
void | MostrarSolucao (void) |
Mostrar solução, seja um caminho ou o próprio estado. | |
int | ExecutaAlgoritmo () |
Executa o algoritmo com os parametros atuais. | |
int | Indicador (int id) override |
Redefinição. Ver TProcura::Indicador(). | |
int | LarguraPrimeiro (int limite=0) |
Executa a procura em largura primeiro, algoritmo cego. | |
int | CustoUniforme (int limite=0) |
Executa a procura por custo uniforme, algoritmo cego. | |
int | ProfundidadePrimeiro (int nivel=0) |
Executa a procura em profundidade primeiro, algoritmo cego. | |
int | MelhorPrimeiro (int nivel=0) |
Executa a procura melhor primeiro, algoritmo informado. | |
int | AStar (int limite=0) |
Executa a procura A*, algoritmo informado. | |
int | IDAStar (int upperBound=0) |
Executa a procura IDA*, algoritmo informado. | |
int | BranchAndBound (int upperBound=0) |
Executa o algoritmo Branch-and-Bound, um algoritmo informado. | |
void | LimparEstatisticas (clock_t &inicio) override |
Chapar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para a execução. | |
void | ExecucaoTerminada (clock_t inicio) override |
Chamar após a execução do algoritmo. Grava o tempo consumido. | |
int | LowerBound () |
void | NovaLinha (bool tudo=true) |
![]() | |
TProcura (void) | |
virtual | ~TProcura (void) |
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 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 | |
bool | minimizar |
o jogador actual deve minimizar o custo (ou maximizar caso tenha o valor falso) | |
![]() | |
TNo | pai |
Ponteiro para o estado pai, na árvore de procura. | |
int | custo |
Custo total acumulado desde o estado inicial. | |
int | heuristica |
Estimativa para o custo até um estado objetivo, se disponÃvel. | |
Static Public Attributes | |
static int | infinito = 1000 |
valor de infinito (vitoria/derrota), omissao 1000 | |
static bool | completo |
controlo para indicar se a procura foi realizada de forma completa (c.c. foi cortada) | |
static int | nivelOK = 0 |
profundidade máxima no método iterativo | |
![]() | |
static TVector< TNo > | caminho |
Solução retornada pela procura (os estados devem ser libertados). | |
static TNo | solucao = NULL |
Estado objetivo encontrado, retornado pela procura (deve ser libertado). | |
static int | lowerBound = 0 |
Valor mÃnimo que a solução pode apresentar, obtido pela procura. | |
static int | tamanhoCodificado = OBJETO_HASHTABLE |
Número de inteiros de 64 bits utilizados para codificar um objeto (≤ OBJETO_HASHTABLE). | |
static int | expansoes = 0 |
Número de expansões efetuadas. | |
static int | geracoes = 0 |
Número de estados gerados. | |
static TVector< unsigned char > | ramo |
static int | espacosRamo = 2 |
![]() | |
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. | |
Protected Member Functions | |
int | NoFolha (bool nivel) |
fim da procura, por corte de nÃvel (ou não haver sucessores), retornar heurÃstica | |
bool | CorteAlfaBeta (int valor, int &alfa, int &beta) |
verifica se há um corte alfa/beta, atualizando alfa e beta | |
int | MetodoIterativo (int alfaBeta) |
iteração, aumentando o nÃvel progressivamente | |
void | OrdenarSucessores (TVector< TNo > &sucessores, TVector< int > &id, int nivel) |
void | SubstituirHT (int indice) |
bool | ExisteHT () |
bool | ValorEstado (TValorEstado &valor, int operacao) |
ler ou gravar o melhor valor conhecido | |
bool | Utilizavel (TValorEstado &valor, int nivel, int alfa, int beta) |
ver se o valor obtido é utilizável no contexto atual | |
![]() | |
void | DebugExpansao (int sucessor, int sucessores, bool duplo=false) |
void | DebugCorte (int sucessores=-1, bool duplo=false) |
void | DebugSolucao (bool continuar=false) |
void | DebugChamada (void) |
void | DebugPasso (void) |
void | DebugSucessores (TVector< TNo > &sucessores) |
void | DebugIteracao (int iteracao) |
void | DebugEstado (int id=-1, int pai=-1) |
void | DebugRamo (char ramo, char folha) |
int | ObjetivoAlcancado (int item, TVector< TNo > &lista) |
int | ObjetivoAlcancado (TNo estado, bool completa=true) |
int | SolucaoEncontrada (bool continuar=false) |
void | CalculaCaminho (bool completa=true) |
void | VerificaLimites (int limite, int porProcessar, TVector< TNo > &sucessores) |
void | CalcularHeuristicas (TVector< TNo > &sucessores, TVector< int > *id=NULL, bool sortLB=false) |
int | SolucaoParcial (int i, TVector< TNo > &sucessores) |
void | Explorar () |
definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva) | |
void | MostrarCaminho () |
unsigned int | Hash () |
void | LimparHT () |
bool | ExisteHT () |
![]() | |
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. | |
Protected Attributes | |
int | indiceHT |
Static Protected Attributes | |
static TValorEstado | valorHT [TAMANHO_HASHTABLE] |
static int | reutilizadoAvaliacao |
![]() | |
static uint64_t | elementosHT [TAMANHO_HASHTABLE][OBJETO_HASHTABLE] |
static int | custoHT [TAMANHO_HASHTABLE] |
static uint64_t | estadoCodHT [OBJETO_HASHTABLE] |
static int | colocadosHT = 0 |
Additional Inherited Members | |
![]() | |
static void | LibertarVector (TVector< TNo > &vector, int excepto=-1, int maiorQue=-1) |
![]() | |
static int | NovoValor (const char *prompt) |
static char * | NovoTexto (const char *prompt) |
![]() | |
static int | Dominio (int &variavel, int min=INT_MIN, int max=INT_MAX) |
Limita o domínio de um parâmetro inteiro. | |
Representa um estado no espaço de estados.
Esta classe base deve ser redefinida com um problema concreto, permitindo a execução de procuras adversas.
Definition at line 45 of file TProcuraAdversa.h.
TProcuraAdversa::TProcuraAdversa | ( | void | ) |
Definition at line 17 of file TProcuraAdversa.cpp.
TProcuraAdversa::~TProcuraAdversa | ( | void | ) |
Definition at line 22 of file TProcuraAdversa.cpp.
verifica se há um corte alfa/beta, atualizando alfa e beta
Definition at line 348 of file TProcuraAdversa.cpp.
|
virtual |
Executa o algoritmo com os parametros atuais.
Reimplemented from TProcura.
Definition at line 491 of file TProcuraAdversa.cpp.
Definition at line 124 of file TProcuraAdversa.cpp.
|
protected |
Definition at line 517 of file TProcuraAdversa.cpp.
chamar após calcular a heurÃstica (grava o valor, dependendo da parametrização)
Reimplemented from TProcuraConstrutiva.
Definition at line 114 of file TProcuraAdversa.cpp.
Utilitário para calculo de uma heurÃstica standard em jogos simples.
calcular o número de ameaças de vitória, para cada lado, de menor comprimento:
Definition at line 209 of file TProcuraAdversa.cpp.
iteração, aumentando o nÃvel progressivamente
Definition at line 176 of file TProcuraAdversa.cpp.
retorna o valor do estado actual, apos procura de profundidade nivel
Definition at line 50 of file TProcuraAdversa.cpp.
retorna o valor do estado actual, apos procura de profundidade nivel. Idêntico a MiniMax
Definition at line 272 of file TProcuraAdversa.cpp.
fim da procura, por corte de nÃvel (ou não haver sucessores), retornar heurÃstica
Definition at line 240 of file TProcuraAdversa.cpp.
|
protected |
Definition at line 133 of file TProcuraAdversa.cpp.
|
virtual |
Método para inicializar os parâmetros (redefinir se forem adicionados parâmetros especÃficos)
Reimplemented from TProcura.
Definition at line 26 of file TProcuraAdversa.cpp.
Reimplemented from TProcuraConstrutiva.
Definition at line 512 of file TProcuraAdversa.cpp.
|
protected |
ver se o valor obtido é utilizável no contexto atual
Definition at line 339 of file TProcuraAdversa.cpp.
|
protected |
ler ou gravar o melhor valor conhecido
Definition at line 535 of file TProcuraAdversa.cpp.
|
static |
controlo para indicar se a procura foi realizada de forma completa (c.c. foi cortada)
Definition at line 57 of file TProcuraAdversa.h.
|
protected |
Definition at line 113 of file TProcuraAdversa.h.
|
static |
valor de infinito (vitoria/derrota), omissao 1000
Definition at line 55 of file TProcuraAdversa.h.
bool TProcuraAdversa::minimizar |
o jogador actual deve minimizar o custo (ou maximizar caso tenha o valor falso)
Definition at line 53 of file TProcuraAdversa.h.
|
static |
profundidade máxima no método iterativo
Definition at line 59 of file TProcuraAdversa.h.
|
staticprotected |
Definition at line 119 of file TProcuraAdversa.h.
|
staticprotected |
Definition at line 111 of file TProcuraAdversa.h.