The optimiser algorithms are provided by the free/open source library NLopt developed and maintained by Steven G. Johnson who is professor of Applied Mathematics and Physics at MIT.
The library contains over 20 optimiser algorithms, however, for circuit simulation applications we have identified two algorithms in the library that give consistently superior results. These are:
Currently SIMetrix only supports "Derivative-free" optimisation algorithms. That is algorithms that do not require the calculation of the partial derivatives (or sensitivities) of each objective and constraint with respect to every parameter. The calculation of each derivative requires one additional simulation run for each parameter and so is in general expensive. However, algorithms that do require derivatives to be calculated, usually converge much more quickly.
In this topic:
Many of the other available algorithms may be used on an experimental basis. Check the Show experimental box and the algorithm drop down box will be populated with many more choices. Here are some details about each algorithm:
Algorithm | Details |
NELDER_MEAD_AL | Supports constraints. Nelder-Mead coupled with Augmented Lagrangian, see notes below |
BOBYQA | Unconstrained only. Bound Optimization BY Quadratic Approximation. Developed by Michael Powell. This algorithm attempts to model the objective function as a quadratic which tends not to work that well in circuit simulation applications |
BOBYQA_AL | Supports constraints. BOBYQA coupled with Augmented Lagrangian, see notes below |
SBPLX | Unconstrained only. This is a variant of Nelder Mead and claims to be superior. However this is not what we have found in circuit simulation applications |
SBPLX_AL | Supports constraints. SBPLX coupled with Augmented Lagrangian, see notes below |
PRAXIS | Unconstrained only. Principal axis method developed by Richard Brent |
PRAXIS_AL | Supports constraints. PRAXIS coupled with Augmented Lagrangian, see notes below |
The augmented Lagrangian algorithm is a derivation of Lagrangian multipliers and is used to convert a constrained problem into an unconstrained problem. Each of the unconstrained local optimiser methods have augmented Lagrangian variations that have the suffix _AL. Important: the augmented Lagrangian method does not normalise the constraints. To get the constraint functions to work with any of these methods, it is necessary to apply appropriate scaling to each constraint function. For example, in the amp-700 circuit, the distortion constraint has almost no effect unless it is multiplied by about 1000, so the limit changes from 0.01 to 10. This is not the case with the COBYLA algorithm which supports constraints directly and does not require special scaling.
◄ Optimiser GUI Description | Overview ▶ |