グリッド型探索 mapper#

mapper はパラメータ空間中の候補点をあらかじめ用意しておいて、そのすべてで \(f(x)\) を計算することで最小値を探索するアルゴリズムです。 MPI 実行した場合、候補点の集合を等分割して各プロセスに自動的に割り振ることで自明並列計算を行います。

前準備#

MPI 並列を行う場合は、 mpi4py をインストールしておく必要があります。

$ python3 -m pip install mpi4py

入力パラメータ#

[algorithm] セクション#

  • colormap

    形式: 文字列。 (default: "ColorMap.txt")

    説明: 探索結果(各メッシュ点の座標と目的関数値)を出力するファイルの名前。

[algorithm.param] セクション#

探索パラメータ空間を定義します。

mesh_path が定義されている場合はメッシュファイルから読み込みます。 メッシュファイルは1行がパラメータ空間中の1点を意味しており、 1列目がデータ番号で、2列目以降が各次元の座標です。

mesh_path が定義されていない場合は、 min_list を下限, max_list を上限, num_list を分割数とする探索空間から候補点を自動で生成します。それぞれのパラメータについて num_list 個の点を等間隔にサンプリングします。

  • mesh_path

    形式: 文字列

    説明: メッシュ定義ファイルへのパス。

  • comments

    形式: 文字列。 (default: "#")

    説明: メッシュ定義ファイルの読み込み時にコメント行とみなす行頭文字。

  • delimiter

    形式: 文字列。 (default: 空白文字)

    説明: メッシュ定義ファイルの列の区切り文字。CSV ファイルを読み込む場合は "," を指定します。

  • skiprows

    形式: 整数。 (default: 0)

    説明: メッシュ定義ファイルの先頭から読み飛ばす行数。ヘッダ行をスキップする場合に指定します。

  • 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#

各メッシュでの候補パラメータと、その点での目的関数の値が記載されたファイルです。 ファイル名は [algorithm] セクションの colormap パラメータで変更できます。 メッシュデータは、入力ファイルの [algorithm] セクションにある label_list で定義された変数(省略時は x1, x2, ...)の順番で記載され、最後に目的関数の値が記載されます。

以下、出力例です。

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" (デフォルト)

    初期化して実行します。 チェックポイント機能が有効な場合、以下のタイミングで実行時の状態をファイルに出力します。

    1. 指定した数のグリッド点を評価したとき、または指定した実行時間が経過したとき

    2. 実行の終了時

  • "resume"

    実行が中断した際に、最も新しいチェックポイントから実行を再開します。 並列数などの計算条件は前と同じにする必要があります。 探索点の数を変更した場合はエラーとなります (再開はチェックポイントを保存した計算の続きを実行するものであるため)。 探索点の数を変更して計算し直す場合は、 --init を指定して新規計算として実行してください (mapper は continue モードに対応していません)。

  • "continue"

    continue には対応していません。