Fdtd中粒子群算法的一些问题

fdtd

#1

老师您好:
我最近在用FDTD中的粒子群算法优化锥形波导。具体思路是均分成若干个taper,用算法优化taper的宽度。
我先扫描了一下各个宽度,确定了各个参数的一个范围,然后就用PSO算法。
问题是:算法得到的结果比文献要低,提高不上去。不知道是种群大小(generation size)过小还是迭代次数太少,又或者是我给定的参数范围有误。最终得到的最佳参数有很多都是给定范围的极限值。恳请老师给予解答和指教。我的仿真附上taper(20).fsp (1.9 MB)


#2

你现在需要优化的参数有20个,可能太多了,你需要更多的代数,种群大小50到100就可以,迭代次数可能需要大于200,例如到500。你想一想,20个参数,有多少种组合?既然长度L是固定的,仿真区两端的直波导部分应该尽量地短,也就是出现在仿真区中的直波导长度应该尽量短,以便减小内存需要。如果模式有对称性可以使用对称性边界条件进一步减小内存加快仿真进度 。

此外,个人的建议,你可以尝试几个几何形状,例如X^n (n<1, or n>1),参见
https://kb.lumerical.com/en/index.html?pic_passive_grating_coupler_3d.html
有初步的优化结果,在小范围内离散优化W可能更好。也就是说,W的数值范围不能太大,我感觉你给出的范围可能太大了,例如W2,它可能是4吗(你的定义与上图好像是相反的),因为它靠近细波导。参数的范围需要设计者认真分析。我个人认为,实际上优化算法没有那么聪明,它需要从大量的抽样中才能得到优化,如果抽样的数量比总的组合太小了,可能不一定能给出最佳效果。

对于优化,我个人有限的经验是,一定要多的代数,使得优化能跳出局部极值,因为粒子群算法可能会在某个局部极大附近徘徊,特别是参数比较多时,更是如此。

你试试看看。一定要清楚你现在的优化参数是很多的。如果愿意,你也可以参考API,用Matlab的优化算法测试。

网址是 v.youku.com/v_show/id_XMTYzMTg5NTcwNA==.html