非線形計画法(3 - トップ - social system for disaster...
TRANSCRIPT
数値計算法
最適解が満たすべき条件– キューンタカー条件、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
ニュートン法
一階条件 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 α+
ペナルティー関数法
制約条件を直接取り扱う代わりに,制約条件の満足度を表す関数をあらたに定義し,それを目的関数に加えた関数を改めて目的関数とみなして最小化する方法
ペナルティ関数
)()()( xPxfxF ρρ +=目的関数 制約条件を破ることに対す
る罰の大きさを表す関数
)})(,0max{)}(,0(max{)( 21 xcxcxP += ρρ
})1,0max{}1,0(max{ −−+−= xxρ
のとき
のとき
のとき
111
1
)1(0
)1(
−<<≤−
≥
⎪⎭
⎪⎬
⎫
⎪⎩
⎪⎨
⎧
−−
−=
xx
x
x
x
ρ
ρ
ペナルティ関数の例