1. Amplify SDK の全体像¶
機能の詳細に触れる前に、Amplify SDK の全体像と実行手順をまとめます。
Amplify SDK では以下の (1) から (6) までの 6 つのステップに従って組合せ最適化問題の定式化を行い最適化を実行します。
%%{init:{'theme':'neutral'}}%% flowchart TB node_1("VariableGenerator") node_2("PolyArray") node_3("Poly") node_4("Constraint/ConstraintList") node_5("Model") node_6("Matrix") node_7("Result") node_8{{"solve(model, client)"}} node_20("ClientA / ClientB / ...") node_1 --> |"array()"| node_2 node_1 --> |"scalar()"| node_3 node_2 --> |"sum(),\n(arithmetics)"| node_3 node_1 --> |"matrix()"| node_6 node_3 --> |"equal_to(),\nless_equal(),\n..."|node_4 node_3 --> node_5 node_4 --> node_5 node_6 --> node_5 node_5 --> node_8 node_20 ------> node_8 node_8 --> node_7
- (1) 決定変数の生成
最初に決定変数を生成するジェネレータ (
VariableGenerator
) を作成します。 次に、変数ジェネレータから変数 (Poly
) あるいは変数配列 (PolyArray
) を生成します。 定式化したい問題が二次計画問題である場合は、二次計画問題の係数行列 (Matrix
) を作ることもできます。- (2) 目的関数の定義
変数ジェネレータで生成した変数から目的関数を作成します。 多項式 (
Poly
) あるいは係数行列 (Matrix
) の形式で定義できます。- (3) 制約条件の定義
制約条件を作成するための関数を用いて多項式から制約条件 (
Constraint
) を構築します。 複数の制約条件が必要である場合は、制約条件のリスト (ConstraintList
) にまとめます。- (4) 最適化モデルの作成
作成した目的関数と制約条件から最適化モデル (
Model
) を作成します。- (5) ソルバークライアントの作成
実行するマシンまたはソルバーを指定し、ソルバークライアント (例:
FixstarsClient
) を作成します。- (6) 最適化の実行
最適化モデルとソルバークライアントを指定し、
solve
関数を通じて最適化を実行します。 実行結果はResult
として返され、最適解の値や最適解の変数の値を取得できます。
各ステップの詳細は以下のページで説明します。