Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adding EnvelopedWaves and MultiObjectiveEnvelopedWaves as two new synthetic functions with many useful properties.
These are sine waves enveloped by another function, either linear, quadratic or another sine wave.
An enveloped sine wave produces complexity for the optimizer that allows us evaluate its behavior on non-trivial problems.
Simultaneously, sine waves have the following advantages over polynomials:
1. They have well known optima - even when we envelop the function with another sine wave, as long as we keep their frequencies harmonic, we can know exactly where the optimum is.
2. They cannot be well approximated by a polynomial (Taylor expansion is accurate only locally).
3. For multi-objective problems, we can manipulate the phase shift of each objective to control the shape of the pareto frontier.
The way multi-objective enveloped waves work is that we pass the same parameters through 1 or more single-objective enveloped waves functions.
One useful property is that we not only know where the optima for individual functions are (maxima of sine are easy to find),
but we can also know and control the shape of the pareto frontier, by controlling the phase difference between the individual
objectives. For example: a phase difference of 0, means that that the objective functions are overlaid on top of each other
and their optima are exactly on top of each other, so the pareto frontier is a single, optimal point
Alternatively, the phase difference of quarter-period, introduces a trade-off between the objectives where
y0 = sin(x)
and
y1 = sin(x - math.pi / 2) = -cos(x)
which yields a pareto frontier in a shape of a quarter-cirle.
Yet another option is to use a phase difference of math.pi. This yields a trade-off between the objectives where:
y0 = sin(x)
and
y1 = sin(x - math.pi) = -sin(x) = -y0
which yields a pareto frontier where a gain in one objective results in an equal loss in the other objective, so the shape
of that frontier is a diagonal of a square.