Pymoo学习 (5):收敛性分析

文章目录

  • 1 引入
  • 2 约束满足
  • 3 Pareto前沿未知
    • 3.1 Hypervolume (HV)
    • 3.2 运行指标
  • 4 Pareto前沿已知或者近似
    • 4.1 IGD/GD/IGD+/GD+
  • 参考文献

1 引入

??收敛性分析可以帮助我们在再次解决同一个问题时,更好地决定终止标准。收敛性分析应当考虑两种情况:
??1)Pareto前沿未知;
??2)Pareto前沿通过解析推导而来,或者存在合理的近似值。
??一个双目标优化示意如https://inkiyinji.blog.csdn.net//article/details/125914306,其Pareto前沿和解如下:

Pymoo学习 (5):收敛性分析

??示意中开启了一个历史记录选项save_history,这正是收敛性分析所需要的。当开启save_history后,其将记录每次迭代的算法对象并存储于Result对象中。该方法更占内存 (特别是对于多次迭代),但具有可以事后分析任何算法相关变量的优点。
??为了进行分析,算法的一些中间步骤需要被考虑。它们已经被以下实现:
??1)Callback类存储了算法每次迭代的必要信息;
??2)当使用最小化方法时开启save_history以记录。
??此外使用HypervolumeIGD来衡量算法的性能:

??从history可以导出我们所需要的信息:

2 约束满足

??首先,可以按如下查询每一代可行解的数量:

??输出如下:

??因为这个问题的复杂性低,所以很快就找到了可行的解决方案。然而,对应于自己的优化问题可能完全不同,因此需要先行分析:

Pymoo学习 (5):收敛性分析
??代码如下:

3 Pareto前沿未知

??如果Pareto前沿未知,则无法知道算法是否已经收敛到真正的最优值。当然也不是没有任何进一步的信息。因为依然可以看到算法在优化过程中何时取得了大部分进展,并确定迭代次数是否增减。此外,以下指标用于将两种算法相互比较:1)Hypervolume和2)IGD

3.1 Hypervolume (HV)

??Hypervolume是多目标优化中的一个很重要的指标,是Pareto兼容的,需要基于预定义参考点提供的解决方案之间的volume。因此,首先定义参考点ref_point,其应当大于Pareto前沿的最大值:

approx_ideal = F.min(axis=0)approx_nadir = F.max(axis=0)from pymoo.indicators.hv import Hypervolumemetric = Hypervolume(ref_point= np来源:因吉
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月21日
下一篇 2022年6月21日

相关推荐