优化理论15----进退法python实现

Posted 炫云云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化理论15----进退法python实现相关的知识,希望对你有一定的参考价值。

一维搜索——进退法


最优化知识笔记整理汇总,超级棒

进退法原理

进退法 :用来确定搜索区间(包含极小点的区间)的算法

其理论依据为: f ( x ) f(x) f(x) 为单谷函数(只有一个极小值),且 [ a , b ] [a, b] [a,b] 为其极小点的一个搜索区间,对于任意 x 1 , x 2 ∈ [ a , b ] x_{1}, x_{2} \\in[a, b] x1,x2[a,b] ,如果 f ( x 1 ) < f ( x 2 ) f\\left(x_{1}\\right)<f\\left(x_{2}\\right) f(x1)<f(x2) ,则 [ a , x 2 ] \\left[a, x_{2}\\right] [a,x2] 为极小点的搜索区间,如果 f ( x 1 ) > f ( x 2 ) f\\left(x_{1}\\right)>f\\left(x_{2}\\right) f(x1)>f(x2) ,则 [ x 1 , b ] \\left[x_{1}, b\\right] [x1,b] 为极小点的搜索区间。

基本思想:对 f ( x ) f{\\left(x\\right)} f(x)任选一个,初始点 x 0 x_{0} x0 ,及初始搜索步长 h h h ,通过比较这两点函数值的大小,确定第三点位置,比较这三点的函数值大小,确定是否为“高-低-高”形态。

因此,在给定初始点 x 0 x_{0} x0 ,及初始搜索步长 h h h 的情况下,首先以初始步长向前搜索一步,计算 f ( x 0 + h ) f\\left(x_{0}+h\\right) f(x0+h)

(1)如果 f ( x 0 ) < f ( x 0 + h ) f\\left(x_{0}\\right)<f\\left(x_{0}+h\\right) f(x0)<f(x0+h)

则可知搜索区间为 [ x ~ , x 0 + h ] \\left[\\tilde{x}, x_{0}+h\\right] [x~,x0+h] ,其中 x ~ \\tilde{x} x~ 待求,为确定 x ~ \\tilde{x} x~ 后退一步计算 f ( x 0 − λ h ) f\\left(x_{0}-\\lambda h\\right) f(x0λh) λ \\lambda λ 为缩小系数,且 0 < λ < 1 0<\\lambda<1 0<λ<1 ,直至找到合适的 λ ∗ \\lambda^{*} λ,使得 f ( x 0 − λ ∗ h ) > f ( x 0 ) f\\left(x_{0}-\\lambda^{*} h\\right)>f\\left(x_{0}\\right) f(x0λh)>f(x0) ,从而确定搜索区间 [ x 0 − λ ∗ h , x 0 + h ] \\left[x_{0}-\\lambda^{*} h, x_{0}+h\\right] [x0λh,x0+h]

(2)如果 f ( x 0 ) > f ( x 0 + h ) f\\left(x_{0}\\right)>f\\left(x_{0}+h\\right) f(x0)>f(x0+h)

则可知搜索区间为 [ x 0 , x ~ ] \\left[x_{0}, \\tilde{x}\\right] [x0,x~] ,其中 x ~ \\tilde{x} x~ 待求,为确定 x ~ \\tilde{x} x~ ,前进一步计算 f ( x 0 + λ h ) f\\left(x_{0}+\\lambda h\\right) f(x0+λh) λ \\lambda λ 为放大系数,且 λ > 1 \\lambda>1 λ>1 ,直至找到合适的 λ ∗ \\lambda^{*} λ ,使得 f ( x 0 + h ) < f ( x 0 + λ ∗ h ) f\\left(x_{0}+h\\right)<f\\left(x_{0}+\\lambda^{*} h\\right) f(x0+h)<f(x0+λh) ,从而确定搜索区间 [ x 0 , x 0 + λ ∗ h ] \\left[x_{0}, x_{0}+\\lambda^{*} h\\right] [x0,x0+λh]

算法步骤

用进退法求一维无约束问题 min ⁡ f ( x ) , x ∈ R \\min f(x), x \\in \\mathbf{R} minf(x),xR 的搜索区间(包含极小点的区间)的基本算法步骤如下:

【1】给定初始点 x ( 0 ) x^{(0)} x(0) ,初始步长 h 0 h_{0} h0 ,令 h = h 0 , x ( 1 ) = x ( 0 ) , k = 0 h=h_{0}, \\quad x^{(1)}=x^{(0)}, \\quad k=0 h=h0,x(1)=x(0),k=0

【2】令 x ( 4 ) = x ( 1 ) + h x^{(4)}=x^{(1)}+h x(4)=x(1)+h ,置 k = k + 1 k=k+1 k=k+1

【3】若 f ( x ( 4 ) ) < f ( x ( 1 ) ) f\\left(x^{(4)}\\right)<f\\left(x^{(1)}\\right) f(x(4))<优化理论13----黄金分割法单峰函数python实现及验证

优化理论14----二分法二分法与黄金分割法比较python实现

Python实现简单的梯度下降法

优化理论16----Armijo-Goldstein准则 Armijo-Goldstein搜索方法python实现

运筹学(最优化理论)学习笔记 | 共轭梯度法

优化理论10----约束优化的罚函数法外点法(Penalty method)内点法(**Barrier Methods**)混合惩罚函数法