非線形計画法(3 - トップ - social system for disaster...

22
非線形計画法(3京都大学防災研究所 総合防災研究部門 多々納裕一

Upload: phungminh

Post on 16-Jun-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

非線形計画法(3)

京都大学防災研究所

総合防災研究部門

多々納裕一

数値計算法

最適解が満たすべき条件– キューンタカー条件、etc

実際に問題をどのようにしてとくか?

– 無制約問題の数値解法• 最急降下法、ニュートン法

– 制約付き問題の数値解法• ペナルティ関数法

最急降下法

目的関数 f(x) の勾配ベクトル は

点 x(k)において目的関数を最も増加させる方向ベクトル

)( )(kf x∇

)( )()( kk fd x−∇=

)()()()1( kkkk dxx α+=+

とすると,

ここで)(kα はステップ幅と呼ばれ,

)(min)( )()(

0

)()()( kkkkk dxfdxf ααα

+=+≥

で決定される.

最急降下方向:

に対して

)()( )()1( kk xfxf ≤+

最急降下法のアルゴリズム

ステップ0:初期点 を定め、k=0とおく。

ステップ1:

ステップ2: を満たすかどうかチェック。満たす場合は終了。そうでない場合は、k=k+1として、ステップ1へ。

)0(x

)(min)( )()(

0

)()()( kkkkk dxfdxf ααα

+=+≥

として、ステップ幅 を定め、解を更新。

)(, )()()()()()1( kkkkkk xfddxx −∇=+=+ 但しα

ε<−+ |)()(| )()1( kk xfxf

)(kα

最急降下法は関数 f の値を減少させるために,点 x(k)から

勾配ベクトルの逆の方向 に進ませた点を次点とし,逐次計算することで最小値を求める方法

)( )()( kk fd x−∇=

最急降下法2

例 212221

21 610565)( xxxxxxf +−+−=x

0,3 )0(2

)0(1 == xxサイクル0

サイクル1サイクル2サイクル3

59.0,708.0,1.82 )1()1(2

)1(1 === αxx

20.0,27.0,1.02 )2()2(2

)2(1 === αxx

66.0,10.0,1.11 )3()3(2

)3(1 === αxx

最急降下法の図解

-2 -1 0 1 2 3 4 5

-2

-1

0

1

2

3

4

5

例題

22

21

21 )(10)1()(min xxxf −−−=x

最急降下法

:= xopt .5600065475 := yopt .2743253746

反復数10回.2090249609f=

ニュートン法

一階条件 0)( =∇ xf直接解く。

非線型連立方程式

dxxdf )(

0 x)0(x)1(x

)2(x

)())(()( )()()1()(2)1( kkkkk xfxxxfxf ∇+−∇≅∇ ++

線形近似

0)())(( )()()1()(2 =∇+−∇ + kkkk xfxxxf

を満たす点を逐次的に求める。

)()]([ )(1)(2)()1( kkkk xfxfxx ∇∇−= −+

ニュートン法の問題点

局所的収束性をもつが,大域的収束性をもたない

各反復において,ヘッセ行列を実際に計算しなければならない

改訂ニュートン法(ステップサイズの工夫)

準ニュートン法(ヘッセ行列の近似計算)

改定ニュートン法

1. 出発点x(0)を選び, k :=0 とおく

2. ならば計算終了.さもなければを求め, ステップ(3)へ

3.を満たすステップ幅α(k)を求め,次の点x(k+1) :=x(k) +α(k) d (k)を定め、k:=k+1とおいてステップ2に戻る

0)( )( =∇ kxf)()]([: )(1)(2)( kkk xfxfd ∇∇−= −

)(min)( )()(

0

)()()( kkkkk dxfdxf ααα

+≅+≥

準ニュートン法

)( )1(2 +∇ kxf の近似行列 とすると,

)1( +kB)()1()1( kkk ysB =++

)()1()1( kkk xxs −= ++

ただし,

)()( )()1()( kkk xfxfy ∇−∇= +

で, が推定される

)1( +kB

BFGS公式

BFGS法)()()()(

)()()(

)()()1( )(1)(1 kTkkk

kTkk

kkk BssByyBB

ββ−+=+

ただし, )()()( )( kTkk sy=β)()()()( )( kkTkk sBs=γ

•B(k+1)は を満たす•B(k)が対称ならばB(k+1)も対象である•B(k)が正定値かつβ(k+1) >0ならばB(k+1)も正定値

である

)()1()1( kkk ysB =++

準ニュートン法

1. 出発点x(0)と正定値対称行列B(0)を選び, k :=0とおく

2. ならば計算終了.さもなければを求め, ステップ(3)へ

3.を満たすステップ幅α(k)を求め,次の点x(k+1)

:=x(k) +α(k) d (k)を定める

4. BFGS公式により行列B(k+1)を定める.k:=k+1とおいてステップ1に戻る

0)( )( =∇ kxf)()(: )(1)()( kkk xfBd ∇−= −

)(min)( )()(

0

)()()( kkkkk dxfdxf ααα

+≅+≥

直線探索法(黄金分割法)

黄金分割法

– 1変数の関数の最小化法

– ステップサイズの更新に用いる。

– 黄金分割比

)(min )()(

0

kk dxf αα

+≥

2/)15( −=τ

1τ

黄金分割法のアルゴリズム

1. 2つの初期点 を定め、k=0とする。

2. 次式を用いて、更新点の候補を決める。

3.ならば、

そうでないなら、

4. のとき、終了。そうでないなら、ステップ2へ。

)0(1

)0(0 ,αα

ταααβταααβ *)(,*)( )(1

)(0

)(1

)1(1

)(1

)(0

)(0

)1(0

kkkkkkkk −+=−−= ++

)()( )1(1

)1(0 dxfdxf kk ++ +<+ ββ

)(1

)1(1

)1(0

)1(0 , kkkk ααβα == +++

)1(1

)1(1

)(0

)1(0 , +++ == kkkk βααα

εαα <− ++ |||| )1(1

)1(0

kk

黄金分割法の図解

)3(0

)2(1

)1(1

β

β

β

=

=

)0(0α

)2(1

)1(1

)0(1

α

α

α

=

= )1(0

)1(0

α

β

=)3(

0

)2(0

)2(0

α

α

β

=

=)3(

1

)3(1

α

β

=

)( dxf α+

修正ニュートン法

:= xopt .9999999998

反復数6回

:= yopt .9999999997 .14 10-18f=

ペナルティー関数法

制約条件を直接取り扱う代わりに,制約条件の満足度を表す関数をあらたに定義し,それを目的関数に加えた関数を改めて目的関数とみなして最小化する方法

ペナルティ関数

)()()( xPxfxF ρρ +=目的関数 制約条件を破ることに対す

る罰の大きさを表す関数

例題

01)(01)(

)2-()(

2

1

2

≤−−=≤−=→=

xxCxxC

MinxxF

をペナルティ関数法を用いて解く

)})(,0max{)}(,0(max{)( 21 xcxcxP += ρρ

})1,0max{}1,0(max{ −−+−= xxρ

のとき

のとき

のとき

111

1

)1(0

)1(

−<<≤−

⎪⎭

⎪⎬

⎪⎩

⎪⎨

−−

−=

xx

x

x

x

ρ

ρ

ペナルティ関数の例

)()()( xPxfxF ρρ +=

のとき

のとき

のとき

111

1

)1()2()2(

)1()2(

2

2

2

−<<≤−

⎪⎭

⎪⎬

⎪⎩

⎪⎨

−−−−

−+−=

xx

x

xxx

xx

ρ

ρ

2=ρ

:= xopt 1.000001451

最急降下法初期値x=3反復数1

2=ρ1=ρ