第二节 一维搜索
通过上期学习,大家已经了解了非线性规划的基本内容,那么如何求解一个非线性规划问题呢?本期小编就带大家来学习用于求解单变量无约束极值问题的方法——一维搜索,该方法也是后面求解更复杂问题的基础。
一、引入
1.定义
得到当前迭代点 后,按某种规则确定一个方向
,再从
出发,沿方向
在直线(或射线)上求目标函数的极小点,从而得到
的后继点
。重复上述做法,直至求得问题的解。此处求目标函数在直线上的极小点,称为一维搜索(线性搜索)。
一维搜索是针对单变量函数进行的,也是多变量函数最优化的基础。
2.分类
一维搜索主要分为两类,这两类方法求得的极小点均为近似值,具体如下:
(1)试探法:按某种方式寻找一系列的试探点,根据试探点来确定极小点。(斐波那契、0.618)
(2)函数逼近法(插值法):用某种较简单的曲线逼近原来的函数曲线,通过求逼近函数的极小点来估计目标函数的极小点。(牛顿法、割线法)
一维搜索的方法很多,这里仅介绍试探法中的斐波那契(Fibonacci)法和0.618法,这两种方法仅需计算函数值,不必计算函数的导数。
二、斐波那契法(分数法)
1.概述
是区间]
上的单变量下单峰函数,它在该区间上有唯一极小点t*。函数在t*左边严格下降,在右边严格上升。若在此区间内任取两点
,且
,并计算函数值
和
,则可能存在以下两种情况:
(1)如果 ,那么极小值则存在于
区间内。
(2)如果 ,那么极小值存在于
内。
这说明,只要在搜索区间 内取两个不同点并算出它们的函数值加以比较,即可把包含极小点的区间由
缩小为
或
。这时,如要继续缩小搜索区间
或
,就只需在新的区间内再取一点算出其函数值并加以比较即可。显而易见,如果区间越小,则越能接近函数的极小点,但同时,要求计算的次数会越多。那么计算n次能把区间缩小到什么程度呢?怎么使搜索最快呢?或者说,计算n次能把至多多大的原区间缩小为长度为1个单位的区间呢?
我们用 来表示计算n次,就能使最大为
的区间缩短为1个单位长度,明显,如果我们只摆了一个点进去,没有比较,也就无法判断。因此
当n=2时,我们摆了两个点进去,这时候搜索的范围就缩小了一半。比如说搜索