O problema
Atualmente, estou trabalhando em uma simulação de Elementos Finitos de Navier Stokes e gostaria de investigar os efeitos de vários parâmetros. Alguns parâmetros são especificados em um arquivo de entrada ou através de opções de linha de comando; outros parâmetros são fornecidos como sinalizadores em um Makefile para que meu código precise ser recompilado sempre que eu alterar essas opções. Gostaria de obter alguns conselhos sobre uma boa maneira de explorar sistematicamente o espaço de parâmetros.
- Existem bibliotecas / estruturas C ++ / Python úteis que podem ajudar com esse tipo de coisa? Por exemplo, descobrir boost.Program_options foi uma grande ajuda, pois é possível sobrecarregar as opções de arquivo de entrada com argumentos de linha de comando. Também vi algumas pessoas usarem um arquivo de trabalho descrevendo cada caso com bastante eficiência e um colega sugeriu que a gravação de parâmetros em arquivos vtu como blocos de comentários também funcionasse.
- Talvez não valha a pena investir muito tempo nisso? É apenas uma distração e uma perda de tempo, e é melhor se concentrar no processo de teste de força bruta e ad hoc?
Alguns pensamentos
Atualmente, estou fazendo as coisas principalmente à mão e encontrei os seguintes problemas:
- Nomeando casos de teste . Tentei armazenar resultados em pastas nomeadas com os parâmetros de execução separados por sublinhados, por exemplo
Re100_dt02_BDF1...
. Elas rapidamente se tornam longas ou difíceis de ler / criptografadas se forem abreviadas demais. Além disso, os parâmetros de números reais incluem um.
que é estranho / feio. - Registrando dados executados . Às vezes, gostaria de ver os resultados gravados no terminal e também salvos em um arquivo de texto. Esta resposta do StackOverflow, por exemplo, é um pouco útil, mas as soluções parecem um pouco intrusivas.
- Plotando dados de acordo com o parâmetro . Leva algum tempo para coletar dados relevantes de uma variedade de arquivos de log em um único arquivo que eu possa plotar, com um sistema melhor, talvez isso se torne mais fácil.
- Gravando comentários nos dados . Depois de examinar os resultados, escrevo alguns comentários em um arquivo de texto, mas às vezes é difícil manter a sincronização com as pastas de resultados.