Core#
- class Algorithm(name: str = '')#
Bases:
ABCMinimal base class for CIFY algorithms. The only required method to implement is the
iteratemethod which is used inTask.- __init__(name: str = '')#
- Parameters:
name – An optional name for the
Algorithm. If name isn’t specified, the class name will be used.
- abstract iterate(f: ObjectiveFunction)#
The only function that must be overridden when implementing your own algorithm. This function must be the logic of one iteration of your algorithm.
- Parameters:
f – The
ObjectiveFunctionto optimize.
- class ObjectiveFunction(f: Callable, bounds: list, dim: int | None = None, opt: Optimization = Optimization.Min, name: str = '')#
Bases:
objectDefines an objective function to be optimized.
- __init__(f: Callable, bounds: list, dim: int | None = None, opt: Optimization = Optimization.Min, name: str = '')#
- Parameters:
f – The function to be optimized.
bounds – The bounds of the search space. Bounds should be passed
in as a list of lists, e.g. [[L, U], [L, U]], or as a [L, U] and use the dim parameter to specify the dimensions. :param dim: The number of dimensions. If unspecified, the length of the bounds will be used. :param optimization: Indicates whether the
ObjectiveFunctionis to be minimized or maximized. :param name: An optional name for the objective function. If unspecified, the function name will be used.
- property evaluations: int#
Returns the number of evaluations performed and resets the counter.
- Returns:
Number of function evaluations.
- property f: Callable#
Returns the function to be optimized.
- property opt: Optimization#
Returns the
ObjectiveFunction’s optimization type, either minimization or maximization.
- property bounds: list#
The boundary constraints represented as a list of the form:
[[LB1, UB1], …, [LBn, UBn]]
where UB is the upper bound and LB is the lower bound of the search space for that dimension. Can also be passed as a list of the form:
[LB, UB]
where the bounds will apply to all dimensions of the search space.
- cmp(a, b) bool#
Returns whether
ais better thanb.
- dim() int#
The number of dimensions of the search space.
- eval(vector) float#
Evaluates a vector using the objective function.
- Parameters:
vector – The vector to evaluate.
- in_bounds(vector: ndarray | List, index: int | None = None)#
Returns whether the vector is within the bounds of the optimization problem.
- lower_bounds() list#
Returns a list of floats consisting of the lower bounds of the
ObjectiveFunctionsearch space per dimension.
- upper_bounds() list#
Returns a list of floats consisting of the upper bounds of the
ObjectiveFunctionsearch space per dimension.
- sample() ndarray#
Uniformly samples a vector from the bounds of the optimization problem.
- class Optimization(value)#
Bases:
EnumThe
Optimizationclass is an enum that is used to define whether anObjectiveFunctionis to be minimized or maximized. The class contains two methods, of which one is more useful,cmp.- Min = 1#
- Max = 2#
- cmp(a, b, equal=False) bool#
A comparison function returned by an objective function which can be used when constructing algorithms to handle optimizing minimization or maximization objective functions. The
cmpfunction takes two arguments and returnsTrueifais better thanbotherwiseFalse.For minimization objective functions,
cmpfunction checks whetherais less thanb, and for maximization objective functionscmpchecks whetheragreater thanb. Think of it as saying, “isabetter than theb”.- Returns:
Whether
ais better thanb.
- best(a, b) bool#
Use
cmpto return the better parameter.- Returns:
aifcmp(a,b) is True otherwise ``b.
- default()#
- Returns:
A worst case value, i.e
np.infforMinand-np.inf
for
Max.
- verb() str#
- Returns:
A verb representation of the optimization type.
- class Position(input: ndarray | List | ObjectiveFunction)#
Bases:
objectMinimal object that defines a decision vector, and it’s evaluation.
- __init__(input: ndarray | List | ObjectiveFunction)#
- __init__(vector: ndarray | list, f: ObjectiveFunction | None = None, eval_on_init: bool = True)
- __init__(vector: ndarray | list, f: ObjectiveFunction | None = None, eval_on_init: bool = True)
- __init__(f: ObjectiveFunction, eval_on_init: bool = True)
- Parameters:
vector – The position vector. This will always be
converted to a Numpy array. :param f: The
ObjectiveFunctionto use forPositionevaluation.
- property vector: ndarray#
Returns the vector as a Numpy array.
- dim()#
Returns the dimension of the decision vector.
- class Task(optimizer, f, optimization=Optimization.Min, max_evaluations=inf, max_iterations=inf, cutoff_value=None, log_evaluations=None, log_iterations=None, metrics=None)#
Bases:
objectDefines a task to be executed.
- __init__(optimizer, f, optimization=Optimization.Min, max_evaluations=inf, max_iterations=inf, cutoff_value=None, log_evaluations=None, log_iterations=None, metrics=None)#
- eval(vector) float#
- Returns:
The objective function value of the vector.
- stopping_condition() bool#
- Returns:
Whether the stopping condition has been reached.
- next_iteration()#
Increments the iterations counter.
- run()#
Optimizes the objective function.
- start()#
Start recording the time taken to optimize.
- end()#
End recording the time taken to optimize.
- time_taken() float#
- Returns:
Time taken in seconds to optimize..
- log(verbose=True)#
- rng() Generator#
Returns the global random number generator used for stochastic operations.
- set_seed(seed)#
Sets the global seed for the internal random number generator.
- Parameters:
seed (None, int, array-like[ints], numpy.SeedSequence, BitGenerator,) – The seed value to be used by the generator, defaults to None
Generator, optional
- positions(n: int, f: ObjectiveFunction)#
- Returns:
A list of n positions.