入力ファイル¶
py2dmat は入力ファイルの形式に TOML を採用しています。 入力ファイルは次の6つのセクションから構成されます。
basepy2dmat全体のパラメータを指定します。
solverSolverのパラメータを指定します。
algorithmAlgorithmのパラメータを指定します。
runnerRunnerのパラメータを指定します。
mappingAlgorithmで探索しているパラメータからSolverで使うパラメータへの写像を定義します。
logsolver 呼び出しのlogging に関して設定します。
[base] セクション¶
dimension形式: 整数型
説明: 探索空間の次元(探索するパラメータの数)
root_dir形式: string型 (default: プログラム実行時のディレクトリ)
- 説明: プログラムを実行する一番上のディレクトリ。
入力ファイルなどのパスはすべて
root_dirを起点とします。
output_dir形式: string型 (default: プログラム実行時のディレクトリ)
説明: プログラムの実行結果を出力するディレクトリ名
[solver] セクション¶
name でソルバーの種類を決定します。各パラメータはソルバーごとに定義されています。
name形式: string型
説明: ソルバーの名前。以下のソルバーが用意されています。
sim-trhepd-rheed: 反射高速(陽)電子回折(RHEED, TRHEPD)の強度計算をするためのソルバーsim-trhepd-rheedanalytical: 解析解を与えるソルバー (主にテストに利用)
dimension形式: 整数型 (default:
base.dimension)説明: ソルバーが受け取る入力パラメータの数。
各種ソルバーの詳細および入出力ファイルは 順問題ソルバー を参照してください。
[algorithm] セクション¶
name でアルゴリズムの種類を決定します。各パラメータはアルゴリズムごとに定義されています。
name形式: string型
説明: アルゴリズムの名前。以下のアルゴリズムが用意されています。
minsearch: Nelder-Mead法による最小値探索mapper: グリッド探索exchange: レプリカ交換モンテカルロbayes: ベイズ最適化
seed形式: 整数値。
- 説明: 初期値のランダム生成やモンテカルロ更新などで用いる擬似乱数生成器の種を指定します。
各MPIプロセスに対して、
seed + mpi_rank * seed_deltaの値が実際の種として用いられます。 省略した場合は Numpy の規定の方法 で初期化されます。
seed_delta形式: 整数値。 (default: 314159)
- 説明: 疑似乱数生成器の種について、MPI プロセスごとの値を計算する際に用いられます。
詳しくは
seedを参照してください。
各種アルゴリズムの詳細および入出力ファイルは 探索アルゴリズム を参照してください。
[runner] セクション¶
Algorithm と Solver を橋渡しする要素である Runner の設定を記述します。
サブセクションとして mapping 、 limitation 、 log を持ちます。
[mapping] セクション¶
Algorithm で探索している \(N\) 次元のパラメータ \(x\) から Solver で使う \(M\) 次元のパラメータ \(y\) への写像を定義します。
\(N \ne M\) となる場合には、 solver セクションにも dimension パラメータを指定してください。
現在はアフィン写像(線形写像+平行移動) \(y = Ax+b\) が利用可能です。
A形式: リストのリスト、あるいは文字列 (default: [])
- 説明: \(N \times M\) の変換行列 \(A\) 。空のリストを渡した場合、単位行列とみなされます。
文字列として与える場合はそのまま行列の要素を空白および改行で区切って並べてください。
b形式: リスト、あるいは文字列 (default: [])
- 説明: \(M\) 次元の並進移動ベクトル \(b\) 。空のリストを渡した場合、ゼロベクトルとみなされます。
文字列として与える場合はそのままベクトルの要素を空白区切りで並べてください。
行列の指定方法について、例えば、
A = [[1,1], [0,1]]
と
A = """
1 1
0 1
"""
はともに
を表します。
[limitation] セクション¶
Algorithm で探索している \(N\) 次元のパラメータ \(x\) に、制約条件を課すことが出来ます。
Algorithm ごとに定義する探索範囲(例:exchange の min_list や max_list ) に加えて課すことが出来ます。
現在は \(M\) 行 \(N\) 列の行列:math:A と \(M\) 次元の縦ベクトル:math:b から定義される \(Ax+b>0\) の制約式が利用可能です。具体的に
という制約をかけることが出来ます。 ここで \(M\) は制約式の個数(任意)となります。
co_a形式: リストのリスト、あるいは文字列 (default: [])
説明: 制約式の行列 \(A\) を設定します。
行数は制約式数 \(M\) 列数は探索変数の数 \(N\) である必要があります。
co_bを同時に定義する必要があります。co_b形式: リストのリスト、あるいは文字列 (default: [])
説明: 制約式の縦ベクトル \(b\) を設定します。
次元数が制約式数 \(M\) の縦ベクトルを設定する必要があります。
co_aを同時に定義する必要があります。
行列の指定方法について、[mapping] セクションと同様で、例えば、
A = [[1,1], [0,1]]
と
A = """
1 1
0 1
"""
はともに
を表します。また、
co_b = [[0], [-1]]
と
co_b = """0 -1"""
と
co_b = """
0
-1
"""
はともに
を表します。
co_a と co_b のどちらも定義しない場合、制約式を課さずに探索します。
[log] セクション¶
solver 呼び出しのlogging に関する設定です。
filename形式: 文字列 (default: "runner.log")
説明: ログファイルの名前。
interval形式: 整数 (default: 0)
説明: solver を interval 回呼ぶ毎にログが書き出されます。0以下の場合、ログ書き出しは行われません。
write_result形式: 真偽値 (default: false)
説明: solver からの出力を記録するかどうか。
write_input形式: 真偽値 (default: false)
説明: solver への入力を記録するかどうか。