######################################################### # file: optimization_AR_coating_example_script.lsf # # Description: This script file # is used to generate and run the thickness # optimization as well as plot the results # # Copyright 2015, Lumerical Solutions, Inc. ######################################################### closeall; clear; # add a new optimization and set basic properties addsweep(1); setsweep("optimization", "name", "thickness_optimization_script"); setsweep("thickness_optimization_script", "Type", "Minimize"); setsweep("thickness_optimization_script", "algorithm", "Particle Swarm"); setsweep("thickness_optimization_script", "maximum generations", 20); setsweep("thickness_optimization_script", "generation size", 10); setsweep("thickness_optimization_script", "tolerance", 0); # define the parameter thickness para = struct; para.Parameter = "::model::AR structure::thickness"; para.Type = "Length"; para.Min = 0.05e-6; para.Max = 0.15e-6; para.Units = "microns"; # add the parameter thickness to the optimization addsweepparameter("thickness_optimization_script", para); # define figure of merit result_1 = struct; result_1.Name = "R"; result_1.Result = "::model::R::T"; result_1.Optimize = true; result_2 = struct; result_2.Name = "T"; result_2.Result = "::model::T::T"; result_2.Optimize = false; # add the figure of merits R & T to the optimization addsweepresult("thickness_optimization_script", result_1); addsweepresult("thickness_optimization_script", result_2); # run optimization runsweep("thickness_optimization_script"); # get & view the results - parameter value R = getsweepresult("thickness_optimization_script", "parameter trend"); value = R.getattribute("parameter value"); gen = R.getparameter("generation"); plot(gen, value / 1e-9, "generation", "parameter value (nm)", "thickness"); legend("");