焼き鈍し法(SA法)メモ
SAアルゴリズム
- 温度Tによって、動作が変わる
- メインは「メトロポリスの手続き」で、ある温度Tにおけるアニーリング過程をシミュレートする
- 低下していく各温度についてMetropolisを実行する
- 温度が高いほど動きがあり(ランダム)、低いほど動きがなくなる(どん欲法)
- beta > 1 : ある温度でアニーリングに費やされる時間は温度が低下するにつれ次第に増加
- RANDOMは一様乱数(0-1)
- 新しい解を採択する基準は「メトロポリス基準」と呼ばれる
- 手続きMetropolisはM個の解を生成してチェックする
SAの疑似コード
SA部分
Algorithm Simulated_annealing(S0,T0,alpha,beta,M,MaxTime); //S0は初期解 //BestSは最良解 //T0は初期温度 //alphaは冷却率 //betaは定数 //MaxTimeはアニーリング過程に与えられた総処理時間 //Mは次のパラメータ更新までの時間 BEGIN T = T0; CurS = S0; BestS = CurS; //BestSはここまでに得られた最良解 CurCost = Cost(CurS); BestCost = Cost(BestS); Time = 0; REPEAT Call Metropolis(CurS,CurCost,BestS,BestCost,T,M); Time = Time + M; T = alpha * T; M = beta * M; UNTIL( Time >= MaxTime ); END
手続きMetropolis部分
Algorithm Metropolis(CurS,CurCost,BestS,BestCost,T,M); BEGIN REPEAT NewS = Neighbor(CurS); NewCost = Cost(NewS); ΔCost = (NewCost - CurCost); IF( ΔCost < 0 ) THEN CurS = NewS; IF( NewCost < BestCost ) THEN BestS = NewS; ENDIF ELSE IF( RANDOM < e^(-ΔCost/T) ) THEN CurS = NewS; ENDIF ENDIF M = M - 1; UNTIL( M == 0 ); END
参考文献
- 白石洋一訳「組合せ最適化アルゴリズムの最新手法」
- Sadiq M.Sait and Habib Youssef, "Iterative Computer Algorithms with Applications in Engineering"の和訳
- http://ja.wikipedia.org/wiki/%E7%84%BC%E3%81%8D%E3%81%AA%E3%81%BE%E3%81%97%E6%B3%95