クライアントの詳細#

Amplify SDK には Amplify SDK から実行できるソルバーに対応したクライアントクラスが用意されています。クライアントクラスは各ソルバーの API をラップしたものであり、ソルバーの設定や実行パラメータの設定を行うインターフェースや、API のリクエストを行うメソッドを提供します。

ソルバーの提供形態は、WEB API、実行ファイル、ライブラリ API など様々ですが、ソルバーのクライアントクラスを通じて統一的に扱うことができます。また、Amplify SDK はクライアントクラスの共通インターフェースを用いる事で、モデル変換やグラフ埋め込み処理に加えて、ソルバーの実行や結果の解析の抽象化を可能にしています。

このページではソルバークライアントの提供する共通のインターフェースについて説明し、各ソルバークライアント固有の機能や特徴についてはそれぞれのサブページで解説します。

クライアントクラス#

クライアントクラスは、大別すると以下の 3 種類のインターフェースを提供します。

  • ソルバーの実行パラメータの設定

  • クライアントの設定やソルバー情報の取得

  • ソルバーの提供する API の呼び出し

ソルバークライアントの共通インターフェースは次の通りです。一部のソルバーでのみ有効なインターフェースについては、ソルバークライアントの一覧にて各ソルバーに付与されている tag で分類しています。また、ソルバー固有のインターフェースについては、各ソルバーのサブページを参照してください。

実行パラメータの取得と設定:
parameters: object

ソルバーの実行パラメータを取得・指定するパラメータクラスを返します。

パラメータクラスの型はソルバーによって異なりますが、可能な限り全ての実行パラメータを取得・設定できるように設計されています。 パラメータの詳細は各ソルバーのサブページとソルバーのAPIリファレンスを参照してください。

注釈

全てのソルバーのアトリビュートにおいて、 None の設定が可能な場合は未設定状態を表します。 None が設定されたアトリビュートは設定そのものが行われず、リクエストデータへの追加も行われません。 これはソルバーにデフォルト値を使用させるための仕様です。

ソルバー情報の取得:
acceptable_degrees: amplify.AcceptableDegrees

ソルバーの扱える問題の次数を取得します。詳細は 変数変換と次数下げ を参照してください。

version: str

ソルバーのバージョン情報を取得します。

リモートソルバーの場合は token の設定が必要になることがあります。これは API への問い合わせが行われることがあるためです。
ローカルソルバーの場合は実行ファイルやライブラリのバージョン情報を取得します。

二次多項式のグラフ構造 Graph:
graph: Graph

ソルバー固有のグラフ構造を取得します。詳細は グラフ埋め込み を参照してください。

WEB API の接続設定 ☁️ Cloud:
url: str

ソルバーのエンドポイント URL を取得・指定します。

token: str

API トークン等の認証情報を取得・指定します。

proxy: str

接続に用いるプロキシサーバを取得・指定します。詳細は プロキシサーバの設定 を参照してください。

実行ファイル・ライブラリパスの設定 💻 Local:
library_path: os.PathLike

ソルバーのライブラリのファイルパスを指定します。

送受信データの保存 ☁️ Cloud 💻 Local:
write_request_data: os.PathLike

ソルバーに送信されたリクエストデータを指定されたファイルパスに保存します。データ形式はソルバーごとに異なります。

write_response_data: os.PathLike

ソルバーから受信したレスポンスデータを指定されたファイルパスに保存します。データ形式はソルバーごとに異なります。

ソルバーの実行:
solve(...):

ソルバーを実行する関数として 各ソルバークライアントには、solve(...) メソッドが実装されています。これはソルバーの API のラッパー関数です。

注釈

通常はユーザが直接このメソッドを呼び出す必要はありません。代わりに solve() 関数を使用してください。

引数には、ソルバーの API へ入力可能な形式に応じて、多項式 (Poly)、行列形式 (Matrix) または制約条件 (Constraint あるいは ConstraintList)、そしてその両方のいずれかを与えて API を呼び出すことができます。しかし、グローバルの solve() 関数とは異なり、モデル変換やグラフ埋め込み等が行われることはありません。そのため、ソルバーの扱えない変数の種類や次数、制約条件を与えた場合には例外を送出します。

solve(...) メソッドの返り値型はソルバーごとに異なり、たとえば Amplify AE (FixstarsClient) の場合は amplify.FixstarsClient.Result クラスのインスタンスとなります。このクラスは、ソルバーが返すレスポンスデータのデータ構造を極力変えないようにしてクラス化したものです。

solve() 関数との連携#

solve() 関数はモデルの変換やグラフ埋め込み処理を行った後、ソルバークライアントの solve(...) メソッドを呼び出してソルバーを実行し、返却されたデータを解析することで解や実行時間の情報を得ます。

solve() 関数の返却する Result クラスのインスタンスには、ソルバーの返却したデータや応答時間、実行時間が次のアトリビュートに格納されます。

アトリビュート

データ型

詳細

amplify.Result.client_result

Client.Result

ソルバークライアントの実行結果
(レスポンスデータ)

amplify.Result.execution_time

datetime.timedelta

ソルバー内部の実行時間

amplify.Result.response_time

datetime.timedelta

ソルバーの応答時間