TProcuraAdversa
Algoritmos de procura adversa
Loading...
Searching...
No Matches
Métodos desnecessários redefinir

Functions

virtual bool TProcuraConstrutiva::Acao (const char *acao)
 Executa a ação (movimento, passo, jogada, lance, etc.) no estado atual.
 
virtual bool TProcuraConstrutiva::Parar (void)
 Verifica se a procura deve ser interrompida.
 
virtual bool TProcuraConstrutiva::Distinto (TNo estado)
 Verifica se o estado actual distinto do fornecido.
 
virtual void TProcuraConstrutiva::MostrarSolucao (void)
 Mostrar solução, seja um caminho ou o próprio estado.
 
virtual int TProcuraConstrutiva::ExecutaAlgoritmo ()
 Executa o algoritmo com os parametros atuais.
 
virtual void TProcuraConstrutiva::TesteEmpirico (int inicio=-1, int fim=-1, bool mostrarSolucoes=true)
 Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.
 

Detailed Description

Métodos que não precisam ser redefinidos para uma implementação eficaz

Function Documentation

◆ Acao()

bool TProcuraConstrutiva::Acao ( const char *  acao)
virtual

Executa a ação (movimento, passo, jogada, lance, etc.) no estado atual.

Note
Redefinição caso necessário. A implementação é já genérica.
Parameters
acao- texto com a ação a executar
Returns
Retorna verdadeiro, mas caso não seja feito uma ação, devido a ser impossível, retornar falso.
Note
A implementação gera os sucessores, e vê qual o que corresponde à ação fornecida. Copia o estado correspondente para o atual, ou retorna falso caso a ação não seja possível. O método não é eficiente, mas também não utilizado pelos algoritmos, apenas na interface. Caso exista um motivo para que seja eficiente, deve ser implementada uma versão mais eficiente para cada problema, tendo em atenção a sua coerência com a função Sucessores().

Definition at line 111 of file TProcuraConstrutiva.cpp.

Here is the call graph for this function:

◆ Distinto()

virtual bool TProcuraConstrutiva::Distinto ( TNo  estado)
inlinevirtual

Verifica se o estado actual distinto do fornecido.

Note
Redefinição opcional. Necessário para identificação de estados repetidos por teste de ascendentes.
Returns
Retorna verdadeiro se o estado é distinto, e falso se é igual

Compara as variáveis de estado para determinar se dois estados são iguais ou diferentes.

Note
Se a verificação de estados repetidos for baseada na análise de ascendentes, a superclasse chama este método dentro de Sucessores().
bool CSubProblema::Distinto(TNo estado) {
CSubProblema& outro = *((CSubProblema*)estado);
// verificar todas as variáveis de estado
return variavel != outro.variavel;
}
Representa um estado no espaço de estados.

Definition at line 682 of file TProcuraConstrutiva.h.

Here is the caller graph for this function:

◆ ExecutaAlgoritmo()

int TProcuraConstrutiva::ExecutaAlgoritmo ( )
virtual

Executa o algoritmo com os parametros atuais.

Note
Redefinição necessária no caso de se alterar os algoritmos disponíveis.

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.

See also
TesteManual(), EParametrosConstrutiva, LarguraPrimeiro(), CustoUniforme(), ProfundidadePrimeiro()
MelhorPrimeiro(), AStar(), IDAStar(), BranchAndBound()

Reimplemented in TProcuraAdversa.

Definition at line 937 of file TProcuraConstrutiva.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MostrarSolucao()

virtual void TProcuraConstrutiva::MostrarSolucao ( void  )
inlinevirtual

Mostrar solução, seja um caminho ou o próprio estado.

Note
Redefinição opcional.

Esta função exibe a solução, mostrando um estado a cada X ações e exibindo as ações entre os estados. O valor padrão de X é 4, ajustável pelo parâmetro parametro[verAcoes].valor.

Note
Em problemas onde seja simples de seguir a ação, pode-se utilizar valores maiores, sem ser necessário mostrar muitos estados completos. Em problemas que as ações sejam mais complexas, ou alterem mais o estado, poderá ser até preferível colocar este valor a 1, para que o estado seja sempre mostrado em cada ação.
Há problemas em que o estado é já a solução. Neste caso pode-se redefinir esta função chamando a função Debug().
Em situações particulares, poderá ser possível construir a solução de forma mais compacta, num único estado com as ações todas codificadas, por exemplo um caminho num mapa. Nesse caso há que redefinir este método, implementando a visualização da solução de raiz.
void CSubProblema::MostrarSolucao(void)
{
// caso o estado final seja a solução, simplesmente mostrar o estado atual
Debug();
// caso seja um caminho do estado inicial ao final, não redefinir
}
virtual void Debug(void)
Mostra o estado no ecrã, para debug.

Definition at line 713 of file TProcuraConstrutiva.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Parar()

virtual bool TProcuraConstrutiva::Parar ( void  )
inlinevirtual

Verifica se a procura deve ser interrompida.

Note
A redefinição é opcional e deve ser feita apenas se houver necessidade de critérios de paragem adicionais, além dos já estabelecidos.
Returns
Retorna verdadeiro se a procura deve parar de imediato

O critério de paragem pode ser especificado em limite de tempo, expansões, gerações e avaliações. Caso exista uma falha na alocação de memória de um estado, em chamadas futuras irá retornar verdadeiro.

Note
Redefinir apenas se o critério de paragem não puder ser contemplado nestes pontos.
Esta função deve manter a eficiência elevada, dado que é chamada em ciclos internos dos algoritmos de procura.
bool CSubProblema::Parar(void) {
return TProcuraConstrutiva::Parar() || CriterioParagem(); // critério de paragem definido em CSubProblema
}
virtual bool Parar(void)
Verifica se a procura deve ser interrompida.

Definition at line 660 of file TProcuraConstrutiva.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TesteEmpirico()

void TProcuraConstrutiva::TesteEmpirico ( int  inicio = -1,
int  fim = -1,
bool  mostrarSolucoes = true 
)
virtual

Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.

Note
Redefinição não é necessária
Parameters
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.

Note
Pode ser chamada diretamente do código, e nesse caso é necessário que a variável estática 'configuracoes' tenha as configurações em teste. Se 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.
See also
TesteManual()

Reimplemented in TProcuraAdversa.

Definition at line 954 of file TProcuraConstrutiva.cpp.

Here is the call graph for this function:
Here is the caller graph for this function: