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.cpp
Go to the documentation of this file.
2#include <stdio.h>
3#include <string.h>
4
5
7
9{
10}
11
13{
14}
15
17{
19 // acertar as variáveis estáticas, com a instância
20 CarregaInstancia();
21
22 nivel = 0;
23 id = 1;
24 heur = 0;
25}
26
27
29{
30 printf("\n--<([%u])>--", id);
31}
32
33
35{
36 // definir as instâncias
37 instancia = { "Problema", 1,1,10, "Caracteristicas dos problemas", NULL };
39}
40
42{
44 // limitar as iterações, para que a paragem por tempo não ocorra
45 parametro[limiteIteracoes].valor = 1000000;
46}
47
51
52/*
53TParametrosEspaco:
54int minRamificacao, maxRamificacao; // valores mínimos e máximos para a ramificação
55int minNivelObjetivo; // valor mínimo do nível para um estado poder ser objetivo
56int maxNivel; // valor máximo de nível de um estado (se atingido, não gera sucessores)
57int objetivo; // se ID módulo objetivo for nulo, e o nível mínimo for respeitado, o estado é objetivo
58int maxCusto; // custo máximo de uma ação, mínimo é 1
59int maxEstados; // os IDs dos estados ficam em módulo de maxEstados, de modo a poderem ser repetidos (0 não repete)
60int 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)
61unsigned int sementeAleatoria; // semente aleatória, definindo esta instância (para poder reproduzir a árvore de procura)
62*/
63void CProblemaArtificial::CarregaInstancia() {
65 {2,2,4,5,10,1,0,0,1}, // pequena instância, ramificação baixa, profundidade baixa, objetivo 1 em 10 (termina em 0)
66 {4,4,1,6,10,1,100,0,2}, // ramificação média, estados máximos 100 (repetem-se, resto da divisão por 100). minNivelObjetivo tem de ser 1 sempre que maxEstados>0
67 {6,6,5,7,10,1,0,100,3}, // estados máximos em cada nível 100 (repetem-se, resto da divisão por 100, mas sem colisões entre níveis)
68 {1,4,4,7,10,10,0,0,4}, // custos não unitários (até 10), ramificação variável baixa
69 {1,4,20,20,100,2,0,0,5}, // profundidade média, solução no último nível apenas, custos variáveis mas menos, objetivo 1 em 100 (termina em 00)
70 {1,4,1,20,100,2,10000,0,6}, // máximo número de estados 10K (minNivelObjetivo tem de ser 1 sempre que maxEstados>0)
71 {1,4,20,20,100,2,0,1000,7}, // máximo número de estados num nível 1K
72 {10,20,10,20,100,1,0,0,8}, // ramificação média, profundidade média, solução variável, custo fixo
73 {10,20,1,20,100,1,10000,0,9}, // máximo número de estados 10K (minNivelObjetivo tem de ser 1 sempre que maxEstados>0)
74 {20,100,40,60,100,2,0,0,10}, // ramificação elevada, profundidade elevada,
75 };
76
78}
@ limiteIteracoes
Número máximo de iterações (0 significa sem limite).
Definition TProcura.h:46
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.
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 ResetParametros()
Inicializa os parametros, indicadores e instâncias.
void ResetParametros() override
Inicializa os parametros, indicadores e instâncias.
virtual void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition TProcura.h:182
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459
virtual void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
Definition TProcura.cpp:104
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
Definition TProcura.h:21
static TVector< TParametro > parametro
Parâmetros a serem utilizados na configuração atual.
Definition TProcura.h:451
int valor
valor do parametro
Definition TProcura.h:114