コードレシピ
HACKB をすぐに試せるアルゴリズムのサンプル集
ブラックボックス最適化の代表的アルゴリズムを Python レシピとして提供します。提出コードの作成や改良の参考にしてください。
ベイズ最適化 (scikit-optimize, GP-EI)
scikit-optimize のgp_minimizeを用いた ガウス過程ベースの BO。獲得関数は EI (Expected Improvement) を使用します。 適した問題: 連続変数中心 / 評価コストが高い / 数十回程度の予算 依存ライブラリ: scikit-optimize, scikit-learn, numpy skopt が import できない環境では自動で ランダムサーチにフォールバック します
ランダムサーチ
探索空間から 一様ランダム に候補を生成し、ベストの結果を逐次更新しての範囲内で探索するベースライン手法。 適した問題: 評価予算が小さい / 構造が不明 / 他手法のベースライン比較 依存ライブラリ: Python 標準ライブラリのみ
ベイズ最適化 (Optuna TPE)
Optuna の標準サンプラーTPESamplerを使った汎用的なベイズ最適化。 アルゴリズム: Tree-structured Parzen Estimator 適した問題: 連続・整数・カテゴリ・バイナリの 混合変数 問題 依存ライブラリ: optuna 探索空間が混合型のときに最初に試しやすいベースライン手法です。
進化計算 (Optuna NSGA-II)
Optuna のNSGAIISamplerを用いた遺伝的アルゴリズム実装。 アルゴリズム: NSGA-II (Non-dominated Sorting Genetic Algorithm II) 適した問題: 混合変数 / ランドスケープが粗い / 連続最適化器が苦戦するケース 依存ライブラリ: optuna
ベイズ最適化 (Optuna GP)
Optuna内蔵の[GPSampler]を用いた、ガウス過程ベースのベイズ最適化。 特長: BoTorch 不要で Optuna エコシステム内に閉じて GP-BO を試せる 適した問題: 連続変数中心 / 評価コストが高い 依存ライブラリ: optuna, scipy, torch scikit-optimize の代替候補としても有用
進化計算 (Optuna CMA-ES)
OptunaのCmaEsSampler(内部で cmaes を使用)。 アルゴリズム: CMA-ES (共分散行列適応進化戦略) ウォームアップ: 最初の 20% の予算はランダムサーチで初期分布を構築してから CMA-ES に切替 適した問題: 連続変数主体の中〜高次元最適化 依存ライブラリ: optuna, cmaes
グリッドサーチ
等間隔のグリッドを切って探索する古典的なベースライン。 連続変数: 評価回数上限に応じた解像度で格子点を生成 整数 / カテゴリ変数: 全列挙 適した問題: 低次元 / カテゴリ主体 / トライアル用途 依存ライブラリ: Python 標準ライブラリのみ
FMQA (Fixstars Amplify)
Fixstars Amplifyのamplify-bboptを用いた Factorization Machine + アニーリング による FMQA ベースライン。 アルゴリズム: 観測した (x, y) 上で FM 代理モデルを反復学習し、Fixstars Amplify のアニーリングマシンで次候補を探索 適した問題: バイナリ / カテゴリ / 混合整数 主体の離散モデル 依存ライブラリ: amplify, amplify-bbopt