|
TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
A construção de novos e melhores algoritmos é um ponto crítico no desenvolvimento da sociedade, permitindo fazer mais, e de forma mais eficiente.
Ao propor um novo algoritmo, o investigador deve suportar as afirmações que faz — nomeadamente que o algoritmo é melhor ou complementar a outros existentes. Só assim se convertem afirmações em conhecimento sólido, utilizável por outros.
Em muitos contributos científicos, o suporte pode vir de:
No caso dos algoritmos, existe a particularidade de poderem ser testados de forma ilimitada, dependendo apenas do poder computacional disponível. Assim, estamos em melhores condições para suportar afirmações sobre o seu comportamento, desde que os testes sejam executados de forma ordenada e documentada.
Uma das principais funções do projeto TProcura é precisamente facilitar a execução de testes a algoritmos. Além disso, o TProcura integra um conjunto de meta-algoritmos aplicáveis a problemas diversos de procura e otimização, incluindo:
O utilizador apenas precisa de implementar a parte específica do problema. Os algoritmos genéricos, juntamente com os parâmetros utilizados, ficam prontos para teste.
Os testes realizados com o TProcura visam garantir que:
O investigador que desenvolve um novo algoritmo passa por um ciclo típico:
Este ciclo é natural, mas pode tornar-se caótico: parâmetros espalhados no código, resultados guardados em locais diferentes, alterações de última hora que invalidam comparações. O TProcura visa disciplinar e simplificar este processo.
Para definir um teste, precisamos de três elementos fundamentais:
Com esta estrutura, conseguimos separar a análise do algoritmo da implementação do código.
Propõe-se esta estrutura para um teste, numa sequência de testes.
Os testes são uma sequência de testes, podendo um teste utilizar resultados de testes anteriores Utilizar o nome_ID para identificar o ficheiro de resultados.
A identificação do objetivo é importante para saber se se conseguiu, e compreender a sequência de testes realizada.
Estas definições são realizadas no TProcura, utilizando a facilidade de definir várias configurações.
O teste pode ter várias cargas de esforço, sendo a primeira a base. No caso de ter uma componente aleatória, o P3 com a semente é uma forma simples de se ter o mesmo teste em esforço maior. No caso de se utilizar uma carga de esforço superior, digamos que B, para maior precisão, o ficheiro de resultados fica com o nome nome_ID_B.
Execução com todos os parâmetros, pronta a reproduzir, utilizando a menor carga de esforço.