Source code for l2l.optimizees.optimizee
from collections import namedtuple
OptimizeeParameters = namedtuple('OptimizeeParameters', [])
[docs]class Optimizee:
"""
This is the base class for the Optimizees, i.e. the inner loop algorithms. Often, these are the implementations that
interact with the environment. Given a set of parameters, it runs the simulation and returns the fitness achieved
with those parameters.
"""
def __init__(self, traj):
"""
This is the base class init function. Any implementation must in this class add a parameter add its parameters
to this trajectory under the parameter group 'individual' which is created here in the base class. It is
especially necessary to add all explored parameters (i.e. parameters that are returned via create_individual) to
the trajectory.
"""
traj.f_add_parameter_group('individual', 'Contains parameters of the optimizee')
[docs] def create_individual(self):
"""
Create one individual i.e. one instance of parameters. This instance must be a dictionary with dot-separated
parameter names as keys and parameter values as values. This is used by the optimizers via the
function create_individual() to initialize the individual/parameters. After that, the change in parameters is
model specific e.g. In simulated annealing, it is perturbed on specific criteria
:return dict: A dictionary containing the names of the parameters and their values
"""
[docs] def simulate(self, traj):
"""
This is the primary function that does the simulation for the given parameter given (within :obj:`traj`)
:param ~l2l.utils.trajectory.Trajectory traj: The trajectory that contains the parameters and the
individual that we want to simulate. The individual is accessible using `traj.individual` and parameter e.g.
param1 is accessible using `traj.param1`
:return: a :class:`tuple` containing the fitness values of the current run. The :class:`tuple` allows a
multi-dimensional fitness function.
"""