Este pacote vem com um conjunto simplificado de exemplos já gerados.
Os testes gerados ficam no diretório input/ e as soluções esperadas
(gabaritos) estão armazenadas no diretório output/.
Você pode gerar os exemplos que estão faltando, mas isso pode consumir muito espaço em disco (mais de 12GB).
Já no diretório formulas/, existem as fórmulas originais, em DIMACS
CNF, utilizadas para gerar os testes para o seu verificador.
O binário simple-gsat-io-generator é o programa utilizado para gerar
os casos de teste, e o gabarito, que você usará como entrada para o
seu verificador.
Este repositório faz uso de git-lfs, verifique se o pacote está instalado (debian é git-lfs) antes de fazer o git clone.
Você pode executar o comando abaixo para gerar todos os casos de teste empacotados.
make TIMELIMIT=10O parâmetro TIMELIMIT indica o tempo máximo que o gerador de testes pode ficar rodando, em alguns exemplos ele pode gerar uma entrada gigantesca. O TIMELIMIT padrão é 30 segundos
Você também pode passar a variável DEFAULTSEED, sendo uma semente
para o gerador aleatório, o padrão é
Você pode invocar o make com o parâmetro benchmark, desta forma
ele irá executar o benchmark padrão, para todos arquivos dentro do
diretório input/.
Você também poderá executar o benchmark usando a sua solução
passando a variável BENCHMARKBINARY, por exemplo:
make benchmark BENCHMARKBINARY=./meuverificador- naturalmente trocando a string
./meuverificadorpara o path do seu programa verificador.
A diretiva make clean remove os arquivos de saída gerados pelo
benchmark
Já a diretiva make dist-clean remove tudo que a clean remove e
ainda remove o conteúdo dos diretório input/ e output/.
Você pode obter mais fórmulas no site https://www.cs.ubc.ca/~hoos/SATLIB/benchm.html
Basta colocar o arquivo da fórmula, com extensão .cnf, dentro do
diretório formulas/ e rodar o comando make (com as suas variações
como TIMELIMIT e DEFAULTSEED, como explicado acima) para gerar os
arquivos de entrada e gabarito.
Você pode gerar entradas maiores aumentando o timelimit do gerador, por exemplo:
make dist-clean && make TIMELIMIT=120- com 120 segundos de timelimit, o diretório output vai consumir aproximadamente 30GB.
Para comparar resultados você deve invocar a diretiva verificar, por exemplo:
make verificar BENCHMARKBINARY=./meuverificador- Se não passar a variável
BENCHMARKBINARYo sistema utilizará o verificador padrão.
Esta diretiva de verificação vai rodar todos os benchmarks (caso não
tenham sido executados) e depois irá comparar os arquivos gerados pelo
verificador com o gabarito armazenado no diretorio output/
- Prof. Bruno Ribas, Mar 2021