TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
ProblemaArtificial.h
Go to the documentation of this file.
1#pragma once
2
3#include "../TProcuraConstrutiva.h"
4
5// estrutura para caracterização do espaço de procura
6typedef struct SParametrosEspaco {
7 int minRamificacao, maxRamificacao; // valores mínimos e máximos para a ramificação
8 int minNivelObjetivo; // valor mínimo do nível para um estado poder ser objetivo
9 int maxNivel; // valor máximo de nível de um estado (se atingido, não gera sucessores)
10 int objetivo; // se ID módulo objetivo for nulo, e o nível mínimo for respeitado, o estado é objetivo
11 int maxCusto; // custo máximo de uma ação, mínimo é 1
12 int maxEstados; // os IDs dos estados ficam em módulo de maxEstados, de modo a poderem ser repetidos (0 não repete)
13 int maxEstadosNivel; // IDs dos estados ficam em módulo de maxEstadosNivel, concatenado com o nível para não haver colisões entre níveis (0 não repete)
14 unsigned int sementeAleatoria; // semente aleatória, definindo esta instância (para poder reproduzir a árvore de procura)
15 // procurar ver como simular heurísticas:
16 // - na geração do custo dos filhos, ter atenção para não contradizer a heurística do pai
17 // - o valor aleatório poderia ser a percentagem entre 0 e o valor da heurística perfeita
18 // - no entanto não é possível na geração do pai saber sequer se um filho será solução
19 // nesse caso a heurística não pode ultrapassar o custo desse filho
21
32{
33public:
36
37 // dados da instância
39
40 // estrutura de dados (suficiente um inteiro)
41 unsigned int id; // número arbitrário para representar este estado, será o ID do estado, gerado aleatóriamente
42 int nivel; // nível a que o estado foi gerado
43 int heur; // valor gerado para a heurística, conforme os parâmetros da instância
44
45 // Metodos virtuais redefinidos
49 id = obj.id;
50 nivel = obj.nivel;
51 heur = obj.heur;
52 }
53 void Inicializar(void);
55 bool SolucaoCompleta(void);
56 void Debug(void);
57 bool Distinto(TNo estado);
59 int Heuristica(void);
60 void ResetParametros();
61
62 const char* Acao(TProcuraConstrutiva* sucessor);
63
64
65private:
66 // carrega uma instância, das previamente definidas
67 void CarregaInstancia();
68};
69
struct SParametrosEspaco TParametrosEspaco
#define OBJETO_HASHTABLE
Representa um estado num problema artificial.
void Debug(void)
Mostra o estado no ecrã, para debug.
bool Distinto(TNo estado)
Verifica se o estado actual distinto do fornecido.
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
static TParametrosEspaco espaco
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
const char * Acao(TProcuraConstrutiva *sucessor)
void Copiar(TNo objecto)
Fica com uma cópia do objecto.
Representa um estado no espaço de estados.
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459
unsigned int sementeAleatoria