Amplify-BBOpt¶
Amplify SDK の機能を活用して ブラックボックス最適化 (BBO) を実行するための拡張ライブラリです。
Tip
ブラックボックス最適化 とは、目的関数の数式表現が未知、あるいは複雑すぎる問題に対して最適なパラメータを見つける最適化手法です。
実験やシミュレーションをはじめとした、 Amplify SDK では表現できないような関数の最適化において Amplify-BBOpt が効果を発揮します。 具体的には、以下のようなユースケースで活用されています。
📐 構造設計・トポロジー最適化
空調性能を最大化する建物形状・機器配置の最適化、構造物の変位を最小化するための部材配置・荷重条件の調整など
⚗️ 材料・化学
ある性能指標を最大化するための合成材料の組成の最適化、化学プラントにおける生産量の最大化など
🌊 CAE・シミュレーション
物質濃度をより均一にするための攪拌条件の探索、流体デバイスの形状パラメータの最適化など
🔬 実験
ある実験結果を実現するための条件の探索など
Amplify SDK の ソルバークライアント、API トークン、制約ヘルパー関数をそのまま使えるため、普段の Amplify SDK の開発体験を活かしてブラックボックス最適化に取り組むことができます。
from amplify import AmplifyAEClient, less_equal
from amplify_bbopt import KMTrainer, Optimizer, RealVariable, blackbox
# 最適化したい関数の定義
@blackbox
def func(
x: float = RealVariable(bounds=(0, 2.5)),
y: float = RealVariable(bounds=(1.0, 5.0)),
) -> float: ...
# ソルバークライアントの設定
client = AmplifyAEClient()
client.token = "YOUR_TOKEN"
# 制約条件の設定
constraints = less_equal(func.variables.x + func.variables.y, 5)
# 最適化の実行
optimizer = Optimizer(
blackbox=func,
trainer=KMTrainer(),
client=client,
constraints=constraints
)
optimizer.add_random_training_data(num_data=5)
optimizer.optimize(num_iterations=10)
インストール方法や使い方については、以下のリンク先をご参照ください。