Skip to content

uclid-org/medley-solver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MedleySolver

About

MedleySolver is an algorithm selection tool for SMT queries. After receiving a directory of .smt2 queries as input, it attempts to optimally dispatch its pool of solvers in an optimal way. MedleySolver comes with multiple classification methods, including multiple approaches to the Multi Armed Bandit Problem and a novel nearest neighbor which appears to outperform all other approaches. MedleySolver is highly configurable, but can also be run without any modification to deliver speedup instantly.

Installation

  1. Install as many SMT solvers as desired. Our recommendations are z3 , CVC4, Yices, and Boolector. MedleySolver requires access to a diverse and competitive set of SMT solvers in order to provide results.

  2. Add shell invocations for each solver to the SOLVERS dictionary in medleysolver/constants.py. 

  3. Run the following command:

    python3 setup.py install
  1. MedleySolver is ready to run! It can be run with the following line:
    // medley [input folder of smt queries] [output csv file]
    medley ~/folder/ results.csv

Documentation for usage is available by running:

    medley -h

Getting Data

sh runmedley.sh QF_ABV; ./process.py QF_ABV > qfabv.csv

where QF_ABV is a folder containing queries and CSV files for individual solvers. Every CSV should be sorted by the name of the query and the names should use relative paths.

./ordermisses.py Sage2 nearest
./timemisses.py Sage2 nearest

will print all the times the CSV file nearest.csv messed up the order or messed up the time allocation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •