APIリファレンス

目次

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, optional

    CMA-ESの集団サイズです。 1以上の整数を指定します。

    muint, optional

    CMA-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 と一致しない場合に発生します。