nextnano_optimizers.optimizer module#
Two optimizer classes, both built on the same pair of objects: an
IO describing which variables to vary and which
outputs to read, and a Metric turning those
outputs into objective values.
Optimizer wraps scipy.optimize. It is the right choice for a
single, smooth, well-behaved objective started from a decent initial guess —
root finding or local minimization. It evaluates one candidate at a time.
Evolution wraps the pymoo algorithms. It works on a population, needs
bounds rather than an initial guess, tolerates failed simulations and
non-smooth objectives, and handles several objectives at once — in which case
the result is a Pareto front rather than a single point.