写在最前面:
这里简单地在应用层面上说明相关算法。 严密的数学知识,请参考底部的参考文献。 后期会有细分的能量,所以会先打孔。
基础知识:
通常,最速下降法是指欧氏度量意义上的最速下降法,最速下降法用于求解无约束非线性规划问题。
要解决的问题,可以编写如下。
[begin{array}{l}
begin{array}{*{20}{c}}
{}}{}
end{Array}minquadf(x )
begin{array}{*{20}{c}}
{}}{}
end{array}s.t.quad ; x in {R^n}
end{array}
() ) ) )。
其中,函数(f(x ) )具有1次连续偏导数。
(s.t.) )是subject to的缩写,即约束的含义。 集合(r(n )表示) (n )维欧式空间。
下降最快的方向是负梯度方向:
[ { d ^ { (k ) k}}=-(nablaf ) x ^ { (k ) } ) d ^ { (k ) k}}=-(nablaf ) x ^ { (k ) ) ) ) ) ) ) )。
() ) ) )。
程序框图:
对于具体的求解过程,我一般喜欢用程序框图来表达。
示例:
在此贴上用PPT上的手解开的例子。 通过手工解答的例子学习,有助于理解算法并进行编程:
解析Matlab代码:
首先,说明程序的结构。
其中,主函数作为主函数执行求解
Min_TD是最速下降算法的实现,修改求解函数只需修改main函数中具体求解公式的部分即可。
需要的东西可以下载学习。
(对于初学者,main和Min_TD必须放在同一个目录中才能正常运行哦。 )
参考文献:
优化理论与算法(第二版)陈宝林编著
优化理论Matlab