原文链接:优化中一个少见但困难的问题实例,欢迎关注微信公众号:二层楼实验室
问题描述,如下图。
这是一个少见的有类似 “离群”特性的问题,属于比较偏难怪的问题。
直观来看,也看不出哪个算法明显的合适,那就尝试几种不同的算法。
下面分别使用粒子群算法、遗传算法、模拟退火算法来求解。
粒子群算法求解过程及探索区域如下:其中:粒子个数10.评估点数2000.搜索区域较大,靠近最优解附近搜索密度较大,但没能找到最优解。求解结果:[210363,2.1,-21],接近全局最优解,解缺乏精度。
遗传算法求解过程及探索区域如下:其中:粒子个数50.评估点数2000.搜索区域较大,在局部最优解附近搜索密度较大(陷入局部最优),此次求解未能找到全局最优解。
求解结果:[2001,-775021, -15.21],接近全局最优解,但缺乏精度。
模拟退火算法求解过程及探索区域如下:初始解随机生成.搜索区域较大,在最优解附近搜索密度较大,找到全局最优解。求解结果:[0,0,-31],为全局最优解。
由前述系列文章及以上求解过程及最终结果可知,PSO算法及遗传算法探索区域较大,大部分情况下能够有效避免陷入局部极小值,同时在最小值附近能够集中搜索,得到较高的精度,但是所需求解步数较大,求解时间消耗较长。模拟退火算法也是一种启发式的算法,大部分情况下能够有效避免陷入局部极小值,所需求解步数较大。这三种算法所需算力较大,但前两种算法可用分布式并行计算,可缓解算力压力。实际工程中很少遇到上述类似的问题,这类问题可能会难倒绝大部分算法,本例中模拟退火算法搜寻到了精确全局最优解,但是可以想到,这是一种偶然的现象,在时间和算力资源有限的情况下,找不到全局最优解是大概率事件。
在实际工程应用中需结合经验,综合考虑,选取合适的优化算法,以期以较小的时间和资源开销得到较优的结果。