いわて駐在研究日誌

OpenCAE、電子工作、R/C等、徒然なるままに

dakota 6.0(その1)

まずはユーザーマニュアルに従ってRosenblock関数の最小値の計算問題でテスト。

Rosenblock関数は、最適化問題のテストとしてよく出てくる。

目的関数:f(x1,x2)=100*(x2-x1^2)^2+(1-x1)^2

設計変数:x1,x2

制約条件:|x1|≦2,|x2|≦2

※最大値:f(-2,-2)=3609, 最小値:f(1,1)=0

 dakotaのtutorialの実行(.inファイルをコピーして実行)

cp /usr/local/dakota-6.0.0.Linux.x86_64/examples/users/rosen_grad_opt.in .
dakota -i rosen_grad_opt.in -o rosen_grad_opt.out > rosen_grad_opt.stdout

⇒ リスタートファイルdakota.rst、出力ファイルrosen_grad_opt.outなどが作成される

結果の確認は、rosen_grad_opt.outの最後の方に出力される

<<<<< Function evaluation summary: 137 total (137 new, 0 duplicate)
<<<<< Best parameters          =
                      9.9341884597e-01 x1
                      9.8744342609e-01 x2
<<<<< Best objective function  =
                      7.4943502239e-05
<<<<< Best data captured at function evaluation 136

 

rosen_grad_opt.inファイルの中身

6.0からstrategyブロックが無くなって、environmentというブロックに変わった。ブロックの中身はほぼ同じのよう。

# Dakota Input File: rosen_grad_opt.in
# Usage:
#   dakota -i rosen_grad_opt.in -o rosen_grad_opt.out > rosen_grad_opt.stdout
environment・・・全体環境(単一目的関数最適化、パレート最適化等)
  graphics
  tabular_graphics_data
    tabular_graphics_file = 'rosen_grad_opt.dat'

method・・・最適化手法の選択、反復・収束条件など
  max_iterations = 100
  convergence_tolerance = 1e-4
  conmin_frcg・・・最適化アルゴリズムの指定

model・・・近似モデル(single="近似なし")
  single

variables・・・設計変数および変数範囲(初期値・制約条件)
  continuous_design = 2
    initial_point    -1.2      1.0
    lower_bounds     -2.0     -2.0
    upper_bounds      2.0      2.0
    descriptors       'x1'     "x2"

interface・・・外部インターフェース(ここで外部プログラムの起動スクリプトなどを指定)
  analysis_driver = 'rosenbrock'
    direct

responses・・・目的関数の設定
  objective_functions = 1
#  analytic_gradients
  numerical_gradients
    method_source dakota
    interval_type forward
    fd_gradient_step_size = 1.e-5
  no_hessians