# Path: Problems/Problem.py
# class Problem(object):
#     __metaclass__ = abc.ABCMeta
#     dimension = 0
#     upper_bound = float("+inf")
#     lower_bound = float("-inf")
#     optimization = "min"
# 
#     @abc.abstractmethod
#     def __init__(self, dimension, upper_bound=float("+inf"), lower_bound=float("-inf"), optimization="min"):
#         """
#         This method should be overloaded and used to initialize the problem
#         :param dimension: the dimension on the problem
#         """
#         self.dimension = dimension
#         self.upper_bound = upper_bound
#         self.lower_bound = lower_bound
#         self.optimization = optimization
#         return
# 
#     @abc.abstractmethod
#     def evaluate(self, candidate):
#         """
#         This method should be overloaded and used to evaluate a candidate solution to the problem
#         :param candidate: the candidate solution to the problem
#         """
#         assert isinstance(candidate, Optimizers.Solution)
#         return


from Problems.Problem import Problem
__author__ = 'Stuart Gordon Reid'
__email__ = 'stuartgordonreid@gmail.com'
__website__ = 'http://www.stuartreid.co.za'

"""
http://www-optima.amp.i.kyoto-u.ac.jp/member/student/hedar/Hedar_files/TestGO_files/Page295.htm
"""




# Path: Problems/Problem.py
# class Problem(object):
#     __metaclass__ = abc.ABCMeta
#     dimension = 0
#     upper_bound = float("+inf")
#     lower_bound = float("-inf")
#     optimization = "min"
# 
#     @abc.abstractmethod
#     def __init__(self, dimension, upper_bound=float("+inf"), lower_bound=float("-inf"), optimization="min"):
#         """
#         This method should be overloaded and used to initialize the problem
#         :param dimension: the dimension on the problem
#         """
#         self.dimension = dimension
#         self.upper_bound = upper_bound
#         self.lower_bound = lower_bound
#         self.optimization = optimization
#         return
# 
#     @abc.abstractmethod
#     def evaluate(self, candidate):
#         """
#         This method should be overloaded and used to evaluate a candidate solution to the problem
#         :param candidate: the candidate solution to the problem
#         """
#         assert isinstance(candidate, Optimizers.Solution)
#         return


# Path: Problems/Ackley.py
from Problems.Problem import Problem

__author__ = 'Stuart Gordon Reid'
__email__ = 'stuartgordonreid@gmail.com'
__website__ = 'http://www.stuartreid.co.za'

"""
http://www-optima.amp.i.kyoto-u.ac.jp/member/student/hedar/Hedar_files/TestGO_files/Page295.htm
"""




class Ackley(Problem):