# 6.2.5. Generator, Selector, Spawning¶

## 6.2.5.1. Initial parameters generator¶

When a new optimizer is started, the initial parameters can be controlled with the `Generator`

block which follows the general pattern:

```
Generator
ExploreExploit
Focus float
MaxFunctionCalls integer
End
Perturbation
StandardDeviation float
End
Type [Incumbent | ExploreExploit | Perturbation | Random | SinglePoint]
End
```

`Generator`

- Type
Block

- GUI name
Starting point generator:

- Description
A Generator used to produce x0 starting points for the optimizers.

`ExploreExploit`

- Type
Block

- Description
Blends a randomly generated point with the location of an existing optimizer, based on the time progress through the optimization. The optimizer is chosen based on a weighted roulette selection based on their function value. Early in the optimization optimizers are started randomly, and later they are started near previously found good minima.

`Focus`

- Type
Float

- Default value
1.0

- Description
The blend parameter between random point and incumbent points. Used as follows: p=(f_calls / max_f_calls) ** focus

`MaxFunctionCalls`

- Type
Integer

- Description
Maximum function calls allowed for the optimization, at and beyond this point there is a 100% chance that a previously evaluated point will be returned by the generator. If the optimization is not limited by the number of function calls, provide an estimate.

`Perturbation`

- Type
Block

- Description
Randomly generates parameter vectors from a multivariate normal distribution around the starting parameters.

`StandardDeviation`

- Type
Float

- Default value
0.2

- Description
Standard deviation of the multivariate normal distribution. Used here to control how wide the generator should explore around the starting parameters.

`Type`

- Type
Multiple Choice

- Default value
SinglePoint

- Options
[Incumbent, ExploreExploit, Perturbation, Random, SinglePoint]

- GUI name
Starting points generator

- Description
Algorithm used to pick starting points for the optimizers. Available options: • Incumbent: Optimizers will be started at the best point seen thus far by any optimizer. First point is random. • ExploreExploit: Early starting points are random, but later points are closer to good minima. • Perturbation: Each starting point is a drawn from a multivariate Gaussian distribution centred at the initial parameter set. • Random: Optimizers are started at random locations in parameter space. • SinglePoint: All optimizers are started at the initial parameter values.

## 6.2.5.2. Optimizer selector¶

If you have multiple `Optimizer`

blocks, then when a new Optimizer is started
it will be selected according to the rule defined by the `OptimizerSelector`

which follows the general pattern:

```
OptimizerSelector
Chain
Thresholds integer_list
End
Type [Cycle | Random | Chain]
End
```

`OptimizerSelector`

- Type
Block

- GUI name
Selection between optimizer types:

- Description
If multiple Optimizers are included, then this block must be included and configures the Selector which will choose between them.

`Chain`

- Type
Block

- Description
Start different optimizers at different points in time based on the number of function evaluations used.

`Thresholds`

- Type
Integer List

- Description
List of loss function evaluation thresholds which switch to the next optimizer in the list. If there are n optimizers available, then this list should have n-1 thresholds.

`Type`

- Type
Multiple Choice

- Default value
Cycle

- Options
[Cycle, Random, Chain]

- GUI name
Select optimizer by

- Description
Name of the algorithm selecting between optimizers. Available options: • Cycle (Default): Sequential loop through available optimizers. • Random: Optimizers are selected randomly from the available options. • Chain: Time-based progression through the list of available optimizers. The next option will be started once a certain number of loss function evaluations have been used.

## 6.2.5.3. Control optimizers spawning¶

```
ControlOptimizerSpawning
MaxEvaluations integer
MaxOptimizers integer
End
```

`ControlOptimizerSpawning`

- Type
Block

- Description
Control the spawning of optimizers. Note, this is different from ExitConditions. These simply stop new optimizers from spawning, but leave existing ones untouched. ExitConditions shutdown active optimizers and stop the optimization.

`MaxEvaluations`

- Type
Integer

- GUI name
– n loss function evaluations

- Description
No new optimizers will be started after this number of function evaluations has been used. Note, this is different from the equivalent exit condition which would terminate existing optimizers rather than simply not allowing new ones to spawn.

`MaxOptimizers`

- Type
Integer

- GUI name
– n optimizers started

- Description
No new optimizers will be started after this number has been spawned. Note, this is different from the equivalent exit condition which would terminate existing optimizers rather than simply not allowing new ones to spawn.