1. 序列二次规划法 (SQP, Sequential Quadratic Programming)
概念
SQP 可以理解为一种“逐步优化”的方法。它将一个复杂的非线性优化问题拆分成一系列更简单的二次规划问题,然后逐步求解这些简单问题,最终逼近最优解。
特点
- 逐步优化:每一步都近似求解一个二次优化问题,通过不断迭代,逐步逼近原始问题的最优解。
- 处理非线性约束:SQP 在处理非线性约束(比如平方、对数等函数)方面非常有效。
- 精确度高:因为它是基于精确求解的小问题来逼近最终解,SQP 在许多复杂优化问题上表现出很高的精度。
2. 有效集法 (Active-Set)
概念
有效集法有点像“挑挑拣拣”的策略。它先猜测哪些约束在最优解处会“紧贴”或“激活”,然后只针对这些“激活”的约束来求解问题。如果猜得不对,就调整并重复这个过程。
特点
- 逐步调整约束:算法会在每一步中选择一部分约束来优化,类似于在边界上寻找最优解。
- 适合小规模问题:在约束比较少或问题规模不大的情况下,有效集法能够快速收敛并找到最优解。
- 几何直观:有效集法具有一定的几何意义,易于理解和分析。
3. 信赖域反射算法 (Trust-Region-Reflective)
概念
信赖域反射算法可以理解为“稳扎稳打”的方法。它不会贸然做大步的改变,而是设定一个“信赖域”(相当于一步之内能走的最大距离),在这个区域内寻找最优解。如果当前的解不够好,它会调整信赖域的大小,并继续优化。
特点
- 稳健性强:这个算法非常谨慎,避免了因为大步修改导致偏离最优解的风险。
- 处理大规模问题:特别适合处理大型稀疏问题,因为它可以灵活调整优化步伐,避免计算量过大。
- 反射性:在遇到约束边界时,它会“反射”回去,以确保解在约束范围内。
简单比喻
- SQP:像是一个有经验的裁缝,每次都裁剪一小块布料,逐步做成一件合身的衣服。
- Active-Set:像是在迷宫里走路,猜测哪些墙壁会挡住去路,然后调整方向找到出口。
- Trust-Region-Reflective:像是一个小心翼翼的登山者,每次只走一小段距离,确保不会走错路或摔倒,在边缘处则会谨慎地反弹回来
总结
- 内点法:适用于处理复杂、约束多的大规模线性和非线性问题。
- SQP(序列二次规划法):非常适合处理高精度的非线性优化问题,特别是当有复杂约束时。
- 有效集法:适合规模较小、约束条件较少的优化问题,特别是线性和一些非线性问题。
- 信赖域反射算法:适合有约束的大规模优化问题,尤其在约束复杂或问题稀疏时表现出色。