本程序介绍了如何在MATLAB环境中实现基于Armijo线搜索准则的BFGS优化算法。通过该算法,能够有效求解非线性优化问题,并提供了详细的代码示例和注释说明。
非线性最优化问题主要算法的Matlab程序设计包括以下内容:
**线搜索技术**
1. `golds.m`:使用0.618法求单变量函数在区间[a,b]上的近似极小点。
2. `qmin.m`:抛物线方法,用于寻找给定初始点s的局部最小值,在[a,s]和[s,b]上进行搜索。
3. `armijo.m`:实现Armijo准则程序模块。
**最速下降法及牛顿法**
4. `grad.m`:基于Armijo非精确线搜索的最速下降法Matlab程序。
5. `dampnm.m`:阻尼牛顿方法,使用了Armijo规则进行迭代。
6. `revisenm.m`:修正后的牛顿算法,改进了原始方法中Hesse矩阵正定性的要求。
**共轭梯度法**
7. `frcg.m`:FR型的再开始共轭梯度法程序。
**拟牛顿法**
8. `sr1.m`:对称秩一(SR1)算法,基于Armijo搜索。
9. `bfgs.m`:BFGS方法,适用于非线性优化问题中的二次逼近。
10. `dfp.m`:DFP公式程序实现。
11. `broyden.m`:Broyden族算法的Matlab代码。
**信赖域方法**
12. `trustq.m`:光滑牛顿法求解信赖域子问题,适用于Hesse阵正定的情况。
13. `trustm.m`:基于Newton的方法解决信任区域问题。
**非线性最小二乘问题**
14. `lmm.m`:Levenberg-Marquardt算法用于处理非线性的方程组求解。
**罚函数法**
15. `multphr.m`:PHR乘子方法,适用于有约束优化的问题解决。
**二次规划法**
16. `qlag.m`:拉格朗日方法应用于等式约束下的二次规划问题。
17. `qpact.m`:有效集策略用于求解带有不等式和等式的凸二次规划问题。
**序列二次规划法**
18. `qpsubp.m`:光滑牛顿算法,专门解决二次规划子问题。
19. `sqpm.m`:SQP方法程序,适用于一般约束优化的解决方案。