最优化方法(一维搜索)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• % 寻找初始分割点 • x1=a+.382*(b-a); • x2=a+.618*(b-a);
• % 搜索主体 • while(abs(b-a)>eps) • % 计算分割点处 的函数值 • f1=fun(x1); • f2=fun(x2);
% 比较判断两个分割点处的 函数值,进而缩短区间长度 if(f1>f2) a=x1; x1=x2; x2=a+.618*(b-a); elseif(f1==f2) a=x1; b=x2; x1=a+.382*(b-a); x2=a+.618*(b-a); else b=x2; x2=x1; x1=a+.382*(b-a); end end % 返回搜索值 20 answ=(a+b)/2;
k k k k
p
x
k
k
.
k
min f ( x) s.t . x R
.
一维最优化问题:
极值点的必要条件:
f '( x ) 0
5
1. 下单峰函数 定义:设 f ( x ) 是区间 [ a , b ] 上的一元函数,x 是 f ( x ) 在 [ a , b ] 上的极小点,且对任意的 x1 , x2 [ a , b ], x1 x2 , 有 (a)当 x 2 x 时,f ( x1 ) f ( x2 ); (b)当 x1 x 时,f ( x1 ) f ( x2 ) .
4. 令 a k 1 a k ,
bk 1 k ,
k 1 k ,
18
k 1 a k 1 0.382(bk 1 a k 1 ), 计算 f (k 1 ), 令 k : k 1, 转 2。
• • • • •
• 一个以前很好的例子 function answ = goldsection(a,b,eps) % 黄金分割法实现一维搜索 % a ---- 搜索区间左端点 % b ---- 搜索区间右端点 % eps ---- 搜索精度
8
Fibonacci法的引入
计算n次函数值,如何取点使最终区间最小?
或者最终区间长度为1,计算n次函数值,初始区 间最多为多长? 9
10
11
12
课堂练习
13
14
黄金分割法 思想 通过选取试探点使包含极小点的区间不断缩短, 直到区间长度小到一定程度,此时区间上各点的函数 值均接近极小值。 下面推导黄金分割法的计算公式。
令 k : k 1.
3. 若 f ( x ( 4 ) ) f ( x (1) ), 4. 令 x ( 2 ) x ( 1 ) ,
则转 4, 否则,转5.
f ( x (1) ) f ( x ( 4 ) ),
x(1) x( 4) , f ( x ( 2 ) ) f ( x (1) ), 令 h : 2h, 转 2. 5. 若 k 1, 则转 6; 否则,转7.
( 3)
cx
解上述方程组,可得逼近函数 ( x ) 的系数b 和 c.
令
( x ) b 2cx 0,
( x x ) f ( x ) ( x x ) f ( x ) ( x x ) f ( x ( 3) ) 2 [ ( x ( 2 ) x ( 3 ) ) f ( x (1) ) ( x ( 3 ) x (1) ) f ( x ( 2 ) ) ( x (1) x ( 2 ) ) f ( x ( 3 ) ) ]
2. 若 bk a k , 停止, 且
bk a k . 否则, 2 当 f ( k ) f ( k ) 时,转 3;当 f ( k ) f ( k ) 时,转 4. x
bk 1 bk ,
3. 令 a k 1 k ,
k 1 k ,
k 1 a k 1 0.618(bk 1 a k 1 ), 计算 f ( k 1 ), 令 k : k 1, 转 2。
(1) (1) (1) 2
令
f ( x (1) ) f ( x( 2) ) f ( x( 3) )
( x ) a bx
( 2) ( 3)
( 2)
cx
( 2)2 ( 3)2
( x ) a bx
再求函数 ( x ) 的极小点, 解得
x b 2c
( 2 )2 ( 3 )2
黄金分割法的迭代效果:第k次后迭代后所得区间长度为
初始区间长度的 ( 5 1)k 倍 。
2
作业
21
22
作业
如果换成了最终区间不大于0.08,如何做? 为什么?
23
…………………….
24
…………………….
25
3.进退法 如何确定包含极小点的一个区间?
思想 从一点出发,按一定的步长, 试图确定出函数值呈现“高 - 低 - 高”
26
( 2) (4) 6. 令 h : h, x( 2) x( 4) , f ( x ) f ( x ),
转 2.
7. 令 x (3) x ( 2 ) , x( 2) x(1) , x(1) x( 4) , 停止计算。
区间 [ x (1) , x ( 3 ) ] 或[ x ( 3 ) , x (1) ] 即为包含极小点的区间。
( 3)
(4)
16
取值的确定?
通过确定 的取值,使上一次迭代剩余的迭代点恰与下一次 迭代的一个迭代点重合,从而减少算法的计算量。
(1) 设在第 k 次迭代时有 f ( k ) f ( uk ) , 则有
[ a k 1 , bk 1 ] [ a k , uk ]。
在第 k 1 次迭代时选取 k 1 , uk 1 , 则由(4)有 uk 1 a k 1 (bk 1 a k 1 )
ak 2 (bk ak )
如果令 2 1 , 则uk 1 k ,因此 uk 1 不必重新计算 。
5 1 1 0.618 2 (2) 若在第k 次迭代时有f (k ) f ( k ) 。 同理可得。
2
17
算法步骤:
1. 给定初始区间 [a1 , b1 ], 精度要求 0. 令 1 a1 0.382 (b1 a1 ), 1 a1 0.618 (b1 a1 ), 并计算 f (1 ) 与 f ( 1 ). 令 k : 1.
(1) ( 2) ( 3 )2 ( 1 )2 ( 1 )2 ( 2 )2
以x 作为f ( x )的极小点的估计值。
31
抛物线插值算法步骤:
(1) 给定初始区间 [ x (1) , x ( 3) ] ,
设 f ( x (1) ) f ( x ( 2) ),
f ( x ( 2) ) f ( x ( 3) ).
设 f ( x ) 在 [a1 , b1 ] 上单峰,极小点 x [a1 , b1 ]. 假设进行 第 k 次迭代前 x [ak , bk ], 取 k , k [a k , bk ], 规定 k k .
计算 f ( k ) 和 f ( k ) , 分两种情况: 1. 若 f (k ) f ( k ) , 则令 a k 1 k , bk 1 bk ; 2. 若 f ( k ) f ( k ) , 则令 a k 1 a k , bk 1 k . 如何确定 k 与 k?
15
要求其满足以下两个条 件:
1. bk k k a k
(1)
ak
k
k
bk
2. 每次迭代区间长度缩短比率相同,即 bk 1 a k 1 (bk a k ) ( 0)
( 2)
由式( 1)与(2)可得:
k ak (1 )(bk ak ) k ak (bk ak )
不精确一维线搜索
34
为什么不精确的搜索好?
• 距离最优解远的时候,精度太大 算法效率低 • 有些算法的收敛速度不依赖与搜索的精度 • 只要求有充分下降即可 这种类似与“充分”、“足够”等描述词汇, 在与计算相关的描述中,要特别在意,因为, 这里的“充分”,已经不再是理论上的要求, 这里的“充分”必须与“可计算”相关 (到底要多充分,就是这里的非精确搜索的准测) 35
上的极小点。任取点 c d [ a , b ] , 则有
(1)如果 f (c ) f (d ) ,则
x [c ,b ]; x [ a , d ]。
(2)如果 f (c ) f (d ) ,
则
如何确定一个下 单峰函数呢?
a
.
.
c
. x
.
d
.
b
7
Fibonacci方法--试探点算法
• % CopyRight@XiaBo • % Date:2008.3.20
• %% 定义搜索函数fun • function f = fun(x) % 这里是一个简单的函数定义, 倘若在一个大型的优化计算中,这个函数一般是和第k 步的迭代点和下降方向有关的 • % 是一个关于步长的函数 • % x --- 待求步长值 • f = x^2-x+2; 19
则称 f ( x ) 下是单峰函数。
. . . . x . . .
有没有特殊 形式的下单 峰函数
a
x1 x2 b
6
性质:通过计算区间 [ a , b ] 内两个不同点的函数值,就可以 确定一个包含极小点的子区间。
定理 设 f ( x ) 是区间 [ a , b ]上的一元函数,x 是 f ( x ) 在 [ a , b ]
并假设
f ( x (1) ) f ( x ( 2 ) ),
f ( x ( 2 ) ) f ( x ( 3 ) ).
f ( x)
( x)
x* x (1 )
x
x ( 2)
x ( 3)
30
如何计算函数 ( x ) ?
设
( x ) a bx cx 2 ,
( x ) a bx cx
(k )
( 3) 从 x (1) , x ( 2) , x ( 3)和 x 中选择 f ( x ) 的函数值最小的三个点及其
左、右两点, 重新标记为 x (1) , x ( 2 ) , x ( 3 ) 。 令 k : k 1 。 转(2) 。
(k )
32
作业
• 小结各种精确一维搜索算法
33
极小点区间: [ x ( 1) , x ( 3 ) ]
平分法 (优点和缺点都突出的方法)
能否看出 优点和缺点?
28
29
5. 抛物线插值
为什么非要是二次三项式?
思想 在极小点附近,用二次三项式 ( x ) 逼近目标函数 f ( x ),
令 ( x ) 与 f ( x ) 在三点 x (1) x ( 2 ) x ( 3 ) 处有相同的函数值,
的三点。一个方向不成功,就退回来,再沿相反方向寻找。
进退法的计算步骤(与教材的算法比较P20)
1. 给定初始点 x ( 0 ) R, 初始步长h0 0, 令 h h0 , x(1) x( 0) ,
计算 f ( x (1) ), 并令 k 0.
2. 令 x ( 4 ) x (1) h, 计算 f ( x ( 4 ) ),
最优化方法补充内容2
一维搜索
1
一维搜索 又称为 一维最优化
1. 精确一维搜索 2. 非精确一维搜索
2
精确一维搜索
1. 一维最优化问题 2. Fibonacci与黄金分割法 3. 进退法 4. 平分法 5. 抛物线搜索法
3
一维搜索的基本概念
4
一. 一维最优化问题
下降迭代算法中最优步长的确定
f ( x k p ) min f ( x p )
令 k : 1 。x
( 0)
wk.baidu.com
x (1) 。 给定精度 。
( 2) 设 ( x ) a bx cx 2 。 令 ( x ( i ) ) f ( x ( i ) ) , i 1 , 2 , 3 。 解出
系数 a , b , c 。 解出 ( x )的极小点 x
b 。 2c (k ) ( k 1) 若| f (x ) f (x ) | , 则算法停止, 否则转( 3)。
例:
x ( 0) x (1 ) x ( 2) x ( 3)
x(4) x(1) h x (1 ) x ( 2)
x ( 4) x (1 )
h : h x ( 4) x (1 )
x ( 0) x (1 ) x (1 ) x ( 2)
x ( 4) x ( 2) x ( 3)
27
极小点区间 : [ x ( 3 ) , x ( 1) ]