nextnano optimizers Python package#
Version: 0.6.0
The nextnano optimizers Python package is interfacing minimization and evolution algorithms with nextnano simulation tools: nextnano++, nextnano³, and nextnano.NEGF. The package takes care of proper execution of simulations for optimization algorithms and definitions of problems to optimize based on standard nextnano outputs.
The optimization problem that nextnano optimizers solves is defined in the following way: given a set of input parameters for the device design \([x_1, x_2,...,x_N]\) (i.e. input file variables such as thicknesses of layers, temperature, alloy contents, simulation hyperparameters etc) and their respective limits, find such input variables vector that minimizes/maximizes the metric function \(f(x_1, x_2,...,x_N)\) (i.e. a figure of merit such as quantum efficiency, bandgap, etc). The objective could be also to have a target value of the metric function \(f_{target}\). In this case, the problem is defined as a minimization problem with the objective to minimize the difference between the target value and the metric function \(|f-f_{target}|\). The nextnano optimizers package also able to handle multi-objective optimization problems, where the metric function is a vector. In this case the Pareto dominant solutions are searched for.
The metric function can be a function of the simulation results (i.e. a post-processing function) or a combination of simulation results and input parameters.
The user can choose between optimization algorithms from scipy.optimize and pymoo:
SciPy.optimize contains set of deterministic optimization algorithms to solve root and minimization problems. You can visit the documentation here.
pymoo is a Python library developed by J. Blank and K. Deb [Blank2020]. It is an interface facilitating implementation of various evolutionary algorithms such as evolution strategies or genetic algorithms. It can be used to solve many kinds of single- and multi-objective problems.
We recommend using SciPy algorithms to solve simple single-objective problems, while pymoo is more suited for multi-objective problems as well as for problems that have convergence issues with deterministic algorithms.
The figure below illustrates the use of nextnano optimizers to optimize AlGaN UV-LED device. The goal is to maximize the internal quantum efficiency (IQE) of the device by optimizing the superlattice structure: Al content, thicknesses of the layers and the number of periods. The optimization starts from an initial design with a quantum efficiency of 4% and over the course of 40 generations finds a design with a quantum efficiency of 72%.
Figure 1 Example of optimization of AlGaN UV-LED device using nextnano optimizers.#
User Guide#
Instructions to install and configure the package, basic definitions, and brief introduction to evolutionary algorithms.
Examples#
Examples demonstrating functionality of nextnano_optimizers.
API#
The content of exposed nextnano_optimizers API.