[runner] セクション#

AlgorithmSolver を橋渡しする要素である Runner の設定を記述します。 サブセクションとして mapping, limitation, log を持ちます。

  • ignore_error

    形式: 真偽値 (default: false)

    説明: 順問題ソルバーの実行時に RuntimeError が生じた場合に、値として NaN を返して計算を続行します。false の場合は RuntimeError を送出し、通常はプログラムを終了させます。RuntimeError 以外は捕捉しません。

[runner.mapping] セクション#

Algorithm で探索している \(N\) 次元のパラメータ \(x\) から Solver で使う \(M\) 次元のパラメータ \(y\) への写像を定義します。 \(N \ne M\) となる場合には、 solver セクションにも dimension パラメータを指定してください。

現在はアフィン写像(線形写像+平行移動) \(y = Ax+b\) が利用可能です。

  • A

    形式: リストのリスト、あるいは文字列 (default: [])

    説明: \(M \times N\) の変換行列 \(A\) ( \(N\) 次元のパラメータ \(x\)\(M\) 次元の \(y\) に写します)。空のリストを渡した場合、単位行列とみなされます。文字列として与える場合はそのまま行列の要素を空白および改行で区切って並べてください。

  • b

    形式: リスト、あるいは文字列 (default: [])

    説明: \(M\) 次元の平行移動ベクトル \(b\) 。空のリストを渡した場合、ゼロベクトルとみなされます。文字列として与える場合はそのままベクトルの要素を空白区切りで並べてください。

行列の指定方法について、例えば、

A = [[1,1], [0,1]]

A = """
1 1
0 1
"""

はともに

\[\begin{split}A = \left( \begin{matrix} 1 & 1 \\ 0 & 1 \end{matrix} \right)\end{split}\]

を表します。

[runner.limitation] セクション#

Algorithm で探索している \(N\) 次元のパラメータ \(x\) に、制約条件を課すことができます。 Algorithm ごとに定義する探索範囲(例: exchangemin_listmax_list ) に加えて課すことができます。 現在は \(M\)\(N\) 列の行列 \(A\)\(M\) 次元の縦ベクトル \(b\) から定義される \(Ax+b>0\) の制約式が利用可能です。具体的に

\[\begin{split}A_{1,1} x_{1} + A_{1,2} x_{2} + &... + A_{1,N} x_{N} + b_{1} > 0\\ A_{2,1} x_{1} + A_{2,2} x_{2} + &... + A_{2,N} x_{N} + b_{2} > 0\\ &...\\ A_{M,1} x_{1} + A_{M,2} x_{2} + &... + A_{M,N} x_{N} + b_{M} > 0\end{split}\]

という制約をかけることができます。 ここで \(M\) は制約式の個数(任意)となります。

  • co_a

    形式: リストのリスト、あるいは文字列 (default: [])

    説明: 制約式の行列 \(A\) を設定します。行数は制約式数 \(M\) 、列数は探索変数の数 \(N\) である必要があります。co_b を同時に定義する必要があります。

  • co_b

    形式: リストのリスト、あるいは文字列 (default: [])

    説明: 制約式の縦ベクトル \(b\) を設定します。次元数が制約式数 \(M\) の縦ベクトルを設定する必要があります。co_b = [[0], [-1]] のように縦ベクトル(リストのリスト)として指定してください( co_b = [0, -1] のような1次元リストはエラーになります)。co_a を同時に定義する必要があります。

行列の指定方法は [runner.mapping] セクションと同様です。例えば、

co_a = [[1,1], [0,1]]

co_a = """
1 1
0 1
"""

はともに

\[\begin{split}A = \left( \begin{matrix} 1 & 1 \\ 0 & 1 \end{matrix} \right)\end{split}\]

を表します。また、

co_b = [[0], [-1]]

co_b = """0 -1"""

co_b = """
0
-1
"""

はともに

\[\begin{split}b = \left( \begin{matrix} 0 \\ -1 \end{matrix} \right)\end{split}\]

を表します。 co_aco_b のどちらも定義しない場合、制約式を課さずに探索します。

[runner.log] セクション#

ソルバー呼び出しのログ出力に関する設定です。

  • filename

    形式: 文字列 (default: "runner.log")

    説明: ログファイルの名前。

  • interval

    形式: 整数 (default: 0)

    説明: ソルバーの呼び出しはすべて記録されます。この値は、ログファイルへ書き出すまでにバッファされるエントリ数を指定します。0以下の場合、ログ書き出しは行われません。

  • write_result

    形式: 真偽値 (default: false)

    説明: solver からの出力を記録するかどうかを指定します。

  • write_input

    形式: 真偽値 (default: false)

    説明: solver への入力を記録するかどうかを指定します。