最优化方法 | 【线搜索:二分法的Matlab实现】

最优化方法 | 【线搜索:二分法】的Matlab实现

最优化理论与方法是一门应用性很强的年轻学科。它研究某 些菱学上定义的问題的最优解,即对于给出的实际问题,从众多的 方案中选出最优方來. 虽然最优化京以追湖到十分古老的极值问题,然而,它成为 一门独立的学科是在本世纪 40 年代末,是在 1947 年 Dantzig 提 出求解一般线性规划问题的单纯形法之后・现在,範线性规划、非 线性规划以及随机规划、非光滑规划、多目标规划、几何规划、整 数规划等各种最优化问題的理论的研究发展迅速,新方法不断出 现,实际应用日益广泛・在电子计算机的推动下,最优化理论与方 法在经济计划、工程设计、生产管理、交通运输等方面得到了广泛 应用,成为一门十分活跃的学科。 最优化问题的一般形式为
min ⁡ f ( x )  s.t.  x ∈ X \begin{array}{l} \min f(x) \\ \text { s.t. } x \in X \end{array} minf(x) s.t. xX
其中 x ∈ R n x \in R^{n} xRn 是决策交量, f ( x ) f(x) f(x) 为目标函数, X ⊂ R n \quad X \subset R^{n} XRn 为约束集或可行域. 特别地,如果约束集 X = R n X = R^n X=Rn , 则上述最优化问题 称 为无约束最优化问题:
min ⁡ x ∈ R n f ( x ) \min _{x \in R^{n}} f(x) minxRnf(x)
——《最优化理论与方法》


线搜索技术是多变量函数优化的基础,它包括精确线搜索技术和非精确线搜索技术。常见的精确线搜索技术可分为分割方法和插值方法两大类:分割方法有二分法、黄金分割法、斐波那契法等;插值方法有一点二次插值法(牛顿法)、二点二次插值法(包括割线法)、三点二次插值法、二点三次插值法等。非精确线搜索技术基于非精确线搜索准则,常用的准则有 Armijo-Goldstein 准则、Wolfe-Powell 准则、强 Wolfe-Powell 准则和简单准则。

MATLAB代码实现:

function [num,temp, alpha] = bisectionMethod(a0,b0,L,epsilon)
ak = a0; bk = b0;
num=1;
temp(1) = phi(0.5*(ak+bk));
i = 2;
while bk-ak>= L
    mid  = (ak+bk)/2;
    lamudak = mid - epsilon;
    muk = mid + epsilon;
    flamudak = phi(lamudak); 
    fmuk = phi(muk);
    if flamudak > fmuk
        ak = lamudak;
    else
        bk = muk;
    end
    num = num+1;
    temp(i) = phi(0.5*(ak+bk));
    disp(['这是二分法--->第', num2str(num),'次迭代,当前目标函数最优值为',num2str(temp(i))]);
    i=i+1;
end
alpha = (ak+bk)/2;
end

【一些可以参考的资源】

https://www.longzf.com/optimization/2/line_search/
https://www.cnblogs.com/xiaoboge/p/9713419.html
https://www.cnblogs.com/kemaswill/p/3416231.html

你可能感兴趣的:(最优化方法 | 【线搜索:二分法的Matlab实现】)