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 "../TProcuraMelhorativa.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
48 if (clone != NULL)
49 clone->Copiar(this);
50 else
51 memoriaEsgotada = true;
52 return clone;
53 }
54
61 void Inicializar(void);
62 void Debug(void);
63 void TesteManual(const char* nome);
64 bool Distinto(TPonto estado);
65 int Heuristica(void);
67
68private:
69 // carrega uma instância, das previamente definidas
70 void CarregaInstancia();
71};
72
struct SParametrosEspaco TParametrosEspaco
Representa um estado num problema artificial.
TPonto Duplicar(void)
Cria um objecto que é uma cópia deste.
void Debug(void)
Mostra o estado no ecrã, para debug.
bool Distinto(TNo estado)
Verifica se o estado actual distinto do fornecido.
static TParametrosEspaco espaco
void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
void Copiar(TNo objecto)
Fica com uma cópia do objecto.
virtual void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
Definition TProcura.h:467
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459
unsigned int sementeAleatoria