Tutorial python notebooks, accompanying the paper An illustrated tutorial on global optimization in nanophotonics (link).
We demonstrate how to do global optimization of the geometry of multi-layered photonic structures. Multi-layer simulations are done with PyMoosh
, as optimization toolkit we use Nevergrad
.
The tutorials have two main goals:
-
providing a simple introduction and a starting point for global optimization of multi-layer structures.
-
demonstrating advanced benchmarking in order to find the best optimization algorithm for a specific problem and to assess the quality of the found solution.
Three specific examples are treated:
-
optimization of a Bragg mirror
-
Solving of an ellipsometry inverse problem
-
design of a sophisticated antireflection coating to optimize solar absorption in a photovoltaic solar cell
-
01_getting_started_optimization_with_pymoosh.ipynb
: Very simple tutorial how to usePyMoosh
's internal DE optimizer (link to google colab version) -
02_getting_started_pymoosh_with_nevergrad.ipynb
: Very simple tutorial how to useNevergrad
optimizers withPyMoosh
(link to google colab version) -
03_algo_benchmark_pymoosh_with_nevergrad.ipynb
: Tutorial how to benchmark several algorithms, demonstrated on a small Bragg mirror problem (link to google colab version) -
04_ellipsometry_simple.ipynb
: Tutorial setting up the ellipsometry problem (link to google colab version) -
05_ellipsometry_algo_benchmark.ipynb
: Algorithm benchmark on the ellipsometry problem (link to google colab version) -
06_photovoltaics_simple.ipynb
: Tutorial setting up the photovoltaics problem (link to google colab version) -
07_photovoltaics_algo_benchmark.ipynb
: Algorithm benchmark on the photovoltaics problem (link to google colab version) -
09_paper_results_reference_Pymoosh_and_Nevergrad.ipynb
: Reproduce all results of the paper (link to google colab version)