APIリファレンス#
nulavis#
run#
- nulavis.cmaes.run(func, n, param)#
CMA-ESによるブラックボックス最適化を実行します。
- パラメータ:
func (callable) --
最適化する目的関数です。
xinitおよびboundをリスト形式で指定した場合は、 目的関数に変数をリストとして渡します。 辞書形式で指定した場合は、変数名をキーとする辞書を渡します。目的関数は、変数を引数として受け取り、目的関数値を返す callableである必要があります。
n (int) -- 最適化する変数の数です。
xinitおよびboundの要素数と一致している必要があります。param (dict) --
最適化に使用するパラメータを指定する辞書です。
xinitlist or dict最適化の初期点です。必須パラメータです。
リスト形式の場合、
n個のfloatを指定します。例:
"xinit": [1.0, 2.0, 3.0]
辞書形式の場合、変数名をキーとして初期値を指定します。
例:
"xinit": { "x": 1.0, "y": 2.0, "z": 3.0, }
要素数は
nと一致している必要があります。boundlist or dict各変数の探索範囲です。必須パラメータです。
リスト形式の場合、各変数について
[下限, 上限]の形式で指定します。 下限および上限はfloatである必要があります。例:
"bound": [ [-5.0, 5.0], [-10.0, 10.0], [0.0, 100.0], ]
辞書形式の場合、
xinitと同じキーを使用して指定します。例:
"bound": { "x": [-5.0, 5.0], "y": [-10.0, 10.0], "z": [0.0, 100.0], }
下限は上限以下である必要があります。 また、
xinitの各値は対応する上下限の範囲内である必要があります。lambdaint, optionalCMA-ESの集団サイズです。 1以上の整数を指定します。
muint, optionalCMA-ESで選択する親個体数です。 1以上の整数を指定します。
sigmafloat, optional初期ステップサイズです。 0より大きい
floatを指定します。Clist of float, optional初期共分散行列です。 行列を1次元のリストとして指定します。
要素数は
n * nである必要があり、 各要素はfloatである必要があります。例えば、2変数の場合は以下のように指定します。
"C": [ 1.0, 0.0, 0.0, 1.0, ]
max_iterint, optional最適化の最大反復回数です。 0以上の整数を指定します。
max_timeint, optional最適化の最大計算時間です。 0以上の整数を指定します。
log_intervalint, optionalログを出力する間隔です。 1以上の整数を指定します。
seedint, optional乱数シードです。 0以上の整数を指定します。
silentbool, optionalログ出力を抑制するかどうかを指定します。
Trueの場合はログ出力を抑制し、Falseの場合はログを出力します。directionstr, optional最適化方向です。
"minimize"を指定すると目的関数を最小化し、"maximize"を指定すると目的関数を最大化します。大文字・小文字は区別されません。 例えば、
"MINIMIZE"も指定できます。
- 戻り値:
result -- 最適化結果を格納した辞書です。
best_xlist or dict得られた最良解です。
xinitがリスト形式の場合はリスト、 辞書形式の場合はxinitと同じキーを持つ辞書として返されます。best_ffloat最良解における目的関数値です。
best_penaltyfloat最良解における制約違反に対するペナルティ値です。
eval_countint目的関数の評価回数です。
generationint最適化終了時の世代数です。
messagestr最適化計算を終了した理由を記載したメッセージです。
sigmafloat最適化終了時のステップサイズです。
C最適化終了時の共分散行列です。 NumPy配列として返されます。
statusint最適化計算の終了ステータスです。
timefloat最適化計算にかかった計算時間(秒)です。
- 戻り値の型:
dict
- 例外:
TypeError -- 引数またはパラメータの型が不正な場合に発生します。
ValueError --
paramが辞書型でない場合、または初期値が指定された 上下限の範囲外の場合に発生します。KeyError -- 必須パラメータが指定されていない場合、または
xinitとboundのキーが一致しない場合に発生します。RuntimeError --
xinitまたはboundの要素数がnと一致しない場合に発生します。