--- sd_hide_title: true hide-toc: true --- # 東芝 (clients-ToshibaSQBM2Client)= ## SQBM+ v2.0.3 [東芝](https://www.global.toshiba/jp/products-solutions/ai-iot/sbm.html) の開発したシミュレーテッド分岐マシンを核とする量子インスパイアード最適化ソリューションです。 ```{tip} AWS Marketplace あるいは Fixstars Amplify の有償オプションとして提供されています。 ``` ```{tip} SQBM+のバージョンにより、使用可能なソルバーや受付可能な変数タイプが異なります。 バージョンは {py:attr}`~amplify.ToshibaSQBM2Client.version` プロパティから取得できます。 ``` :**ソルバー仕様**: ```{list-table} :width: 100% :widths: 2 3 * - クライアントクラス - {py:class}`amplify.ToshibaSQBM2Client` * - [実行パラメータ](amplify.ToshibaSQBM2Client.parameters) - {py:class}`amplify.ToshibaSQBM2Client.Parameters` * - [実行結果](amplify.Result.client_result) - {py:class}`amplify.ToshibaSQBM2Client.Result` * - [実行時間](amplify.Result.execution_time) - {py:attr}`amplify.ToshibaSQBM2Client.Result.time` * - API 方式 - REST API (HDF5/JSON) * - API リファレンス - [{bdg-info}`📖 User Guide (v2.0.3)`](/../_static/User_Manual-SQBM+_for_On-premises.pdf) ``` * {py:class}`~amplify.ToshibaSQBM2Client.solver` プロパティに {py:class}`~amplify.ToshibaSQBM2Client.Solver.Qubo` が設定されている場合 (デフォルト): ```{csv-table} :header-rows: 1 :stub-columns: 1 :width: 100% :widths: 1 1 1 1 1 ,バイナリ変数,イジング変数,整数変数,実数変数 目的関数,2次,\-,\-,\- 等式制約,\-,\-,\-,\- 不等式制約,\-,\-,\-,\- ``` * {py:class}`~amplify.ToshibaSQBM2Client.solver` プロパティに {py:class}`~amplify.ToshibaSQBM2Client.Solver.Qplib` が設定されている場合: ```{csv-table} :header-rows: 1 :stub-columns: 1 :width: 100% :widths: 1 1 1 1 1 ,バイナリ変数,イジング変数,整数変数,実数変数 目的関数,2次,\-,\-,2次 等式制約,1次,\-,\-,1次 不等式制約,1次,\-,\-,1次 ``` * {py:class}`~amplify.ToshibaSQBM2Client.solver` プロパティに {py:class}`~amplify.ToshibaSQBM2Client.Solver.Pubo` が設定されている場合: ```{csv-table} :header-rows: 1 :stub-columns: 1 :width: 100% :widths: 1 1 1 1 1 ,バイナリ変数,イジング変数,整数変数,実数変数 目的関数,4次,\-,\-,4次 等式制約,\-,\-,\-,\- 不等式制約,\-,\-,\-,\- ``` :**クライアントクラス**: [クライアントクラスの共通インターフェース](#client-common-interface) に加えて以下のアトリビュートとメソッドを持ちます。 ```{list-table} :width: 100% :header-rows: 1 :widths: 1 1 3 * - アトリビュート - データ型 - 詳細 * - {py:attr}`~amplify.ToshibaSQBM2Client.solver` - {py:class}`~amplify.ToshibaSQBM2Client.Solver` | {py:class}`str` - 使用するソルバーを指定します。{py:class}`~amplify.ToshibaSQBM2Client.Solver.Qubo` (デフォルト) または {py:class}`~amplify.ToshibaSQBM2Client.Solver.Qplib` を指定可能です。 * - {py:attr}`~amplify.ToshibaSQBM2Client.compression` - {py:class}`bool` - リクエストデータを圧縮して送信します。デフォルトは {py:obj}`True` です。{py:obj}`False` に設定することでリクエストデータの圧縮時間を削減できますが、通信時間が増加する可能性があります。 ``` ```{list-table} :width: 100% :header-rows: 1 :widths: 1 1 3 * - メソッド - 返却型 - 詳細 * - {py:meth}`~amplify.ToshibaSQBM2Client.health_check` - {py:class}`bool` - ヘルスチェック API への問合せを行い、ソルバーが正常動作しているかを確認します。 ``` :**設定例**: ```{testcode} from amplify import ToshibaSQBM2Client from datetime import timedelta client = ToshibaSQBM2Client() # API トークンを設定 # (AWS 版を使用する場合は不要) client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # URL を設定 # (AWS 版を使用する場合は必要) # client.url = "http://xxx.xxx.xxx.xxx:8000/" # ソルバーを指定 # (Qubo, Qplib, Pubo のいずれか) client.solver = "Qplib" # 実行時間を 1 秒に設定 client.parameters.timeout = timedelta(milliseconds=1000) ``` :**実行例**: ```python from amplify import Model, VariableGenerator, solve # 決定変数と目的関数を定義 g = VariableGenerator() q = g.array("Binary", 2) f = q[0] * q[1] + q[0] - q[1] + 1 # モデルを作成 model = Model(f) # ソルバーを実行 result = solve(model, client) ``` ヘルスチェックAPIの実行: ```python >>> client.health_check() True ``` ソルバーのバージョンを取得: ```python >>> client.version '2.0.3' ```