# Path: deep_architect/surrogates/common.py
# class SurrogateModel:
#     """Abstract class for a surrogate model.
#     """
# 
#     def eval(self, feats):
#         """ Returns a prediction of performance (or other relevant metrics),
#         given a feature representation of the architecture.
#         """
#         raise NotImplementedError
# 
#     def update(self, val, feats):
#         """Updates the state of the surrogate function given the feature
#         representation for the architecture and the corresponding ground truth
#         performance metric.
# 
#         .. note::
#             The data for the surrogate model may be kept internally. The update
#             of the state of the surrogate function can be done periodically, rather
#             than with each call to update. This can be done based on values for
#             the configuration of the surrogate model instance.
#         """
#         raise NotImplementedError


from deep_architect.surrogates.common import SurrogateModel
import numpy as np


class DummySurrogate(SurrogateModel):

    def __init__(self):
        self.val_lst = []

    def eval(self, feats):
        if len(self.val_lst) == 0:
            return 0.0
        else:
            return np.mean(self.val_lst)


# Path: deep_architect/surrogates/common.py
# class SurrogateModel:
#     """Abstract class for a surrogate model.
#     """
# 
#     def eval(self, feats):
#         """ Returns a prediction of performance (or other relevant metrics),
#         given a feature representation of the architecture.
#         """
#         raise NotImplementedError
# 
#     def update(self, val, feats):
#         """Updates the state of the surrogate function given the feature
#         representation for the architecture and the corresponding ground truth
#         performance metric.
# 
#         .. note::
#             The data for the surrogate model may be kept internally. The update
#             of the state of the surrogate function can be done periodically, rather
#             than with each call to update. This can be done based on values for
#             the configuration of the surrogate model instance.
#         """
#         raise NotImplementedError


# Path: deep_architect/surrogates/dummy.py
from deep_architect.surrogates.common import SurrogateModel
import numpy as np



class DummySurrogate(SurrogateModel):

    def __init__(self):
        self.val_lst = []

    def eval(self, feats):
        if len(self.val_lst) == 0:
            return 0.0
        else:
            return np.mean(self.val_lst)


    def update(self, val, feats):