TProcuraAdversa
Algoritmos de procura adversa
|
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) |
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas. | |
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. | |
virtual void | SolucaoVazia (void) |
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) | |
virtual void | TesteManual (const char *nome) |
Inicializa a interação com o utilizador. | |
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 void | Debug (void) |
Mostra o estado no ecrã, para debug. | |
virtual bool | Acao (const char *acao) |
Executa a ação (movimento, passo, jogada, lance, etc.) no estado atual. | |
virtual bool | Parar (void) |
Verifica se a procura deve ser interrompida. | |
virtual bool | Distinto (TNo estado) |
Verifica se o estado actual distinto do fornecido. | |
virtual void | MostrarSolucao (void) |
Mostrar solução, seja um caminho ou o próprio estado. | |
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) |
void | FinalizarCorrida (clock_t inicio) |
int | LowerBound () |
void | NovaLinha (bool tudo=true) |
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 TParametro | instancia = { NULL,1,1,1, NULL, NULL } |
ID da instância atual, a ser utilizado em SolucaoVazia(). | |
static TVector< TParametro > | parametro |
Parâmetros a serem utilizados na configuração atual. | |
static TVector< TVector< int > > | configuracoes |
Conjuntos de configurações para teste empírico. | |
static int | geracoes = 0 |
Número total de gerações realizadas na procura. | |
static int | expansoes =0 |
Número total de expansões realizadas na procura. | |
static int | avaliacoes =0 |
Número total de avaliações realizadas na procura. | |
static TVector< TNo > | caminho |
Solução retornada pela procura (os estados devem ser libertados). | |
static bool | memoriaEsgotada = false |
Flag indicando problemas de memória esgotada. | |
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 TVector< unsigned char > | ramo |
static int | espacosRamo =2 |
static clock_t | instanteFinal = 0 |
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 | ExplorarSucessores (bool jogo=false) |
void | EditarParametros () |
void | EditarConfiguracoes () |
void | MostrarConfiguracoes (int detalhe, int atual=-1) |
void | SolicitaInstancia () |
bool | TempoExcedido () |
bool | GeracoesExcedido () |
bool | ExpansoesExcedido () |
bool | AvaliacoesExcedido () |
void | MostrarCaminho () |
void | MostraParametros (int detalhe=1, TVector< int > *idParametros=NULL) |
void | MostraRelatorio (TVector< TResultado > &resultados) |
int | Dominio (int &variavel, int min=INT_MIN, int max=INT_MAX) |
void | ConfiguracaoAtual (TVector< int > ¶metros, int operacao) |
int | MelhorResultado (TResultado base, TResultado alternativa) |
void | CalculaTorneio (TVector< TResultado > &resultados) |
void | MostrarTorneio (TVector< TVector< int > > &torneio, bool jogo=false) |
void | BarraTorneio (bool nomes) |
void | ExtrairConfiguracao (TVector< TResultado > &resultados, TVector< TResultado > &extracao, int configuracao) |
unsigned int | Hash () |
void | LimparHT () |
bool | ExisteHT () |
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) |
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.
|
protected |
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 TProcuraConstrutiva.
Definition at line 491 of file TProcuraAdversa.cpp.
bool TProcuraAdversa::ExisteHeuritica | ( | void | ) |
Definition at line 124 of file TProcuraAdversa.cpp.
|
protected |
Definition at line 517 of file TProcuraAdversa.cpp.
|
virtual |
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.
|
protected |
iteração, aumentando o nível progressivamente
Definition at line 176 of file TProcuraAdversa.cpp.
int TProcuraAdversa::MiniMax | ( | int | nivel = 4 | ) |
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.
|
protected |
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 TProcuraConstrutiva.
Definition at line 26 of file TProcuraAdversa.cpp.
|
protectedvirtual |
Reimplemented from TProcuraConstrutiva.
Definition at line 512 of file TProcuraAdversa.cpp.
|
virtual |
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.
inicio | - ID da primeira instância no teste (ou -1 para a primeira) |
fim | - ID da última instância no teste (ou -1 para a última) |
mostrarSolucoes | - se true, mostra a solução após cada execução, c.c. indica apenas a instância em processamento. |
Esta função é chamada de TesteManual() para executar testes empíricos. A função apresenta-se como método virtual, atendendo a que será redefinida nas procuras adversas. É genérica e não se prevê outras situações que seja necessário redefini-la.
configuracoes
estiver vazia, o teste empírico será executado apenas com a configuração atual, avaliando seu desempenho isoladamente, sem comparação com outras configurações.Reimplemented from TProcuraConstrutiva.
Definition at line 391 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.