• Tidak ada hasil yang ditemukan

2 多变量函数极值问题解法

N/A
N/A
Protected

Academic year: 2023

Membagikan "2 多变量函数极值问题解法"

Copied!
8
0
0

Teks penuh

(1)

§ 2 多变量函数极值问题解法(直接法)

本节讨论求目标函数

) ( ) , , ,

(x1 x2 x f x f

y  n

在定义区域D上的最优解的直接方法(或试验最优化方法),其中 )

, , ,

(x1 x2xn

x ( 表示矢量的转置)

表示自变量x1,x2,,xn组成的列矢量,由于极小和极大只是目标函数相差一符号,因此这里 只讨论求n维列矢量x* (x1*,x*2,,x*n)使得

) ( min )

(x* f x

f

xD

 这时,x*称为最优解(最优点)。

[单峰函数] 如果函数yf(x)在所讨论的区域D上只有一个极值点(最大点或最小点),

那末称这个函数为多变量单峰函数。

多变量单峰函数也可用分析定义。例如,设函数yf(x1,x2)定义在区域D上,由于区域 D上的任一路线都可用一参数方程



 ) (

) (

2 2

1 1

x x

x

x (01) 表示,所以函数yf(x1,x2)沿这条路线也可用参数表示为

) ( )) ( ), (

(x1x2yf

y 

a(a1,a2)(x1(0),x2(0)) )) 1 ( ), 1 ( ( ) ,

(b1 b2x1 x2

b

又设 min ( ),

1

0

y

m y(*)m 如果 y(1) y(2) y(*),当1 2 *

) ( ) ( )

(* y1 y2

y   ,当* 1 2

那末称函数y在区域D上从点a和点b的路线上是单峰的,式中1,2

 

0,1 设 * min (x),

x f

m

D

f(x*)m*

如果对区域D上的任一对点ab,都存在一条从a经过x*b的路线,在其上函数y是单峰 的,那末称函数y在区域D上为单峰的.

[因素交替法] 这个方法是轮流按坐标轴方向探索最优点.设ei为第 i 个坐标轴的单位矢 量,即

)

0 , , 1 , , 0

(  

ii

e (i1,2,,n) 并且预先给定允许误差 0.那末,迭代程序如下:

(1) 选取初始点x(0).

(2) 由初始点x(0)出发,先沿第一个坐标轴方向进行优选(用§1的单因素方法),得到好

(2)

x(1),即

) (

min )

(x(1) f x(0) se1 f

s

式中s为实参数.然后以x(1)为起点沿第二个坐标轴方向进行优选,得到好点x(2),即 )

( min )

(x(2) f x(1) se2 f

s

如此等等,一直到n个方向全部优选完毕,得到x(n),它满足 ) (

min )

( ( ) (n1) n

s

n f s

f xx e

(3) 再以x(n)为新的初始点,重复步骤(2)。

(4) 以上步骤一直进行到从某一初始点出发,经过n个方向搜索后得不到新点,或与前 n个初始点之间的距离都小于预先给定的允许误差 为止。这时x(n)即为最优点x*的近似解。

[平行线法] 如果处理的双因素问题中,有一个因素难于调整,而另一个因素却容易变 动,这时用双因素交替法就不太方便,应改用下面的平行线法:

把难于调整的因素x2放在纵轴上(图18.5),设其可调范围为[0,l],把容易变动的因素x1放 在横轴上,设其可调范围为[0,m ].先把因素x2固定在点

l 618 .

0 处,在过这点而平行于横轴的直线L1上对因素x1在 [0,m]上优选,好点为①;再把x2固定在点0.382l处,在 过这点而平行于横轴的直线L2上对因素x1在[0,m]上优选,

好点为②;比较①与②两点的好坏,如果②比①好,就去掉 直线L1的上半部(如果①比②好,就去掉直线L2的下半部),

然后把因素x2固定在可调范围的0.236l处,在过这点而平行于横轴的直线L3上对因素x1在[0,

m]上优选,好点为③;比较②与③两点的好坏,如果②比③好,就去掉直线L3的下半部,, 如此继续做下去把优选范围不断缩小,就可以找到最优点的近似解。

对因素x2的选择也可采用分数法。

[瞎子爬山法] 迭代过程如下:

(1) 选取初始点(基点)x(0)的步长h,命k:0。

(2) 进行第k阶段的第l次方向(即xl轴方向)的局部探索

l k l k

l x he

x( )(1) 其中el为第l个坐标轴的单位矢量,首先沿正方向探索

l k l k

l x he

x( )(1)

如果 f(xl(k)) f(xl(k1)),则探索成功,就把这点作为下一次沿第l+1个坐标轴方向探索的起点,

并命l:l1;否则就沿反方向搜索

在此采用矢量记号

)

, ,

( 1( ) 2( ) ( )

)

( k

nl k l k l k

lx xx

x

它代表n维空间的一点.上标k表示搜索的第k个阶段,下标l表示第k个阶段搜索中的第l次循环.若xl(k)

表示搜索中的基点序列,则当接近最优点x时,有

) ( )

( )

( )

(x f x(1) f x1( ) f x1(0)

f  lk  k 

(3)

l k l k

l x he

x( )(1)

如果 f(xl(k)) f(xl(k1)),则探索成功,就把这点作为下一次沿第l+1个坐标轴方向探索的起点,

并命l:l1;如果正反方向探索都失败就退回原处,即命

) (

1 )

( k

l k

lx

x 并命l:l1。

当沿各个坐标轴方向的局部探索都轮流进行后,这个阶段的局部探索也就完成了,这时 得到第k阶段的最好点xn(k)

(3) 命k:k1,以x(k1)x(nk)为新基点,重复步骤(2),如果不能得到更好的点,就缩 小步长再进行局部探索,直到步长缩小到规定的精度为止,这时所得最好点即为最优点x*的 近似解。

瞎子爬山法(也称探索爬山法)虽然没有前面几个方法快,但它特别适用于因素不能大幅 度调动,或是在大生产中如果出一次废品就造成很大损失的情况。

[陡度法与对角线法]

1 陡度和陡度法 设在A(x1(1),x(21)),B(x1(2),x2(2))两点已经做 试验,其目标函数值分别为a,b(图 18.6),而且ba,那末

2 ) 1 ( 2 ) 2 ( 2 2 ) 1 ( 1 ) 2 (

1 ) ( )

(x x x x

a b AB

a b

 

称为从A上升到B的陡度.对n维空间有类似的定义。

陡度大的方向目标函数显然上升得快一些.所谓陡度法,就是 利用已得的试验结果,算出各点间的陡度,然后沿陡度最大的方 向(有利方向)再取点做试验。

2 联合法(瞎子爬山法与陡度法联合使用) 例如用瞎子爬山法从A点出发,沿x2轴方

向调动因素x2得到点B,效果较好,仍沿x2轴方向调动因

x2得到点C(图18.7),效果还是好的,然后沿x1轴方向

调动因素x1得到点D,效果也好,接下去就不一定从D出 发再沿纵横方向去探索了。这时可以分别算出目标函数由

A上升到D的陡度,由B上升到D的陡度,由C上升到D 的陡度,从中选出一个陡度最大的方向,例如AD ,那末 下一次就可以沿AD 的方向往上爬了,这时可以从D点出 发沿线段AD的延长线DE用瞎子爬山法往上爬,也可以在

DE上应用单因素的方法优选,一般总可以找出一个比D好的点.

3 对角线法 以上我们通过比较,从通过D点的三个方向

CD BD

AD, , 的陡度挑出一个较陡的方向来,例如是AD,但AD并 不一定过D点的最陡方向,其实只要利用过D点的二个方向的陡 度就可以找出过D点的更陡的方向来。

(4)

如图18.8,在过D垂直于BD的方向上取一点L,使DL 的长等于AD的陡度,且LA分别在BD的两侧;再在 过D垂直于AD的方向上取一点M ,使DM 的长等于B

D的陡度,且MB分别在AD的两侧,以DLDM 为边 作平行四边形,其对角线DG的方向就是在D点的陡度最大 的方向。

[步长加速法] 步长加速法实际上是瞎子爬山法和沿有利方向加速相结合的方法.其迭代 程序如下:

(1) 选取初始点(基点)x(0)和步长h,命k:0。 (2) 瞎子爬山(程序见瞎子爬山法)。

当沿各个坐标轴方向的局部探索都轮流进行后,这个阶段的局部探索也就完成了,下一 步就可沿有利方向进行加速。

(3) 加速爬山。命x(k1)xn(k)。若x(k1)x(k),那末移到新的位置x(k1)进行加速试探,

在此

) ( ) 1 ( ) 1 (

0k 2x k x k

x  有两种情形可能产生:

1 如果 f(x0(k1))的数值有改进,那末命k:k1,应用步骤(2)的方法开始新的探索。

2 如果 f(x0(k1))的数值没有改进,那末取消这个加速,将基点放在上次发现的最好点,

xn(k)x(k1)。命k:0,象步骤(2)一样开始一个新的局部探索。

如果经过一个阶段后发现x(k1)x(k)不能加速移动,那末就缩小步长重复步骤(2)。如果 逐次缩小步长都不能加速移动,这点便是最优点的近似解。

步长加速法在二维的情形如图18。9所示。

[方向加速法(共轭方向法)] 迭代程序如下:

(5)

(1) 从前面的最好数值位置x0(k)(可以是前一次迭代最后所确定的点或用其他方法所得 的好点)和一组线性独立的探索方向1(k),2(k),,n(k)(可以取坐标轴的方向)出发。首先寻找过 点x0(k)平行于1(k)的直线上的最好点设为x1(k),再找过点x1(k)平行于2(k)的直线上的最好点设 为x2(k),继续这个过程直到所有n个探索方向都已试探过,最后所得点为xn(k)

(2) 寻找特殊点xm(k),这个点使目标函数的数值同前一点相比改进最大,即点xm(k)给出n 个移动的最大改变量,其中 f(xm(k)) f(xm(k)1)。此外决定矢量xn(k)x0(k)

(3) 计算 f(2x(nk)x0(k)) fl(k) (4) 记 fn(k)f(xn(k)),如果

) ( )

( k

n k

l f

f  (1) 或

2 ) ) (

)(

2 (

2 ) ( 2 0

) ( ) ( 0 ) ( ) ( ) ( 0

k l k k

n k k l k n

k f f

f f f f

f  

 (2) 那末 不是探索中的好方向,则应重新开始探索,从最后一点出发并用同样的方法,即

) ( ) 1 ( 0

k n

k x

x  和i(k1) i(k),i1,2,,n,重复步骤(1)。如果不等式(1),(2)都不满足,那末沿方向

 探 索 直 到 找 到 极 小 点 。 将 这 个 点 定 义 为 x0(k1) , 而 k+1 阶 段 的 新 探 索 方 向 为

),

( ) 1

( k

i k

i

i1,2,,m1;i(k1) i(k1),im,,n1;又n(k1) 。然后从步骤(1)出发重复整 个过程,直到 xi(k11)xi(k1) ,i1,2,,n,其中 为预先给定的允许误差。

例 应用方向加速法找出目标函数

2 2 1 2 2 1 2

1, ) 10( 5) ( )

(x x x x x x

f     

的极小点。

解 应用导数的方法容易求出目标函数的绝对极小点为(x1,x2)(2.5,2.5)。下面用方向加 速法来求出这个极小点。

从点x0(0) (0,0)开始探索,探索方向用1(0) (1,0)和2(0) (0,1)。 第一阶段 从基点出发,沿方向1(0)进行一维探索,移动距离由使

2 2 )

0 ( 1 ) 0 (

0 ) 10( 5)

( s s s

f x     

到达极小, 得到 s4.545,因 此 x1(0) (4.545,0),而目标 函数值 由 f(x0(0))250减少到 727

. 22 ) (x1(0)

f 。 再 沿 方 向2(0) 用 同 样 的 方 法 探 索 , 得 到 x(20) (4.545,0.826) , 同 时 2 0 7

. 15 ) ( (20)

) 0 (

2f x

f

为 决 定 下 一 阶 段 是 否 用 方 向 μ (0)x(20)x0(0) , 应 检 验 不 等 式 (1), 计 算 点 )

652 . 1 , 090 . 9 ( ) 0 826 . 0 2 , 0 545 . 4 2 (

2 (20)0(0)      

x x

xt ,而 ft(0) 385.029,由 于 ft(0)f2(0) )

207 . 15

(f2(0)  ,所以下一阶段不用方向μ (0)

第 二 阶 段 本 阶 段 的 方 向 和 前 一 阶 段 的 一 样(因 为μ (0) 不 采 用)。 相 继 探 索 得 到 )

826 . 0 , 869 . 3

) (

1 (

1

x , 而 f1(1) 10.1 9 0又 x2(1) (3.869,1.380) , 而 f2(1) 6.8 1 5。 再 计 算 点 )

934 . 1 , 193 . 3 ( ) 826 . 0 380 . 1 2 , 545 . 4 869 . 3 2

(     

t

x 。在此 ft(1) 1.746,由于 ft(1)f21),不 等式(1)不满足。再检验不等式(2),计算

(6)

851 . 37

] 017 . 5 815 . 6 207 . 15 [ ] 746 . 1 815 . 6 2 207 . 15 [

) )(

2 (

2 2

) 1 ( 2 ) 1 ( 0 ) 1 ( ) 1 ( 2 ) 1 ( 0

f f f f

f t

式中是目标函数在给定方向的最大改变量,即 f0(1)f1(1) 5.017。不等式(2)的右端是 537

. 454 )

2(

2 ) 1 ( ) 1 (

0  

ft

f

因此不等式(2)不满足,即下一阶段可以采用方向μ (1)(3.8694.545,1.3800.826)(0.676, )

554 .

0 ,沿方向μ (1)探索得到第三阶段的基点为x0(2) (2.500,2.500),并且 f0(2) 0。

第三阶段 本阶段的探索方向为ξ 1(2)ξ (21)(0,1)和ξ (22)μ (1)(0.076,0.553)。沿这两个 方向探索将发现不能再前进,因为事实上前一阶段已经找到绝对极小点。当然,这是不足为 奇的,因为目标函数是二次的。

[方向步长双加速法] 迭代程序如下:

考虑第k阶段

(1) 选择一初始点(基点)x0(k),一组步长h1,h2,,hn和一组方向ξ 1(k)(2k),,ξ (nk),其中 )

, ,

( 1( ) ( )

)

( k

nl k

l k

lmm

ξ ,上指标k表示第k个阶段,下指标l表示第l个方向。当k 1时,一般选 择探索方向平行于坐标轴方向。

(2) 依次平行于n个方向的每一个进行相继探索,若移动是成功的,则采用新点,若移 动不成功则保留基点。若在一给定方向的移动是成功的,则下一次再在这个方向上探索时,

步长将增大为倍(1);若失败,则缩小为倍(01),负号表示在反方向探索。一 般取3, 0.5。

(3) 直到在每一个方向上都至少有一次成功,一次失败,这时沿该方向的探索就告结束。

依次沿平行于n个方向的探索完毕后最后一次成功的点为新的基点x0(k1)。下一阶段(即第k1 阶段)的探索方向ξ l(k1),l1,2,,n,由下列方程计算得到:

首先定义矢量

) 1

) (

( )

( d l n

n

l j

k j j k

l

 

A ξ

其中dj是在ξ (kj )方向的所有成功移动的代数和,

) , ,

( 1( ) ( )

)

( k

nl k

l k

lAA

A

) , , 2 , 1

) (

( )

( d m i n

A

n

l j

k ij j k

il

 

然后方向ξ (jk1),(j1,2,,n)由下式给出

) , , 2 , 1

) (

( ) ( ) 1

( j n

k j

k k j

j   

D ξ D

其中

) 1 ( 1 ) 1 ( 1 ) ( 2 ) ( 2 ) ( 2

) ( 1 ) ( 1

)

( 

k k k k

k k k

ξ A ξ

A D

A D

) 1 ( 2 ) 1 ( 2 ) ( 3 ) 1 ( 1 ) 1 ( 1 ) ( 3 ) ( 3 ) (

3kAk (Ak ξ kk (Ak ξ kk D

(7)

1

1

) 1 ( ) 1 ( ) ( )

( )

( ( )

n

l

k l k l k n k

n k

n A A ξ ξ

D

特别,其中主要方向

) ( 1 ) ( 1 ) ( 1 ) ( ) 1 1 (

1 k

k k

k k

A A D

ξ D

它的各个分量为

) , , 2 , 1 (

1

) (

1 ) (

1 ) ( 1

1

) (

1 ) (

1 ) ( ) 1

1 (

1 i n

A A A D

D m D

n

j

k j k j

k i n

j

k j k j

k k i

i    

(4) 以上步骤一直进行到



n

i

di 1

2 ( 为预先给定的允许误差)为止,所得最后的基点

) ( ) 1 ( 0

k n

k x

x  就近似于最优点。

方向步长双加速法在二维的情况如图18.10所示。

[单纯形调优法] 迭代程序如下:

(1) 命 n 维 空 间 的 单 纯 形 的 n+1 个 顶 点 为 x(i)(i1,2,,n1) , 计 算 函 数 值 )

1 , , 2 , 1 ( )

( ()  

f i n

fi xi  ,比较大小,并确定

n i R i

R f f

f

1 ) 1

( ) max

( 

x

i R i

n G i

G f f

f

1 ) 1

( ) max

(x

n i L i

L f f

f

1 ) 1

( ) max

( 

x (2) 求出最坏点x(R)的对称点

)

2 F (R

N x x

x  

式中

1

1

) ( )

( )

1 n (

i

R i

F n x x

x

(3) 若 f(xN) fR,则将xN缩小为xMxM由下式定义:

) 5 . 0 , 1 0

( )

1

(  ( )   

  RN  

M x x

x

(8)

这里要求0.5,是避免xMxF的情形发生。

如果 f(xM) fG,那末x(R):xM,并重复以上步骤。

如果 f(xM) fG,那末

: () 2 ( )

) (

L i i

x

x x

 ,并重新开始迭代。

(4) 若 f(xN) fG,则将xN扩大为xExE由下式定义:

) 1 ( )

1

(  ( ) 

  RN

E x x

x 扩大的条件 f(xN) fG也可以换成

L

N f

f(x )

或 (1)f(x(R)) f(xN)f(xL) (1) 如果上述条件满足,并且

) ( )

( E f N

f xx 那末 x(R): xE 否则 x(R):xN 并重复以上步骤。

上述过程一直继续到

1

1

)2

(

n

i

L

i f

f

fRfL  fL 为止,其中 是预先给定的正数。

Referensi

Dokumen terkait

二、 一阶微分方程组初值问题的数值解 这里为书写简便,只讨论含两个未知函数的微分方程组,含多个未知函数的微分方程 组,计算公式类同... 三、 边值问题

由此可见,前者是单侧极限,后者是双侧极限,两者并非完全一样.若 存在,则沿 方向的方向导数 也存在,且两者相等.但反之,若 存在,则 可能不存在.例如 在点0,0处沿 方向 ,而 不存在... 类似地,沿方向 的方向导数与