TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
OitoDamas.h
Go to the documentation of this file.
1#pragma once
2#include "../TProcuraConstrutiva.h"
3
4#define MAX_DAMAS 40
5
15{
16public:
17 COitoDamas(void);
18 ~COitoDamas(void);
19
20 // estrutura de dados: posicao de cada dama
22 static int nDamas; // número de damas desta instância
23
24 // metodos virtuais redefinidos de TProcuraConstrutiva
25
31 void Inicializar(void);
32 void ResetParametros();
34 bool SolucaoCompleta(void) { return damas.Count() == nDamas; }
35 void Debug(void);
36 void MostrarSolucao(void) { Debug(); }
37 const char* Acao(TProcuraConstrutiva* sucessor);
39
40private:
41 // métodos de normalização de um estado
42 void Normalizar(TVector<int>& damas); // coloca em damas o estado normalizado
43 int PesoVersao(int tab[MAX_DAMAS][MAX_DAMAS]); // peso da versão do estado
44 void Simetria(int tab[MAX_DAMAS][MAX_DAMAS], int eixo); // aplica uma simetria
45 void Troca(int& a, int& b); // troca dois valores
46};
47
48/* Testes nas procuras cegas (instâncias 8 a 17)
49
50 ID |conf| custo(g) | expansões | gerações | avaliações | tempo(s) |
51----|----|----------|------------|-----------|------------|----------|
52 8 | 1 | 8 | 1665 | 1965 | 0 | 0,002s |
53 9 | 1 | 9 | 6977 | 8042 | 0 | 0,007s |
54 10 | 1 | 10 | 30779 | 34815 | 0 | 0,023s |
55 11 | 1 | 11 | 149131 | 164246 | 0 | 0,133s |
56 12 | 1 | 12 | 773731 | 841989 | 0 | 0,787s |
57 13 | 1 | 13 | 4250877 | 4601178 | 0 | 5,084s |
58 14 | 1 | não res. | 6900138 | 12939175 | 0 | 11,908s |
59 15 | 1 | não res. | 5445913 | 15967696 | 0 | 12,279s |
60 16 | 1 | não res. | 4123889 | 16996518 | 0 | 12,649s |
61 17 | 1 | não res. | 3651739 | 18318707 | 0 | 13,096s |
62 8 | 2 | 8 | 113 | 124 | 0 | 0,000s |
63 9 | 2 | 9 | 41 | 60 | 0 | 0,000s |
64 10 | 2 | 10 | 102 | 124 | 0 | 0,001s |
65 11 | 2 | 11 | 52 | 83 | 0 | 0,000s |
66 12 | 2 | 12 | 261 | 295 | 0 | 0,001s |
67 13 | 2 | 13 | 111 | 154 | 0 | 0,000s |
68 14 | 2 | 14 | 1899 | 1944 | 0 | 0,006s |
69 15 | 2 | 15 | 1359 | 1414 | 0 | 0,005s |
70 16 | 2 | 16 | 10052 | 10112 | 0 | 0,028s |
71 17 | 2 | 17 | 5374 | 5449 | 0 | 0,016s |
72 8 | 3 | 8 | 113 | 120 | 0 | 0,001s |
73 9 | 3 | 9 | 41 | 56 | 0 | 0,000s |
74 10 | 3 | 10 | 102 | 119 | 0 | 0,001s |
75 11 | 3 | 11 | 52 | 78 | 0 | 0,000s |
76 12 | 3 | 12 | 261 | 289 | 0 | 0,001s |
77 13 | 3 | 13 | 111 | 148 | 0 | 0,000s |
78 14 | 3 | 14 | 1899 | 1937 | 0 | 0,006s |
79 15 | 3 | 15 | 1359 | 1407 | 0 | 0,008s |
80 16 | 3 | 16 | 2850 | 2896 | 0 | 0,020s |
81 17 | 3 | 17 | 5206 | 5258 | 0 | 0,030s |
82----|----|----------|------------|-----------|------------|----------| resolvidas
83Total 1 | 63 | 25334839 | 69874331 | 0 | 55,968s | 6
84Total 2 | 125 | 19364 | 19759 | 0 | 0,057s | 10
85Total 3 | 125 | 11994 | 12308 | 0 | 0,067s | 10
86Torneio (#instâncias melhores):
87 |-01-|-02-|-03-|
88 1 | -7 | -7 |-14
89 |----|----|----|
90 2 7 | | 0 | 7
91 |----|----|----|
92 3 7 | 0 | | 7
93 |----|----|----|
94Configuração 1
95P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
96P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
97P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
98P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
99Configuração 2
100P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
101P5(Tempo): 10 | P6(Limite): -1 | P7(Repetidos): ignorar | P8(pesoAStar): 100
102P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
103P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
104Configuração 3
105P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
106P5(Tempo): 10 | P6(Limite): -1 | P7(Repetidos): gerados | P8(pesoAStar): 100
107P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
108P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
109
110*/
#define MAX_DAMAS
Definition OitoDamas.h:16
#define OBJETO_HASHTABLE
Representa um estado do problema das 8 damas.
Definition OitoDamas.h:15
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
Definition OitoDamas.cpp:85
const char * Acao(TProcuraConstrutiva *sucessor)
Definition OitoDamas.cpp:60
static int nDamas
Definition OitoDamas.h:22
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition OitoDamas.cpp:24
void Debug(void)
Mostra o estado no ecrã, para debug.
Definition OitoDamas.cpp:70
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
Definition OitoDamas.h:34
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
Definition OitoDamas.cpp:39
~COitoDamas(void)
Definition OitoDamas.cpp:10
TVector< int > damas
Definition OitoDamas.h:21
void MostrarSolucao(void)
definir para visualizar a solução
Definition OitoDamas.h:36
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
Definition OitoDamas.cpp:14
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
Definition OitoDamas.cpp:33
void Copiar(TProcuraConstrutiva *objecto)
Definition OitoDamas.h:27
COitoDamas(void)
Definition OitoDamas.cpp:6
Representa um estado no espaço de estados.
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459
int Count() const
Definition TVector.h:160
virtual void Copiar(TNo objecto)
Fica com uma cópia do objecto.