Amrita Pati
Ansys Employee

Hi Saurav,

With Lumerical’s in-built Optimization tool (which uses PSO), you can have different constraints. For ex. screenshot of a multi-constraint optimization that I was working on a while ago is shown:

But the PSO can maximize/minimize a single objective function. In terms of the objective function there can be two variations:

  1. First one is that if you have a single objective function but you are looking at it’s multiple values. For ex., the transmission spectrum that you mentioned here. In those cases what is typically done is you have to come up with a different figure of merit that manages to quantify a series of Ts over wavelength into a single value. For this, what you have to do is add “T” to the Figure of Merit. But at the same time, you have to enable the “Use figure of merit script” in the Advanced Tab and then you have to decide what this FOM can be (in the section for code) for transmission across a range of wavelengths. For ex. something like fom = integrate(T^2,1,f); What this does is takes the multiple values of T in a range of frequecies, integrates them over the frequency, which converts it into a single value that can be minimized or maximized. So, this takes into consideration not just a single value of T, but the values of T over the entire spectrum.

  2. The second consideration is a multi-objective optimization. Which is when you are looking at different objective functions. For ex. along with T if you are looking at some other result. In those cases there can be two approaches. The first is, you either have to find a way to combine multiple objective functions into a single function. There are many papers on that. One approach is that, you simply add all the objective functions, and assign each term a weight to decide the priority of each objective. In that case, you can use the inbuilt PSO and add the FOM like I mentioned before. But in general I have seen that PSO is not very effective at multi-objective optimization.

The second approach is to use a different algorithm altogether which can be done from the user defined algorithm section as shown below:

Please let me know if you have any questions.