# Path: opentuner/search/technique.py
# class SearchTechniqueBase(with_metaclass(abc.ABCMeta, object)):
# class SearchTechnique(SearchPlugin, SearchTechniqueBase):
# class PureRandom(SearchTechnique):
# class AsyncProceduralSearchTechnique(SearchTechnique):
# class SequentialSearchTechnique(AsyncProceduralSearchTechnique):
#     def __init__(self, name=None):
#     def is_ready(self):
#     def default_name(self):
#     def handle_requested_result(self, result):
#     def set_driver(self, driver):
#     def desired_result(self):
#     def __init__(self, *pargs, **kwargs):
#     def set_driver(self, driver):
#     def desired_result(self):
#     def desired_configuration(self):
#     def handle_requested_result(self, result):
#     def default_generated_name(self):
#     def use_default_generated_name(self):
#     def base_name(self):
#     def get_hyper_parameters(cls):
#     def generate_technique(cls, manipulator=None, *args, **kwargs):
#     def desired_configuration(self):
#     def __init__(self, *pargs, **kwargs):
#     def call_main_generator(self):
#     def desired_configuration(self):
#     def main_generator(self):
#     def is_ready(self):
#     def __init__(self, novelty_threshold=50, reset_threshold=500, *pargs, **kwargs):
#     def yield_nonblocking(self, cfg):
#     def call_main_generator(self):
# def register(t):
# def register_generator(cls, generator_weight=1.0, *args, **kwargs):
# def get_random_generator_technique(generators=None, manipulator=None):
# def weighted_choice(choices):
# def all_techniques():
# def get_enabled(args):
# def get_root(args):


from opentuner.search import technique


class PatternSearch(technique.SequentialSearchTechnique):
    def __init__(self, initial_step_size=0.4):
        super(PatternSearch, self).__init__()
        self.initial_step_size = initial_step_size

    def main_generator(self):

        objective = self.objective

# Path: opentuner/search/technique.py
# class SearchTechniqueBase(with_metaclass(abc.ABCMeta, object)):
# class SearchTechnique(SearchPlugin, SearchTechniqueBase):
# class PureRandom(SearchTechnique):
# class AsyncProceduralSearchTechnique(SearchTechnique):
# class SequentialSearchTechnique(AsyncProceduralSearchTechnique):
#     def __init__(self, name=None):
#     def is_ready(self):
#     def default_name(self):
#     def handle_requested_result(self, result):
#     def set_driver(self, driver):
#     def desired_result(self):
#     def __init__(self, *pargs, **kwargs):
#     def set_driver(self, driver):
#     def desired_result(self):
#     def desired_configuration(self):
#     def handle_requested_result(self, result):
#     def default_generated_name(self):
#     def use_default_generated_name(self):
#     def base_name(self):
#     def get_hyper_parameters(cls):
#     def generate_technique(cls, manipulator=None, *args, **kwargs):
#     def desired_configuration(self):
#     def __init__(self, *pargs, **kwargs):
#     def call_main_generator(self):
#     def desired_configuration(self):
#     def main_generator(self):
#     def is_ready(self):
#     def __init__(self, novelty_threshold=50, reset_threshold=500, *pargs, **kwargs):
#     def yield_nonblocking(self, cfg):
#     def call_main_generator(self):
# def register(t):
# def register_generator(cls, generator_weight=1.0, *args, **kwargs):
# def get_random_generator_technique(generators=None, manipulator=None):
# def weighted_choice(choices):
# def all_techniques():
# def get_enabled(args):
# def get_root(args):


# Path: opentuner/search/patternsearch.py
from opentuner.search import technique



class PatternSearch(technique.SequentialSearchTechnique):
    def __init__(self, initial_step_size=0.4):
        super(PatternSearch, self).__init__()
        self.initial_step_size = initial_step_size

    def main_generator(self):

        objective = self.objective

        driver = self.driver