Hyperopt is a Python library for serial and parallel optimization over awkward search spaces, which may include real-valued, discrete, and conditional dimensions.
the objective function to minimize
the space over which to search
the database in which to store all the point evaluations of the search
the search algorithm to use