如何使用FOM进行优化计算

fdtd

#1

老师,我对使用FOM进行优化设计很感兴趣,但是我不知道该怎么运用之。我想请孙老师帮忙建立附件图1(a)所示的模型,希望能够再现类似附件中图1(b)的结果。需要选择的参数和优化目标我已经在文献中标注了。谢谢。FiO-2015-FTh3F.7.pdf (192.4 KB).


#2

我们网上有例子,请先测试2D,熟悉后再做3D的:
https://kb.lumerical.com/en/index.html?pic_passive_grating_coupler_2d.html
https://kb.lumerical.com/en/index.html?pic_passive_grating_coupler_3d.html
内有优化和扫描组。扫描和优化设置的说明参见这里
https://kb.lumerical.com/en/index.html?sweeps_optimizations_yields.html


#3

孙博士,我在优化模拟中设置最大迭代数20,generation size为20,我能得到一个稳定值的FOM;但是将模拟中最大迭代数更改为50,generation size为20,会新得到一个FOM值。我想知道优化结果与最大迭代数有关吗?如何选择合适的最大迭代数?如何判断我的优化是已经完成或者失败?


#4

这个是比较复杂的问题,涉及对粒子群优化算法的理解。大家可以参考一些普及读物,例如
百度百科
我没法给你一个具体的答复,仅给出我的一些建议。

根据我个人的测试与体会,当Maximum Generations比较小时,粒子群可能被局限在某个局部的极值附近,这也是此方法的缺点之一。为了克服这个缺点,同时也为了减少总的仿真时间(正比于MaximumGenerations与generationsize的成绩),我的建议是,用更大的Maximum Generations和较小的generation size,这也是我们的缺省设置是,generation size为20,而Maximum Generations为50。如果你最多能方针1000个仿真文件(主要是时间问题),我宁愿用100代。

再多说一点:请查看FOM的变化曲线,如果曲线没有完全平坦,说明可能还需要进一步优化。有的时候,中间一段的FOM可能比较平坦,再多仿真几代或者二十代,FOM会有变化。

另外一个建议:先做扫描,找到个参数的原始范围再优化,别指望随便用一组原始参数就难能通过有限的仿真就能得到最优结果。


#5

谢谢孙博士的指导。我的理解是有的时候能够得到一个比较优化的结果也是可以接受的,未必一定是最优化的。


#6

的确,除非这些粒子走遍了所有的参数空间。


#7

孙博士,你好,我还有问题要请教。比如说有10代运算,每一代会有三个参数。优化运算结束后,只显示最后一代的参数,过程中的这些参数有保存吗?保存在什么监视器中?如何调阅?能以官网的例子截图指导吗?


#8

Hi @yesong

你好。这些参数都会保存,你可以右击优化观察结果。结果的列表里面有fom history 和parameter history等选项,就是历史结果。在visualizer里面点击view data可以观察原始数据。

希望这些可以帮到你,有后续问题可以追加提问 :slight_smile:


#9

这个例子为例:
运行后用下列脚本
Para = getsweepresult(“thickness_optimization”, “parameter history”);
value = Para.getattribute(“parameter value”);
gen = Para.getparameter(“generation”);
siz = Para.getparameter(“member”);
image(siz,gen,value);

得到优化结果FOM作为generation size (siz) 和 generation (gen)函数的图形。

提取parameter trend可以得到优化参数随generation (gen)变化的情况:
R = getsweepresult(“thickness_optimization”, “parameter trend”);
value = R.getattribute(“parameter value”);
gen = R.getparameter(“generation”);
plot(gen, value / 1e-9, “generation”, “parameter value (nm)”, “thickness”);
legend("")
这个是一个参数的优化,多参数应该可以分开。


#10

谢谢孙博士指导。学到了很多有用的东西。