3#define _CRT_SECURE_NO_WARNINGS
13#define NAO_LIDO -1000000
256 virtual void Debug(
void);
427 virtual void main(
int argc,
char*
argv[],
const char*nome);
EOperacao
Define o sentido da operação de entrada/saída de dados.
@ indResultado
resultado do algoritmo
@ indProcura
Marcador para permitir a extensão do enum em subclasses.
@ indIteracoes
número de iterações consumidas
@ indTempo
tempo em milisegundos consumidos
struct SResultado TResultado
ENivelDebug
Níveis de detalhamento para debug.
@ detalhe
Debug detalhada sobre estados e decisões.
@ atividade
Apenas eventos principais.
@ completo
Mostra toda a execução detalhadamente.
@ passos
Exibe passos intermediários.
@ nada
Sem informações de debug.
struct SParametro TParametro
Estrutura para registo de um parâmetro.
EParametrosProcura
Identifica um parâmetro específico no código.
@ parametrosProcura
Marcador para permitir a extensão do enum em subclasses.
@ seed
Semente aleatória para inicializar a sequência de números pseudo-aleatórios.
@ nivelDebug
Nível de debug, de reduzido a completo.
@ limiteTempo
Tempo limite em segundos.
@ algoritmo
Algoritmo base a executar.
@ limiteIteracoes
Número máximo de iterações (0 significa sem limite).
struct SIndicador TIndicador
Vetor dinâmico genérico com operações de pilha, conjuntos e algoritmos úteis.
Classe base para todas as procuras.
virtual void MostrarSolucao()
definir para visualizar a solução
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
virtual int ExecutaAlgoritmo()
Executa o algoritmo com os parametros atuais.
static int Dominio(int &variavel, int min=INT_MIN, int max=INT_MAX)
Limita o domínio de um parâmetro inteiro.
static char * NovoTexto(const char *prompt)
virtual void Inicializar(void)
Coloca o objecto no estado inicial da procura.
static TVector< TVector< int > > configuracoes
Conjuntos de configurações para teste empírico.
static int resultado
Resultado retornado pelo algoritmo na última execução.
void BarraTorneio(bool nomes)
Mostra a barra de progresso ou nomes do torneio.
void MostrarTorneio(TVector< TVector< int > > &torneio, bool jogo=false)
Mostra os resultados do torneio.
void MostrarConfiguracoes(int detalhe, int atual=-1)
Mostra as configurações disponíveis.
virtual int Indicador(int id)
Retorna um indicador, após a execução do algoritmo.
TVector< TResultado > ExtrairConfiguracao(TVector< TResultado > &resultados, int configuracao)
Extrai resultados de uma determinada configuração.
static int tempo
tempo consumido na última execução.
static int iteracoes
Número total de iterações realizadas na última execução.
virtual void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
static char ficheiroInstancia[256]
nome do ficheiro de uma instância - editado pelo utilizador (utilizar como prefixo, concatenando com ID...
int NovaConfiguracao(TVector< int > ¶metros)
Adiciona uma nova configuração se ainda não existir.
void InserirConfiguracoes(char *str, TVector< int > &base)
Insere configurações a partir de uma string.
TVector< int > SolicitaInstancias()
Solicita ao utilizador uma lista de instâncias.
virtual void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
void MostraParametros(int detalhe=1, TVector< int > *idParametros=NULL)
Mostra os parâmetros atuais.
virtual bool Parar(void)
Verifica se a procura deve ser interrompida.
virtual void ExecucaoTerminada(clock_t inicio)
Chamar após a execução do algoritmo. Grava o tempo consumido.
void MostraRelatorio(TVector< TResultado > &resultados, bool ultimo=false)
Mostra um relatório dos resultados.
bool EditarIndicadores()
Permite ao utilizador editar os indicadores a utilizar.
TVector< int > ExtraiLista(char *str)
Extrai uma lista de inteiros a partir de uma string.
virtual TVector< int > CodificarSolucao()
retorna um vetor de inteiros com a codifciação da solução (esta codificação será adicionada aos indicadores,...
virtual void Debug(void)
Mostra o estado no ecrã, para debug.
static int NovoValor(const char *prompt)
void MostraIndicadores()
Mostra os indicadores definidos.
static TVector< TIndicador > indicador
Indicadores que podem ser calculados após a execução, quer com informação da instãncia, quer com resultado da ...
virtual void main(int argc, char *argv[], const char *nome)
Inicializa a interação com o utilizador.
static clock_t instanteFinal
Instante final (deadline) da corrida atual.
void EditarParametros()
Permite ao utilizador editar os parâmetros.
int Registo(TResultado &resultado, int id)
Procura um registo com determinado id.
int MelhorResultado(TResultado base, TResultado alternativa)
Compara dois resultados para determinar o melhor.
virtual void Explorar()
definir para explorar manualmente os dados (não definido em TProcura, apenas em TProcuraConstrutiva)
void RelatorioCSV(TVector< TResultado > &resultados, FILE *f)
Gera um relatório CSV com os resultados.
void CalculaTorneio(TVector< TResultado > &resultados)
Calcula o torneio entre várias configurações.
void ConfiguracaoAtual(TVector< int > ¶metros, int operacao)
Grava ou lê a configuração atual.
static TVector< int > indAtivo
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
void InserirRegisto(TVector< TResultado > &resultados, int inst, int conf)
Insere um novo registo de resultados.
virtual void LimparEstatisticas(clock_t &inicio)
Chapar antes da execução do algoritmo. Limpa valores estatísticos, e fixa o instante limite de tempo para...
static TVector< TParametro > parametro
Parâmetros a serem utilizados na configuração atual.
void AjudaUtilizacao(const char *programa)
Mostra ajuda de utilização do programa.
void EditarConfiguracoes()
Permite ao utilizador editar as configurações.
void SolicitaInstancia()
Solicita ao utilizador o ID da instância a utilizar, permitindo alterar também o prefixo do ficheiro.
virtual void TesteEmpirico(TVector< int > instancias, bool mostrarSolucoes=true, char *ficheiro=NULL)
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.
int indice
indice onde aparece o indicador nos resultados, c.c. -1 para não aparecer
const char * nome
nome do indicador
const char * descricao
descrição do indicador, opcional
Estrutura para registo de um parâmetro.
const char * descricao
descrição do parametro, opcional
int valor
valor do parametro
const char * nome
nome do parametro, opcional mas aconselhado nos parâmetros específicos
int max
valor máximo que o parametro pode tomar
const char ** nomeValores
Nome associado a cada valor do parâmetro, útil para variáveis categóricas.
int min
valor mínimo que o parametro pode tomar