クライアントの詳細¶
Amplify SDK には Amplify SDK から実行できるソルバーに対応したクライアントクラスが用意されています。クライアントクラスは各ソルバーの API をラップしたものであり、ソルバーの設定や実行パラメータの設定を行うインターフェースや、API のリクエストを行うメソッドを提供します。
ソルバーの提供形態は、WEB API、実行ファイル、ライブラリ API など様々ですが、ソルバーのクライアントクラスを通じて統一的に扱うことができます。また、Amplify SDK はクライアントクラスの共通インターフェースを用いる事で、モデル変換やグラフ埋め込み処理に加えて、ソルバーの実行や結果の解析の抽象化を可能にしています。
このページではソルバークライアントの提供する共通のインターフェースについて説明し、各ソルバークライアント固有の機能や特徴についてはそれぞれのサブページで解説します。
クライアントクラス¶
クライアントクラスは、大別すると以下の 3 種類のインターフェースを提供します。
ソルバーの実行パラメータの設定
クライアントの設定やソルバー情報の取得
ソルバーの提供する API の呼び出し
ソルバークライアントの共通インターフェースは次の通りです。一部のソルバーでのみ有効なインターフェースについては、ソルバークライアントの一覧にて各ソルバーに付与されている tag で分類しています。また、ソルバー固有のインターフェースについては、各ソルバーのサブページを参照してください。
- 実行パラメータの取得と設定:
parameters
:object
ソルバーの実行パラメータを取得・指定するパラメータクラスを返します。
パラメータクラスの型はソルバーによって異なりますが、可能な限り全ての実行パラメータを取得・設定できるように設計されています。 パラメータの詳細は各ソルバーのサブページとソルバーのAPIリファレンスを参照してください。
- ソルバー情報の取得:
acceptable_degrees
:amplify.AcceptableDegrees
ソルバーの扱える問題の次数を取得します。詳細は 変数変換と次数下げ を参照してください。
version
:str
ソルバーのバージョン情報を取得します。
リモートソルバーの場合は
token
の設定が必要になることがあります。これは API への問い合わせが行われることがあるためです。
ローカルソルバーの場合は実行ファイルやライブラリのバージョン情報を取得します。
- 二次多項式のグラフ構造 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
クラスのインスタンスには、ソルバーの返却したデータや応答時間、実行時間が次のアトリビュートに格納されます。
アトリビュート |
データ型 |
詳細 |
---|---|---|
|
ソルバークライアントの実行結果 |
|
ソルバー内部の実行時間 |
||
ソルバーの応答時間 |