An Iteration
is an atomic action that applies a given "algorithm" for each
item within the provided List[A]
.
An Iteration
is an atomic action that applies a given "algorithm" for each
item within the provided List[A]
.
An Iteration
may either run synchronously or asynchronously (but not in terms
of concurrency - at least, not yet)
The Algorithm
passed to an Iteration
scheme has the shape:
NonEmptyList[B] => B => Step[A,NonEmptyList[B]]
NB: Should consider trying to define this based on the Free monad?
A MetricSpace is a set together with a notion of distance between elements.
A MetricSpace is a set together with a notion of distance between elements. Distance is computed by a function dist which has the following four laws:
See the Wikipedia article on metric spaces for more details.
An Objective
represents the result of an evaluation.
An Objective
represents the result of an evaluation.
In most cases, Objective
values are Single
values that contain
the fitness and the violation count of an objective function evaluation.
Multi
duplicates the evaluation for multiple potential objective functions.
A Step
is a type that models a single step / operation within a CI Algorithm.
A Step
is a type that models a single step / operation within a CI Algorithm.
The general idea would be that you would compose different Step
s
to produce the desired algorithmic behaviour.
Even though this is an initial pass at modeling the compuation of CI algorithms this way, it does provide a recursive, list-like composition allowing a multitude of different usages (or it is hoped to be so).
Step
is nothing more than a data structure that hides the details of a
monad transformer stack which represents the algoritmic parts.