TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
Particao.h
Go to the documentation of this file.
1#pragma once
2
3#include "../TProcuraConstrutiva.h"
4
11class CParticao :
13{
14public:
15 CParticao(void);
16 ~CParticao(void);
17
18 // estrutura de dados (números a colocar, números colocados em cada lado, e total de cada lado)
21
22 // Metodos virtuais redefinidos
26 numeros = ((CParticao*)objecto)->numeros;
27 esquerda = ((CParticao*)objecto)->esquerda;
28 direita = ((CParticao*)objecto)->direita;
29 totalEsquerda = ((CParticao*)objecto)->totalEsquerda;
30 totalDireita = ((CParticao*)objecto)->totalDireita;
31 }
32 void Inicializar(void);
34 bool SolucaoCompleta(void) {
35 return numeros.Count() == 0 && totalEsquerda == totalDireita;
36 }
37 void Debug(void);
38 void MostrarSolucao(void) { Debug(); }
39 const char* Acao(TProcuraConstrutiva* sucessor);
41 void ResetParametros();
42};
43
44/* Testes nas procuras cegas (instâncias 20 a 29)
45
46 ID |conf| custo(g) | expansões | gerações | avaliações | tempo(s) |
47----|----|----------|------------|-----------|------------|----------|
48 20 | 1 | 20 | 163979 | 228706 | 0 | 0,249s |
49 21 | 1 | 20 | 97485 | 129560 | 0 | 0,134s |
50 22 | 1 | 21 | 179777 | 243832 | 0 | 0,231s |
51 23 | 1 | sem sol. | 384627 | 384626 | 0 | 0,374s |
52 24 | 1 | sem sol. | 1226523 | 1226522 | 0 | 1,398s |
53 25 | 1 | sem sol. | 3461151 | 3461150 | 0 | 4,136s |
54 26 | 1 | sem sol. | 3731307 | 3731306 | 0 | 4,743s |
55 27 | 1 | não res. | 8559764 | 11039290 | 0 | 15,341s |
56 28 | 1 | não res. | 7480665 | 9616932 | 0 | 14,188s |
57 29 | 1 | não res. | 7859585 | 10463074 | 0 | 14,493s |
58 20 | 2 | 20 | 432100 | 660794 | 0 | 0,408s |
59 21 | 2 | 20 | 274472 | 404018 | 0 | 0,244s |
60 22 | 2 | 21 | 521564 | 765382 | 0 | 0,504s |
61 23 | 2 | não res. | 13574376 | 13958958 | 0 | 10,001s |
62 24 | 2 | não res. | 13623338 | 14849840 | 0 | 10,001s |
63 25 | 2 | não res. | 11727455 | 15188590 | 0 | 10,001s |
64 26 | 2 | não res. | 11099210 | 14830500 | 0 | 10,001s |
65 27 | 2 | não res. | 9276509 | 15074684 | 0 | 10,001s |
66 28 | 2 | não res. | 9712819 | 15076786 | 0 | 10,001s |
67 29 | 2 | não res. | 9693709 | 14481126 | 0 | 10,001s |
68 20 | 3 | 20 | 184 | 192 | 0 | 0,001s |
69 21 | 3 | 20 | 33 | 40 | 0 | 0,001s |
70 22 | 3 | 21 | 34 | 42 | 0 | 0,000s |
71 23 | 3 | sem sol. | 384627 | 384626 | 0 | 0,218s |
72 24 | 3 | sem sol. | 1226523 | 1226522 | 0 | 0,814s |
73 25 | 3 | sem sol. | 3461151 | 3461150 | 0 | 2,372s |
74 26 | 3 | sem sol. | 3731307 | 3731306 | 0 | 2,658s |
75 27 | 3 | 27 | 45 | 54 | 0 | 0,000s |
76 28 | 3 | 27 | 86 | 96 | 0 | 0,000s |
77 29 | 3 | 29 | 50 | 58 | 0 | 0,000s |
78 20 | 4 | 20 | 148 | 155 | 0 | 0,000s |
79 21 | 4 | 20 | 33 | 39 | 0 | 0,000s |
80 22 | 4 | 21 | 34 | 41 | 0 | 0,000s |
81 23 | 4 | sem sol. | 1008 | 1007 | 0 | 0,002s |
82 24 | 4 | sem sol. | 1389 | 1388 | 0 | 0,001s |
83 25 | 4 | sem sol. | 1874 | 1873 | 0 | 0,004s |
84 26 | 4 | sem sol. | 1473 | 1472 | 0 | 0,002s |
85 27 | 4 | 27 | 45 | 53 | 0 | 0,000s |
86 28 | 4 | 27 | 81 | 90 | 0 | 0,000s |
87 29 | 4 | 29 | 50 | 57 | 0 | 0,000s |
88----|----|----------|------------|-----------|------------|----------| resolvidas
89Total 1 | 61 | 33144863 | 40524998 | 0 | 55,287s | 7
90Total 2 | 61 | 79935552 | 105290678 | 0 | 71,163s | 3
91Total 3 | 144 | 8804040 | 8804086 | 0 | 6,064s | 10
92Total 4 | 144 | 6135 | 6175 | 0 | 0,009s | 10
93Torneio (#instâncias melhores):
94 |-01-|-02-|-03-|-04-|
95 1 | 7 |-10 |-10 |-13
96 |----|----|----|----|
97 2 -7 | |-10 |-10 |-27
98 |----|----|----|----|
99 3 10 | 10 | | -4 | 16
100 |----|----|----|----|
101 4 10 | 10 | 4 | | 24
102 |----|----|----|----|
103Configuração 1
104P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
105P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
106P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
107P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
108Configuração 2
109P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
110P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
111P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
112P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
113Configuração 3
114P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
115P5(Tempo): 10 | P6(Limite): -1 | P7(Repetidos): ignorar | P8(pesoAStar): 100
116P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
117P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
118Configuração 4
119P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
120P5(Tempo): 10 | P6(Limite): -1 | P7(Repetidos): gerados | P8(pesoAStar): 100
121P9(ruido): 0 | P10(baralhar): 0 | P11(Max. Avaliações): 1000000 | P12(Move Primeiro): Sim
122P13(População): 20 | P14(Prob. Mutação): 50 | P15(Dist. Mínima): 0
123
124
125*/
#define OBJETO_HASHTABLE
Representa um estado do problema da partição.
Definition Particao.h:13
const char * Acao(TProcuraConstrutiva *sucessor)
Definition Particao.cpp:75
~CParticao(void)
Definition Particao.cpp:9
void Copiar(TProcuraConstrutiva *objecto)
Definition Particao.h:24
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
Definition Particao.cpp:131
TVector< int > direita
Definition Particao.h:19
TVector< int > esquerda
Definition Particao.h:19
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
Definition Particao.cpp:51
TVector< int > numeros
Definition Particao.h:19
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
Definition Particao.cpp:151
int totalDireita
Definition Particao.h:20
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
Definition Particao.h:34
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition Particao.cpp:23
void MostrarSolucao(void)
definir para visualizar a solução
Definition Particao.h:38
void Debug(void)
Mostra o estado no ecrã, para debug.
Definition Particao.cpp:86
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
Definition Particao.cpp:13
int totalEsquerda
Definition Particao.h:20
CParticao(void)
Definition Particao.cpp:5
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.