グリッド型探索 mapper
¶
mapper_mpi
はパラメータ空間中の候補点をあらかじめ用意しておいて、そのすべてで \(f(x)\) を計算することで最小値を探索するアルゴリズムです。
MPI 実行した場合、候補点の集合を等分割して各プロセスに自動的に割り振ることで自明並列計算を行います。
前準備¶
MPI 並列を行う場合は、 mpi4py をインストールしておく必要があります。
$ python3 -m pip install mpi4py
入力パラメータ¶
[param
] セクション¶
探索パラメータ空間を定義します。
mesh_path
が定義されている場合はメッシュファイルから読み込みます。
メッシュファイルは1行がパラメータ空間中の1点を意味しており、
1列目がデータ番号で、2列目以降が各次元の座標です。
mesh_path
が定義されていない場合は、 min_list
, max_list
, num_list
を用いて、
各パラメータについて等間隔なグリッドを作成します。
mesh_path
形式: string型
説明: メッシュ定義ファイルへのパス。
min_list
形式: 実数型のリスト。長さはdimensionの値と一致させます。
説明: パラメータが取りうる最小値。
max_list
形式: 実数型のリスト。長さはdimensionの値と一致させます。
説明: パラメータが取りうる最大値。
num_list
形式: 整数型のリスト。長さはdimensionの値と一致させます。
説明: パラメータが取りうる数。
アルゴリズム補助ファイル¶
メッシュ定義ファイル¶
本ファイルで探索するグリッド空間を定義します。
1 + dimension
列のテキストファイルで、
1列目にメッシュのインデックス、
2列目以降は探索パラメータ \(x\) に対応する値を記載します。
また、 #
から始まる行はコメントとして無視されます。
以下、2次元パラメータ空間探索のサンプルを記載します。
1 6.000000 6.000000
2 6.000000 5.750000
3 6.000000 5.500000
4 6.000000 5.250000
5 6.000000 5.000000
6 6.000000 4.750000
7 6.000000 4.500000
8 6.000000 4.250000
9 6.000000 4.000000
...
出力ファイル¶
ColorMap.txt
¶
各メッシュでの候補パラメータと、その点での目的関数の値が記載されたファイルです。
メッシュデータは、入力ファイルの [solver.param]
セクションにある string_list
で定義された変数の順番で記載され、最後に目的関数の値が記載されます。
以下、出力例です。
6.000000 6.000000 0.047852
6.000000 5.750000 0.055011
6.000000 5.500000 0.053190
6.000000 5.250000 0.038905
6.000000 5.000000 0.047674
6.000000 4.750000 0.065919
6.000000 4.500000 0.053675
6.000000 4.250000 0.061261
6.000000 4.000000 0.069351
6.000000 3.750000 0.071868
...
リスタート¶
コンストラクタの引数 run_mode
に実行モードを指定します。
以下はそれぞれ odatse
コマンドの引数の --init
, --resume
, --cont
に対応します。
各モードの動作は次のとおりです。
"initial"
(デフォルト)初期化して実行します。 チェックポイント機能が有効な場合、以下のタイミングで実行時の状態をファイルに出力します。
指定した数のグリッド点を評価したとき、または指定した実行時間が経過したとき
実行の終了時
"resume"
実行が中断した際に、最も新しいチェックポイントから実行を再開します。 並列数などの計算条件は前と同じにする必要があります。
"continue"
continue には対応していません。