参考资料
《精通MATLAB最优化计算(第二版)》
数值实现
Matlab 2019a
目录
石中居士:最优化计算与Matlab实现——目录zhuanlan.zhihu.com进退法
- 原理
用来确定搜索区间(包含极小点的区间)的算法,其理论依据为:
为单谷函数(只有一个极小值),且
为其极小点的一个搜索区间,对于任意
,如果
,则
为极小点的搜索区间,如果
,则
为极小点的搜索区间。
因此,在给定初始点
,及初始搜索步长
的情况下,首先以初始步长向前搜索一步,计算
。
(1)如果
则可知搜索区间为
,其中
待求,为确定
后退一步计算
,
为缩小系数,且
,直至找到合适的
,使得
,从而确定搜索区间
;
(2)如果
则可知搜索区间为
,其中
待求,为确定
,前进一步计算
,
为放大系数,且
,直至找到合适的
,使得
,从而确定搜索区间
。
- 算法步骤
用进退法求一维无约束问题
的搜索区间(包含极小点的区间)的基本算法步骤如下:
【1】给定初始点
,初始步长
,令
;
【2】令
,置
;
【3】若
,则转【4】,否则转【5】;
【4】令
,
,令
,转【2】;
【5】若
,则转【6】,否则转【7】;
【6】令
,转【2】;
【7】令
,停止计算,极小点包含于区间
或
。
- Matlab代码与试算(稍作改动)
test.m
% 基于Matlab2019a
Advance_and_Retreat_Method.m
% 进退法
命令行窗口
x1
由上可知,
的极值点在区间
内,然后就可以用各种一维搜索技术求
的极值。