FUJITSU Quantum-inspired Computing Digital Annealer ユーザー … · - 1 - はじめに...
Transcript of FUJITSU Quantum-inspired Computing Digital Annealer ユーザー … · - 1 - はじめに...
Copyright 2018 FUJITSU LIMITED
P3KD-1152-04
FUJITSU Quantum-inspired Computing
Digital Annealer ユーザーズガイド
第 4 版
はじめに
本書は、Digital Annealer サービスの利用方法および運用管理方法を説明します。
本書の読者本書は、Digital Annealer 上で組合せ 適化問題を解くためのプログラムやアプリケーションを開発する方、それらのプログラムやアプリケーションを実行する方を対象として説明します。本書を読むにあたって、以下の知識が必要です。
• 組合せ 適化問題に関する基本的な知識• 量子アニーリング、シミュレーテッドアニーリングなどの 適化問題のアルゴリズムに関する基本
的な知識• Virtual Private Network(VPN)に関する基本的な知識• Web API に関する基本的な知識
本書の構成本書の構成は以下のとおりです。
● 第 1 章 概要Digital Annealer の概要、およびシステム構成を説明します。
● 第 2 章 サービス利用開始アカウント登録、および Digital Annealer ポータルの利用方法を説明します。
● 第 3 章 サービスの利用サービスを使用して、組合せ 適化問題を解く方法を説明します。
● 用語集Digital Annealer 固有の用語、および関連する用語を説明します。
- 1 -
本書の表記について本書では、略称および記号を以下のように使用しています。
製品名/技術名の略称について
本書では、製品名/技術名を以下のように表記しています。
記号について
本書では、参照先、キー、メニューなどを表記するために、以下のように記号を使用します。
コマンドインターフェースの説明では、以下のような記号を使用します。
また、以下のアイコン表記を使用します。
製品名/技術名 略称
Windows® 7 Professional
Windows 7
Windows
Windows® 7 Enterprise
Windows® 7 Ultimate
Windows® 8.1 Pro Windows 8.1
Windows® 8.1 Enterprise
Windows® 10 ProWindows 10
Windows® 10 Enterprise
Windows® Internet Explorer®Internet Explorer
Internet Explorer®
Google Chrome™ ブラウザ Google Chrome
Mozilla® Firefox® ESR 52 Firefox ESR 52
記号 意味
「 」 本書内の参照先のタイトル、画面での設定値を「 」で囲んでいます
『 』 他マニュアル参照のマニュアル名を『 』で囲んでいます
[ ] 画面のボタン名、タブ名、ドロップダウンメニュー、およびキーボードのキー名を示します
例:[設定]ダイアログボックス、[ファイル]メニュー、[項目名]、 [OK]ボタン、[Enter]キー
記号 意味
XXXX 値や文字列が可変であることを表す場合、斜体(イタリック体)の文字を使用、または< > で囲みます
<XXXX>
操作や設定を行ううえで制限される内容や注意が必要な内容が書いてあります。
操作や設定を行ううえで知っておくと便利な機能や使い方など、本文を補足する内容が書いてあります。
- 2 -
輸出管理規制について本ドキュメントを輸出または第三者へ提供する場合は、お客様が居住する国および米国輸出管理関連法規等の規制をご確認のうえ、必要な手続きをおとりください。
高度な安全性が要求される用途への使用について本サービスは、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造されているものであり、原子力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持のための医療用機器、兵器システムにおけるミサイル発射制御など、極めて高度な安全性が要求され、仮に当該安全性が確保されない場合、直接生命・身体に対する重大な危険性を伴う用途(以下「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではありません。お客様は本サービスを必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでください。また、お客様がハイセイフティ用途に本サービスを使用したことにより発生する、お客様または第三者からのいかなる請求または損害賠償に対しても富士通株式会社およびその関連会社は一切責任を負いかねます。
商標について
• Microsoft、Windows またはその他のマイクロソフト製品の名称および製品名は、米国 Microsoft Corporation の、米国およびその他の国における商標または登録商標です。
• Linux® は米国及びその他の国における Linus Torvalds の登録商標です。• Google は、Google Inc. の商標または登録商標です。• Mozilla、Firefox は Mozilla Foundation の登録商標です。• Mac、macOS、OS X は、米国および他の国々で登録された Apple Inc. の商標です。• その他の会社名、各製品名などの固有名詞は、各社の商号、登録商標または商標です。• その他、会社名、システム名、製品名などには必ずしも商標表示を付記しておりません。
2018 年 12 月 第 4 版
- 3 -
改版履歴表
版数 日付 変更箇所(変更種別)(注) 変更内容初版 2018 年 4 月 全体 新規作成
2 版 2018 年 6 月
第 2 章(追加) サービス利用開始を追加3.1.2.3.2(追加) 通知されるメッセージを追加3.1.2.4(追加) • FujitsuDAMixedModeSolver を追加
• FujitsuDAPTSolver/FujitsuDASolver にguidance_config パラメーターを追加
• QuboResponse に solver_input_parametersキーを追加
3.1.2.4(変更) FujitsuDAPTSolver/FujitsuDASolver のsolution_mode パラメーターの説明を変更
3.2.2(追加) 共有型の契約タイプおよび処理方法を追加
3 版 2018 年 10 月
2.2(追加) API Key Management メニューを追加3.1(追加) • API Gateway 経由で Web API サービスを使用
する手順を追加• VPN 経由で使用する場合の契約タイプに関す
る注意事項を追加3.1.1.1(追加) • 提供する Web API サービスに async/qubo/
solve、async/jobs、async/jobs/result、async/jobs/cancel を追加
• 備考を追加3.1.1.2.1、3.1.1.2.2(変更) API Gateway 経由の使用例に変更3.1.1.2.1、3.1.1.2.2(追加) VPN 経由で使用する場合の注意事項を追加3.1.1.2.3(追加) async/qubo/solve の使用例を追加3.1.1.2.4(追加) async/jobs の使用例を追加3.1.1.2.5(追加) async/jobs/result の使用例を追加3.1.1.2.6(追加) async/jobs/cancel の使用例を追加3.1.1.3.1、3.1.1.3.2(追加) リクエストヘッダーに X-DA-Access-Key を追加3.1.1.3.3(追加) async/qubo/solve の仕様を追加3.1.1.3.4(追加) async/jobs の仕様を追加3.1.1.3.5(追加) async/jobs/result の仕様を追加3.1.1.3.6(追加) async/jobs/cancel の仕様を追加3.1.1.4(追加) • QuboRequest の備考に 1QBit 社提供のソル
バーの参照先 URL を追加• QuboResponse に API Gateway 経由で使用す
る場合のデータ形式を追加• JobID、JobStatusList、JobStatus を追加
3.1.1.4(変更) • BinaryPolynomial の coefficient キー、polynomials キーの説明を変更
• QuboMatrix の qubo_row キーの説明を変更• QuboRequestの各ソルバーの guidance_config
パラメーターの説明を変更3.2.2(変更) リクエスト中断に関する注意事項を変更3.2.2(追加) • 問題規模が大きい場合の注意事項を追加
• 非同期型のパラメーター上限値を追加
- 4 -
注)変更箇所は 新版の項番を示しています。ただし、アスタリスク(*)の付いている項番は旧版の 項番を示します。
版数 日付 変更箇所(変更種別)(注) 変更内容
4 版 2018 年 12 月
2.2(変更) API Key Management メニューの説明を変更3.1(変更) VPN 経由で使用する場合の契約タイプに関する
注意事項を変更3.1.1.1(追加) 使用時間の上限に関する備考を追加3.1.1.2(追加) Digital Annealer の計算精度を追加3.1.1.3(変更) 使用例を変更3.1.1.4(変更) Standard-2、Trial-2、または Academic-2 を契約
した場合の URI を追加3.1.1.4.2(追加) メッセージを追加3.1.1.5(追加) • QuboRequest に Standard-2、Trial-2、また
は Academic-2 を契約した場合のソルバーを追加
• QuboResponse の energy キーに関する注意事項を追加
3.1.1.5(変更) • BinaryPolynomial の coefficient キーの説明、注意事項を変更
• QuboMatrix の qubo_row キーの説明、注意事項を変更
• FujitsuDAPTSolver/FujitsuDAMixedModeSolverの説明、temperature_interval パラメーターの説明を変更
• FujitsuDASolver の expert_mode パラメーターの説明を変更
• API Gateway 経由で使用する場合のQuboResponse の energy キー、frequencyキーのデータ型を変更
• JobStatus の status キーの説明を変更3.2.2(追加) Standard-2、Trial-2、または Academic-2 を契約
した場合のパラメーター上限値/下限値を追加
- 5 -
- 6 -
目次
第 1 章 概要 .....................................................................................................71.1 Digital Annealer とは .................................................................................. 8
1.1.1 Digital Annealer のサービス .................................................................. 8
第 2 章 サービス利用開始 .................................................................................92.1 アカウント登録 .......................................................................................... 102.2 Digital Annealer ポータルの利用方法 ......................................................... 10
第 3 章 サービスの利用 ..................................................................................113.1 Web API サービス ...................................................................................... 12
3.1.1 Web API の使用方法 ............................................................................ 143.1.1.1 概要 .............................................................................................. 143.1.1.2 Digital Annealer の計算精度 ......................................................... 153.1.1.3 API の使用例 ................................................................................. 16
3.1.1.3.1 qubo/hobo2qubo の使用例 .................................................. 163.1.1.3.2 qubo/solve の使用例 ............................................................ 173.1.1.3.3 async/qubo/solve の使用例 .................................................. 183.1.1.3.4 async/jobs の使用例 ............................................................. 193.1.1.3.5 async/jobs/result の使用例 ................................................... 193.1.1.3.6 async/jobs/cancel の使用例 .................................................. 20
3.1.1.4 API の仕様 .................................................................................... 213.1.1.4.1 qubo/hobo2qubo の仕様 ..................................................... 213.1.1.4.2 qubo/solve の仕様 ............................................................... 223.1.1.4.3 async/qubo/solve の仕様 ...................................................... 243.1.1.4.4 async/jobs の仕様 ................................................................ 253.1.1.4.5 async/jobs/result の仕様 ...................................................... 263.1.1.4.6 async/jobs/cancel の仕様 ..................................................... 27
3.1.1.5 API のデータ形式 .......................................................................... 283.2 注意事項 .................................................................................................... 48
3.2.1 VPN 接続時の注意 ............................................................................... 483.2.2 Web API 使用時の注意 ......................................................................... 52
用語集 ..............................................................................................................54
第 1 章 概要
この章では、Digital Annealer の概要について説明します。
- 7 -
1.1 Digital Annealer とはDigital Annealer は、量子現象を用いた計算方法に着想を得て設計したデジタル回路です。アニーリング方式を用いて、組合せ 適化問題を高速に解くことができます。従来のコンピュータのようなプログラミングは必要なく、パラメーターを設定するだけで計算が行われます。また、コンピュータの内部で任意の素子同士が自由に信号をやりとりできる全結合型の構造を採用しているため、量子アニーリングマシンに比べ、計算量が膨大で今まで解けなかった複雑な問題を計算させることができます。
Digital Annealer は、QUBO(Quadratic Unconstrained Binary Optimization)を入力データとして持ち、以下の評価関数(エネルギー)を 小化するための組合せを探索します。
2 値変数 x (x ∈ {0,1}) により、組合せの状態を表現しています。
1.1.1 Digital Annealer のサービス
Digital Annealer サービスとは、1QBit 社が開発した量子コンピュータ向けソフトウェア(以降、1QBitソフトウェア)、および 適化回路 Digital Annealer を実装したハードウェアを使用して、組合せ 適化問題を高速に解くクラウドサービスです。
以下のサービスを提供します。
• Web API サービス
図 1:Web API サービス
E x Ji j, xixjj i>
i hixi
i c+ +=
- 8 -
第 2 章 サービス利用開始
この章では、サービスの利用開始について説明します。
- 9 -
2.1 アカウント登録Digital Annealer が提供するサービスを利用するには、Digital Annealer ポータル(以下 URL)にアクセスし、[Create a new account]からアカウント登録を行ってください。
https://portal.digitalannealer.global.fujitsu.com/
2.2 Digital Annealer ポータルの利用方法アカウント登録時に指定した User ID/Password で Digital Annealer ポータルにログインすると、Mypage が表示されます。Mypage には 4 つのメニューがあり、それぞれ以下の操作が行えます。
• Contracts & Ordersサービスの契約、契約内容の確認、契約の変更、契約の解約ができます。
• API Key ManagementWeb API サービスを API Gateway 経由で使用する場合に必要な API Key の作成、表示、および削除ができます。Web API アクセスのための URL も確認できます。
• Invoices & Usage Reportsサービスの利用状況および利用料金の確認ができます。サービスの利用状況は過去 3 か月分まで確認でき、利用料金は過去 1 年間まで確認できます。
• Account Informationアカウント登録時に指定した情報の確認および変更ができます。
• Digital Annealer ポータルへは、Google Chrome でアクセスしてください。画面解像度は 1366 × 768 以上を推奨します。
• アカウント登録を行うと、登録時に指定したメールアドレスにメールが通知されます。このメールに記載の URL にアクセスすることで、アカウント登録が完了します。
• パスワードは 5 回間違えると 30 分間ログインできません。30 分経過後、再度ログインしてください。
• API Key Management メニューで API Key を作成したとき表示される Sample Request は、Linux上で実行する場合の例です。
- 10 -
第 3 章 サービスの利用
この章では、Digital Annealer が提供するサービスを使用して、組合せ 適化問題を解く方法について説明します。
- 11 -
3.1 Web API サービス以下のどちらかの手順で Web API サービスを使用します。
● API Gateway 経由で使用する場合1. 事前準備
Digital Annealer ポータルの API Key Management メニューから、API Key を作成します。このとき、Web API アクセスのための URL も通知されます。
2. Web API を使用するWeb API を使用して、組合せ 適化問題を解きます。
● VPN 経由で使用する場合1. 事前準備
契約時に通知された以下の情報を確認してください。• VPN 接続
• VPN サーバの FQDN(vpn.digitalannealer.global.fujitsu.com)• VPN 接続用アカウント(ユーザー名/パスワード)• VPN サーバから配付される IP アドレス• 事前共有キー(L2TP/IPsec VPN 接続の場合だけ)
• Web API アクセス• Digital Annealer サーバの IP アドレス
専有型を契約したお客様は使用できません。
• 専有型を契約したお客様だけ使用できます。• 2018 年 9 月以前に共有型を契約したお客様は、API Gateway 経由での使用へ変更してください。
• VPN 接続用アカウントのパスワードは、通知を受け取り次第、速やかに変更してください。(1) Internet Explorer で以下の URL にアクセスします。
https://vpn.digitalannealer.global.fujitsu.com/
Mac 端末(OS X または macOS)を使用する場合、上記 URL へは Firefox ESR 52 または 60 でアクセスしてください。
(2) ログイン画面で、ユーザー名とパスワードを入力して、[パスワードの変更]をクリックし、パスワードを変更します。
• パスワードの有効期限は 90 日です。必ず有効期限内に変更してください。有効期限が切れた場合の通知と対処については、「3.2.1 VPN 接続時の注意」(P.48) を参照してください。パスワードを忘れた場合は、ヘルプデスクへお問合せください。
- 12 -
2. Digital Annealer サーバへ VPN 接続する手順 1. で確認した VPN 接続情報を使用して、Digital Annealer サーバへ VPN 接続します。VPN 接続することで、お客様のシステムからインターネット経由での通信を安全に使用できます。同一アカウントで、同時に 5 ユーザーまでログインできます。
• L2TP/IPsec VPN 接続の場合L2TP/IPsec VPN 接続をサポートする OS であれば、L2TP/IPsec VPN で Digital Annealer サーバへのアクセスが可能です。
接続認証方式は事前共有鍵方式、ユーザー認証方式は MS-CHAP v2 を設定して、接続してください。
動作実績のある OS は以下のとおりです。• Windows 7(32bit/64bit)• Windows 8.1(32bit/64bit)• Windows 10(32bit/64bit)• OS X 10.9/10.10/10.11• macOS Sierra 10.12
• SSL-VPN 接続の場合ログインには、Internet Explorer 8.0、9.0、10.0、または 11.0 が必要です。Internet Explorer を起動して、以下の URL を入力してください。
https://vpn.digitalannealer.global.fujitsu.com/
Digital Annealer サーバがサポートする SSL-VPN クライアントは、以下のとおりです。
VPN 接続に関する注意事項は「3.2.1 VPN 接続時の注意」(P.48) を参照してください。
OS ブラウザ
Windows 7(32bit) Internet Explorer 8
Internet Explorer 9
Internet Explorer 10
Internet Explorer 11
Windows 7(64bit) Internet Explorer 8(32bit)
Internet Explorer 9(32bit)
Internet Explorer 10
Internet Explorer 11
Windows 8.1(32bit/64bit) Internet Explorer 11(デスクトップ用)
Windows 10(32bit/64bit) Internet Explorer 11
SSL-VPN 接続は、必ず以下の手順で切断してください。(1) 隠れているインジケーターを表示します。(2) SSL-VPN 接続アイコンをダブルクリックします。(3) SSL-VPN 接続画面下部の[ログアウト]ボタンをクリックして、ログアウトしま
す。[切断]ボタンをクリックした場合、そのあとに必ず[ログアウト]ボタンをクリックしてください。
手順 (3) で[ログアウト]ボタンをクリックしなかった場合は、セッションがシステムに残り、以降、同時に 5 ユーザーまでのログインができなくなる可能性があります。
- 13 -
3. Web API を使用するWeb API を使用して、組合せ 適化問題を解きます。
3.1.1 Web API の使用方法
Web API の使用方法について説明します。Web API の使用に関する注意事項は、「3.2.2 Web API 使用時の注意」(P.52) を参照してください。
3.1.1.1 概要
Web API で提供するサービスを以下に示します。
データ形式と使用するポート番号を以下に示します。
サービス 種別 説明
qubo/hobo2qubo 同期 HOBO(Higher Order Binary Optimization)をQUBO(Quadratic Unconstrained Binary Optimization)に変換する
qubo/solve QUBO の 適解を求める
async/qubo/solve 非同期 QUBO の 適解を求めるジョブを登録する
async/jobs ジョブの一覧を取得する
async/jobs/result ジョブの結果を取得または削除する
async/jobs/cancel ジョブをキャンセルする
• 種別が非同期のサービスは、非同期サービスを契約した場合だけ使用できます。• 種別が非同期のサービスは、API Gateway 経由で使用する場合だけ使用できます。• 共有型の月額固定を契約した場合、使用時間の上限値が設定されています。同期型と非同期型それぞれに上限値が設定されており、その上限を超えて使用することはできません。
• qubo/solve は、同一アカウントで 大 5 多重までリクエストできます。• async/qubo/solve は、同一アカウントで 大 16 多重までリクエストできます。なお、async/
qubo/solve の処理結果の数も多重数に含まれるため、不要な処理結果は削除してください。• 上記以外にも 1QBit 社から Web API サービスが提供されています。ただし、VPN 経由で使用する場合は未サポートです。サービスの種類や仕様については、以下を参照してください。
http://portal.1qbit.com/documentationStandard-2、Trial-2、または Academic-2 を契約した場合、リクエスト時の URI は、/v1/... ではなく、/v2/... を指定してください。
データ形式 ポート番号
REST(REpresentational State Transfer)/JSON 形式 8080
- 14 -
3.1.1.2 Digital Annealer の計算精度
Digital Annealer ハードウェアは、二次のバイナリ多項式の係数を整数としてエンコードします。Digital Annealer ハードウェアの計算精度は以下のとおりです。 適解を求めるには、QUBO の式の係数を Digital Annealer ハードウェアの計算精度の範囲内で指定する必要があります。
*1: -263+1 ~ 263-1 の範囲とします。
[Scaling and Rounding]
QUBO の式の係数が Digital Annealer ハードウェアの計算精度の範囲外や整数でない場合に、DigitalAnnealer ハードウェア上で解くことができる多項式に自動で変換する機能です。以下のソルバーを御使用の場合、アニーリング時にこの機能が有効になります。
• Standard-2、Trial-2、または Academic-2 の場合• 「FujitsuDA2PTSolver」(P.30)• 「FujitsuDA2Solver」(P.32) を使用し、 expert_mode パラメーターに false を指定する場合• 「FujitsuDA2MixedModeSolver」(P.34)
• Premium、Standard、Trial、または Academic の場合• 「FujitsuDAPTSolver」(P.36)• 「FujitsuDASolver」(P.38) を使用し、 expert_mode パラメーターに false を指定する場合• 「FujitsuDAMixedModeSolver」(P.40)
契約のタイプ 問題の規模 二次項 線形項
PremiumStandardTrialAcademic
~ 1K 16bit の符号付き整数 25bit の符号付き整数
Standard-2Trial-2Academic-2
~ 4K 64bit の符号付き整数(*1)
76bit の符号付き整数
4K 超~ 8K 16bit の符号付き整数 76bit の符号付き整数
qubo/solve で指定可能な QUBO の式の係数の範囲は、「BinaryPolynomial」(P.28) または「QuboMatrix」(P.29) で確認してください。
- 15 -
3.1.1.3 API の使用例
提供する各 API の使用例を以下に示します。この項の使用例は、Linux 上での実行例です。各 API の仕様については、「3.1.1.4 API の仕様」(P.21) を参照してください。
3.1.1.3.1 qubo/hobo2qubo の使用例
以下に、qubo/hobo2qubo を使用して、HOBO 形式の数式を QUBO 形式に変換する例を示します。
リクエスト例: を QUBO 形式に変換
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。
2. QUBO 形式に変換された結果が Digital Annealer サーバから取得できます。レスポンス例:
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{ "terms": [ { "coefficient": 1.0, "polynomials": [ 1, 2, 3 ] } ]}' <Access URL>/v2/qubo/hobo2qubo
VPN 経由で使用する場合は、下線部分の指定が異なります。• -H 'X-DA-Access-Key:<API Key>' オプションは指定不要です。• アクセス URL は、以下のように指定します。
<IP address> は、Digital Annealer サーバの IP アドレス(契約時に通知)を指定します。http://<IP address>:8080
{"terms":[{"coefficient":2,"polynomials":[1,2]},{"coefficient":-4,"polynomials":[1,4]},{"coefficient":-4,"polynomials":[2,4]},{"coefficient":1,"polynomials":[3,4]},{"coefficient":6,"polynomials":[4]}]}
x1x2x3
2x1x2 4x1x4– 4x2x4– x3x4 6x4+ +
- 16 -
3.1.1.3.2 qubo/solve の使用例
以下に、qubo/solve を使用して、QUBO の 適解を求める例を示します。
リクエスト例: の最適解を求める
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。
• FujitsuDA2PTSolver 使用の場合
• FujitsuDA2Solver 使用の場合
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{ "binary_polynomial": { "terms": [{ "coefficient": 2, "polynomials": [1, 2] }, { "coefficient": -4, "polynomials": [2, 4] } ] }, "fujitsuDA2PT": { "number_iterations": 1000000, "number_replicas": 26, "guidance_config":{"1":false,"2":false,"4":false} }}' <Access URL>/v2/qubo/solve
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{ "binary_polynomial": { "terms": [{ "coefficient": 2, "polynomials": [1, 2] }, { "coefficient": -4, "polynomials": [2, 4] } ] }, "fujitsuDA2": { "expert_mode": true, "number_iterations": 1000000, "number_runs": 16, "offset_increase_rate": 819, "temperature_start": 655, "temperature_decay": 0.0001, "temperature_mode": "EXPONENTIAL", "temperature_interval": 100 }}' <Access URL>/v2/qubo/solve
2x1x2 4x2x4–
- 17 -
2. QUBO の 適解が Digital Annealer サーバから取得できます。レスポンス例:FujitsuDA2PTSolver 使用の場合
レスポンス例:FujitsuDA2Solver 使用の場合
3.1.1.3.3 async/qubo/solve の使用例
以下に、async/qubo/solve を使用して、QUBO の 適解を求めるジョブを登録する例を示します。
リクエスト例: の最適解を求めるジョブを登録
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。
VPN 経由で使用する場合は、下線部分の指定が異なります。• -H 'X-DA-Access-Key:<API Key>' オプションは指定不要です。• アクセス URL は、以下のように指定します。
<IP address> は、Digital Annealer サーバの IP アドレス(契約時に通知)を指定します。http://<IP address>:8080
{"qubo_solution":{"result_status":true,"solutions":[{"energy":-4,"frequency":26,"configuration":{"1":false,"2":true,"4":true}}],"timing":{"cpu_time":"34","queue_time":"3372","solve_time":"1435","total_elapsed_time":"4807","detailed":{"anneal_time":"1401"}}},"solver_input_parameters":{"guidance_config":"{x1 = 0, x2 = 0, x4 = 0}","job_id":"tenant1-183172851152618","number_iterations":"1000000","number_replicas":"26","offset_increase_rate":"1000","solution_mode":"COMPLETE","solver_name":"FujitsuDA2PT","timeout":"0"}}
{"qubo_solution":{"result_status":true,"solutions":[{"energy":-4,"frequency":16,"configuration":{"1":false,"2":true,"4":true}}],"timing":{"cpu_time":"24","queue_time":"3174","solve_time":"77","total_elapsed_time":"3251","detailed":{"anneal_time":"53"}}},"solver_input_parameters":{"expert_mode":"true","job_id":"tenant1-183172900860516","number_iterations":"1000000","number_runs":"16","offset_increase_rate":"819","solution_mode":"COMPLETE","solver_name":"FujitsuDA2","temperature_decay":"0.0001","temperature_interval":"100","temperature_mode":"EXPONENTIAL","temperature_start":"655","timeout":"0"}}
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{ "binary_polynomial": { "terms": [{ "coefficient": 2, "polynomials": [1, 2] }, { "coefficient": -4, "polynomials": [2, 4] } ] }, "fujitsuDA2PT": { "number_iterations": 1000000, "number_replicas": 26, "guidance_config":{"1":false,"2":false,"4":false} }}' <Access URL>/v2/async/qubo/solve
2x1x2 4x2x4–
- 18 -
2. 登録されたジョブ番号(job_id)が Digital Annealer サーバから取得できます。レスポンス例:
3.1.1.3.4 async/jobs の使用例
以下に、async/jobs を使用して、登録されたジョブの一覧を取得する例を示します。
リクエスト例:
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。
2. 登録されているすべてのジョブ番号(job_id)の一覧が Digital Annealer サーバから取得できます。レスポンス例:
3.1.1.3.5 async/jobs/result の使用例
以下に、async/jobs/result を使用して、ジョブの結果を取得または削除する例を示します。
リクエスト例 1: ジョブの結果(QUBO の最適解)を取得する
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。<Job ID> は、登録されているジョブ番号を指定します。
2. QUBO の 適解が Digital Annealer サーバから取得できます。レスポンス例 1:ジョブが完了している場合
{"job_id":"ABC00001-1234512345123"}
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X GET <Access URL>/v2/async/jobs
{"job_status_list":[{"job_id":"tenant1-181910349357","job_status":"Done","start_time":"2018-07-10T06:02:22Z"},{"job_id":"tenant1-181910350804","job_status":"Running","start_time":"2018-07-10T06:02:24Z"},{"job_id":"tenant1-181910633669","job_status":"Error","start_time":"2018-07-10T06:05:07Z"},{"job_id":"tenant1-181910648337","job_status":"Waiting","start_time":"2018-07-10T06:05:21Z"}]}
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X GET <Access URL>/v2/async/jobs/result/<Job ID>
{"qubo_solution":{"result_status":true,"solutions":[{"energy":-4,"frequency":26,"configuration":{"1":false,"2":true,"4":true}}],"timing":{"cpu_time":"34","queue_time":"3372","solve_time":"1435","total_elapsed_time":"4807","detailed":{"anneal_time":"1401"}}},"solver_input_parameters":{"guidance_config":"{x1 = 0, x2 = 0, x4 = 0}","job_id":"tenant1-183172851152618","number_iterations":"1000000","number_replicas":"26","offset_increase_rate":"1000","solution_mode":"COMPLETE","solver_name":"FujitsuDA2PT","timeout":"0"},{"status":"Done"}}
- 19 -
レスポンス例 2:ジョブが実行中の場合
レスポンス例 3:ジョブが実行待ちの場合
リクエスト例 2: ジョブの結果を削除する
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。<Job ID> は、登録されているジョブ番号を指定します。
2. ジョブが完了している場合、ジョブの結果が Digital Annealer サーバから削除されます。レスポンス例 1:ジョブが完了しており、削除された場合
レスポンス例 2:ジョブが実行中の場合
レスポンス例 3:ジョブが実行待ちの場合
3.1.1.3.6 async/jobs/cancel の使用例
以下に、async/jobs/cancel を使用して、ジョブをキャンセルする例を示します。
リクエスト例:
1. クライアント上で、以下を実行します。<API Key> は、Digital Annealer ポータルで作成した API Key を指定します。<Access URL> は、API Key 作成時に通知された API アクセスのための URL を指定します。<Job ID> は、登録されているジョブ番号を指定します。
2. ジョブが実行待ちの場合、ジョブの実行が Digital Annealer サーバからキャンセルされます。レスポンス例 1:ジョブが実行待ちでありキャンセルされた場合
レスポンス例 2:ジョブが完了しているためキャンセルできなかった場合
{"status":"Running"}
{"status":"Waiting"}
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X DELETE <Access URL>/v2/async/jobs/result/<Job ID>
{"qubo_solution":{"result_status":true,"solutions":[{"energy":-4,"frequency":26,"configuration":{"1":false,"2":true,"4":true}}],"timing":{"cpu_time":"34","queue_time":"3372","solve_time":"1435","total_elapsed_time":"4807","detailed":{"anneal_time":"1401"}}},"solver_input_parameters":{"guidance_config":"{x1 = 0, x2 = 0, x4 = 0}","job_id":"tenant1-183172851152618","number_iterations":"1000000","number_replicas":"26","offset_increase_rate":"1000","solution_mode":"COMPLETE","solver_name":"FujitsuDA2PT","timeout":"0"},{"status":"Deleted"}}
{"status":"Running"}
{"status":"Waiting"}
$ curl -H 'X-DA-Access-Key:<API Key>' -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{ "job_id" :"<Job ID>"}' <Access URL>/v2/async/jobs/cancel
{"status":"Canceled"}
{"status":"Done"}
- 20 -
レスポンス例 3:ジョブが実行中のためキャンセルできなかった場合
3.1.1.4 API の仕様
提供する各 API の仕様とデータ形式を以下に示します。
3.1.1.4.1 qubo/hobo2qubo の仕様
qubo/hobo2qubo の仕様を以下に示します。
• メソッド種別POST
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/qubo/hobo2quboPremium、Standard、Trial、または Academic を契約した場合:/v1/qubo/hobo2qubo
• リクエストヘッダーの説明
*1: VPN 経由で使用する場合は、指定不要。
• リクエストボディの形式BinaryPolynomialデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式BinaryPolynomialデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。
{"status":"Running"}
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key(*1)
- 21 -
3.1.1.4.2 qubo/solve の仕様
qubo/solve の仕様を以下に示します。
• メソッド種別POST
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/qubo/solvePremium、Standard、Trial、または Academic を契約した場合:/v1/qubo/solve
• リクエストヘッダーの説明
*1: VPN 経由で使用する場合は、指定不要。
• リクエストボディの形式QuboRequestデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式QuboResponseデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。Digital Annealerハードウェアの処理で異常が検出された場合は、以下のようなメッセージが通知されます。
Digital Annealer failed to do the anneal with code: -1
【原因】指定したパラメーターに誤りがあるなど、アプリケーションのエラーであることを示します。
【対処】指定したパラメーターに誤りがないかなど確認してください。
Digital Annealer failed to do the anneal with code: -2
【原因】システムのエラーであることを示します。
【対処】サポート窓口へお問合せください。
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key(*1)
- 22 -
Digital Annealer failed to do the anneal with code: -3
【原因】資源が一時的に利用できないなど、リトライ可能なエラーであることを示します。
【対処】しばらく時間をおいてから再試行してください。
Digital Annealer failed to do the anneal with code: -4 (*1)【原因】
ハードウェアのエラーが発生したことを示します。
【対処】サポート窓口へお問合せください。
Digital Annealer failed to do the anneal with code: -6 (*1)【原因】
Job ID に関するエラーが発生したことを示します。
【対処】リクエストボディに複数のソルバーの設定がないか、または JSON フォーマットの異常がないかを確認してください。
Digital Annealer failed to do the anneal with code: -7 (*1)【原因】
温度が負の値になる場合など、浮動小数点演算のエラーが発生したことを示します。
【対処】温度関連パラメーターの設定に誤りがないかなどを確認してください。
Digital Annealer failed to initialize with code: (-1)
【原因】契約タイプが専有型で、アニーリング処理中に qubo/solve の新たなリクエストを発行した場合など、リトライ可能なエラーであることを示します。
【対処】しばらく時間をおいてから再試行してください。
*1: Standard-2、Trial-2、または Academic-2 を契約した場合だけ通知
- 23 -
3.1.1.4.3 async/qubo/solve の仕様
async/qubo/solve の仕様を以下に示します。
• メソッド種別POST
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/async/qubo/solveStandard、Trial、または Academic を契約した場合:/v1/async/qubo/solve
• リクエストヘッダーの説明
• リクエストボディの形式QuboRequestデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式JobIDデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key
- 24 -
3.1.1.4.4 async/jobs の仕様
async/jobs の仕様を以下に示します。
• メソッド種別GET
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/async/jobsStandard、Trial、または Academic を契約した場合:/v1/async/jobs
• リクエストヘッダーの説明
• リクエストボディの形式なしデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式JobStatusListデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key
- 25 -
3.1.1.4.5 async/jobs/result の仕様
async/jobs/result の仕様を以下に示します。
• メソッド種別GET / DELETE
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/async/jobs/result/<Job ID> (*1)Standard、Trial、または Academic を契約した場合:/v1/async/jobs/result/<Job ID> (*1)
*1: <Job ID> は、登録されているジョブ番号を指定します。
• リクエストヘッダーの説明
• リクエストボディの形式なしデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式• ジョブが完了している場合
QuboResponse• ジョブが完了していない場合
JobStatusデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。Digital Annealer ハードウェアの処理で異常が検出された場合に通知されるメッセージは、「3.1.1.4.2 qubo/solve の仕様」(P.22) を参照してください。
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key
- 26 -
3.1.1.4.6 async/jobs/cancel の仕様
async/jobs/cancel の仕様を以下に示します。
• メソッド種別POST
• URIStandard-2、Trial-2、または Academic-2 を契約した場合:/v2/async/jobs/cancelStandard、Trial、または Academic を契約した場合:/v1/async/jobs/cancel
• リクエストヘッダーの説明
• リクエストボディの形式JobIDデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• レスポンスボディの形式JobStatusデータ形式は、「3.1.1.5 API のデータ形式」(P.28) を参照してください。
• 処理結果処理結果は、HTTP ステータスコードで返されます。200: 正常200 以外:異常
異常の内容は、通知されるエラーメッセージで確認してください。
キー 説明
Content-Length <length> リクエストボディのサイズ(単位:バイト)
Content-Type application/json(固定)
Accept application/json(固定)
X-DA-Access-Key Digital Annealer ポータルで取得した API Key
- 27 -
3.1.1.5 API のデータ形式
提供する各 API のリクエストおよびレスポンスのデータ形式を以下に示します。
BinaryPolynomial
*1: VPN 経由で使用する場合、coefficient は float 型で指定します。*2: VPN 経由で使用する場合、polynomials は uint16 型で指定します。
指定例:
BinaryPolynomial{ terms [BinaryPolynomialTerm]}
キー 説明
terms BinaryPolynomialTerm の配列
BinaryPolynomialTerm{ coefficient number($double) polynomials [integer($uint32)]}
キー 説明
coefficient 係数(double 型)(*1)Standard-2、Trial-2、または Academic-2 を契約した場合、値は以下の範囲で指定• 問題の規模が 4K 超~ 8K の場合
-215 = -32,768 ~ 215 -1 = 32,767 の値を指定• 上記以外
-262 = -4,611,686,018,427,387,904 ~ 262 = 4,611,686,018,427,387,904 の値を指定ただし、double 型(倍精度浮動小数点数)の丸め誤差の影響を受けないようにするため、以下の範囲の値を指定することを推奨-253 = -9,007,199,254,740,992 ~ 253 = 9,007,199,254,740,992
polynomials 変数の番号の配列(uint32 型)(*2)
{ "terms": [ { "coefficient": 2, "polynomials": [ 1, 2 ] }, { "coefficient": -4, "polynomials": [ 2, 4 ] }, { "coefficient": 1, "polynomials": [ 4 ] }, { "coefficient": 3 } ]}
2x1x2 4x2x4– x4 3+ +
- 28 -
2 次多項式の各項単位に、 coefficient に係数や定数を指定し、polynomials に変数の番号をカンマで区切って指定します。
QuboMatrix
*1: VPN 経由で使用する場合、qubo_row は float 型で指定します。
指定例:
qubo/solve で、ソルバーに FujitsuDA2Solver を使用する場合、または FujitsuDASolver を使用し、かつ、expert_mode パラメーターに true を指定する場合、coefficient に指定する係数は「3.1.1.2 Digital Annealer の計算精度」(P.15) に従い、ハードウェア上で計算できる範囲の整数で指定してください。
QuboMatrix { qubo [QuboMatrixQuboArray]}
キー 説明
qubo QuboMatrixQuboArray の配列
QuboMatrixQuboArray { qubo_row [number($double)]}
キー 説明
qubo_row qubo の行の配列(double 型)(*1)Standard-2、Trial-2、または Academic-2 を契約した場合、値は以下の範囲で指定• 問題の規模が 4K 超~ 8K の場合
-215 = -32,768 ~ 215 -1 = 32,767 の値を指定• 上記以外
-262 = -4,611,686,018,427,387,904 ~ 262 = 4,611,686,018,427,387,904 の値を指定ただし、double 型(倍精度浮動小数点数)の丸め誤差の影響を受けないようにするため、以下の範囲の値を指定することを推奨-253 = -9,007,199,254,740,992 ~ 253 = 9,007,199,254,740,992
{ "qubo": [ { "qubo_row": [ 0, 0, 0, 0, 0 ] }, { "qubo_row": [ 0, 0, 2, 0, 0 ] }, { "qubo_row": [ 0, 0, 0, 0, -4 ] }, { "qubo_row": [ 0, 0, 0, 0, 0 ] }, { "qubo_row": [ 0, 0, 0, 0, 1 ] } ]}
2x1x2 4x2x4– x4+
- 29 -
2 次多項式の各項の 1 つ目の変数と 2 つ目の変数を、列と行でそれぞれ以下のように表し、それぞれの変数の番号の要素に係数を指定します。 列 行
1 次式の場合は、変数の番号の対角項に係数を指定します。定数は指定できないため、求められた 適解に加算減算するか、または BinaryPolynomial で指定してください。
QuboRequest
■ Standard-2、Trial-2、または Academic-2 を契約した場合
*1: 2 種類の形式(BinaryPolynomial / QuboMatrix)のどちらかで QUBO を指定します。*2: 3 種類のソルバー(FujitsuDA2PTSolver / FujitsuDA2Solver / FujitsuDA2MixedModeSolver)のどれかを指
定します。レプリカ交換(parallel tempering)機能を使用する場合は、FujitsuDA2PTSolver を指定してください。レプリカ交換機能については、「備考」(P.42) および「レプリカ交換」(P.55) の説明を参照してください。
ソルバー(FujitsuDA2PTSolver / FujitsuDA2Solver / FujitsuDA2MixedModeSolver)のパラメーターの詳細を以下に示します。
● FujitsuDA2PTSolver
初回実行は、Scaling and Rounding(「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照)が有効であり、かつ、温度スケジュールに関わるパラメーターのチューニング作業が不要(「備考」(P.42)の説明を参照)である、 FujitsuDA2PTSolver の指定を推奨します。FujitsuDA2PTSolver を指定しても、 適解を得るまで時間がかかる場合、または 適解が得られない場合は、「FujitsuDA2Solver」(P.32) または「FujitsuDA2MixedModeSolver」(P.34) を指定した実行をお試しください。
qubo/solve で、ソルバーに FujitsuDA2Solver を使用する場合、または FujitsuDASolver を使用し、かつ、expert_mode パラメーターに true を指定する場合、qubo_row に指定する係数は「3.1.1.2 Digital Annealer の計算精度」(P.15) に従い、ハードウェア上で計算できる範囲の整数で指定してください。
x0 x1 x2 xn ,,,x0 x1 x2 xn ,,,
QuboRequest { binary_polynomial BinaryPolynomial (*1) qubo_matrix QuboMatrix (*1) fujitsuDA2PT FujitsuDA2PTSolver (*2) fujitsuDA2 FujitsuDA2Solver (*2) fujitsuDA2MixedMode FujitsuDA2MixedModeSolver (*2)}
FujitsuDA2PTSolver { number_iterations integer($int32) number_replicas integer($int32) offset_increase_rate number($float) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
- 30 -
パラメーター 説明
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 ~ 2000000000 の整数を指定(デフォルト:2000000)(推奨値:1000000以上)
number_replicas レプリカ数(int32 型)初期化された異なる温度で並列にアニーリングを実行させる数26 ~ 128 の整数を指定設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
offset_increase_rate 新しい状態が選ばれなかったときのエネルギー累積増分(float 型)本パラメーターの指定は不要指定した場合、値は無効
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_replicas で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_replicas で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
guidance_config 各変数の初期値("uint32 型 ":boolean 型)
適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
2x1x2 4x2x4–
- 31 -
● FujitsuDA2Solver
FujitsuDA2Solver { expert_mode boolean($boolean) number_iterations integer($int32) number_runs integer($int32) offset_increase_rate number($float) temperature_decay number($float) temperature_interval integer($int32) temperature_mode string temperature_start number($float) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
パラメーター 説明
expert_mode エキスパートモード(boolean 型)アニーリングを行うためのスケーリング(Scaling and Rounding)、および各種パラメーター(Parameter Setting)を手動で設定するか自動で設定するかを、true または false で指定(デフォルト:false)• true を指定した場合
Scaling and Rounding:disable(手動) Parameter Setting : enable(手動)
• false を指定した場合Scaling and Rounding:enable(自動)Parameter Setting : disable(自動)
以下の設定にする場合は、「FujitsuDA2MixedModeSolver」(P.34) を指定Scaling and Rounding:enable(自動)Parameter Setting:enable(手動)
[Scaling and Rounding]「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照
[Parameter Setting]以下のパラメーターは enable の場合だけ指定可能• offset_increase_rate• temperature_decay• temperature_interval• temperature_mode• temperature_start
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 ~ 2000000000 の整数を指定
number_runs アニーリングの繰り返し回数(int32 型)16 ~ 128 の整数を指定設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
offset_increase_rate(*1)
新しい状態が選ばれなかったときのエネルギー累積増分(float 型)0 ~ 2000000000 の値を指定
temperature_decay(*1)
アニーリングの温度の減衰率(float 型)指定値の範囲は、temperature_mode の指定に依存「temperature_mode」(P.33) の説明を参照
temperature_interval(*1)
アニーリング時の温度変更の間隔(int32 型)1 以上の整数を指定
- 32 -
*1: expert_mode パラメーターで true を指定した場合だけ、指定できます。
temperature_mode(*1)
アニーリング温度の変更モデル(string 型)EXPONENTIAL、INVERSE、または INVERSE_ROOT のどれかを指定(デフォルト:EXPONENTIAL)EXPONENTIAL を推奨n番目の温度変更時における温度(Tn)は以下のように算出する• EXPONENTIAL
Tn +1 = Tn ×(1 - temperature_decay)• INVERSE
Tn +1 = Tn ×(1 - temperature_decay × Tn)• INVERSE_ROOT
Tn +1 = Tn ×(1 - temperature_decay × Tn × Tn)temperature_decayは、各モードの定義式の右辺が 0以上の値になるように指定各モードの指定値の範囲は以下• EXPONENTIAL
0 ≦ temperature_decay ≦ 1• INVERSE
0 ≦ temperature_decay ≦ 1 / temperature_start• INVERSE_ROOT
0 ≦ temperature_decay ≦ 1 /( temperature_start × temperature_start)temperature_decay の値を小さくすると、アニーリングの温度遷移は緩やかになる
temperature_start(*1)
アニーリングの開始温度(float 型)0 より大きな値を指定
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_runs で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_runs で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
guidance_config 各変数の初期値("uint32 型 ":boolean 型)適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
パラメーター 説明
2x1x2 4x2x4–
- 33 -
● FujitsuDA2MixedModeSolver
Scaling and Rounding(「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照)が有効で、各種温度パラメーターを手動で設定する場合に指定します。
FujitsuDA2MixedModeSolver { number_iterations integer($int32) number_runs integer($int32) offset_increase_rate number($float) temperature_decay number($float) temperature_interval integer($int32) temperature_mode string temperature_start number($float) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
パラメーター 説明
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 ~ 2000000000 の整数を指定
number_runs アニーリングの繰り返し回数(int32 型)16 ~ 128 の整数を指定設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
offset_increase_rate 新しい状態が選ばれなかったときのエネルギー累積増分(float 型)0 ~ 2000000000 の値を指定
temperature_decay アニーリングの温度の減衰率(float 型)指定値の範囲は、temperature_mode の指定に依存「temperature_mode」(P.34) の説明を参照
temperature_interval アニーリング時の温度変更の間隔(int32 型)1 以上の整数を指定
temperature_mode アニーリング温度の変更モデル(string 型)EXPONENTIAL、INVERSE、または INVERSE_ROOT のどれかを指定(デフォルト:EXPONENTIAL)EXPONENTIAL を推奨n番目の温度変更時における温度(Tn)は以下のように算出する• EXPONENTIAL
Tn +1 = Tn ×(1 - temperature_decay)• INVERSE
Tn +1 = Tn ×(1 - temperature_decay × Tn)• INVERSE_ROOT
Tn +1 = Tn ×(1 - temperature_decay × Tn × Tn)temperature_decay は、各モードの定義式の右辺が 0 以上の値になるように指定各モードの指定値の範囲は以下• EXPONENTIAL
0 ≦ temperature_decay ≦ 1• INVERSE
0 ≦ temperature_decay ≦ 1 / temperature_start• INVERSE_ROOT
0 ≦ temperature_decay ≦ 1 /( temperature_start × temperature_start)temperature_decay の値を小さくすると、アニーリングの温度遷移は緩やかになる
temperature_start アニーリングの開始温度(float 型)0 より大きな値を指定
- 34 -
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_runs で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_runs で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
guidance_config 各変数の初期値("uint32 型 ":boolean 型)適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
パラメーター 説明
2x1x2 4x2x4–
- 35 -
■ Premium、Standard、Trial、または Academic を契約した場合
*1: 2 種類の形式(BinaryPolynomial / QuboMatrix)のどちらかで QUBO を指定します。*2: 3 種類のソルバー(FujitsuDAPTSolver / FujitsuDASolver / FujitsuDAMixedModeSolver)のどれかを指定しま
す。レプリカ交換(parallel tempering)機能を使用する場合は、FujitsuDAPTSolver を指定してください。レプリカ交換機能については、「備考」(P.42) および「レプリカ交換」(P.55) の説明を参照してください。
ソルバー(FujitsuDAPTSolver / FujitsuDASolver / FujitsuDAMixedModeSolver)のパラメーターの詳細を以下に示します。
● FujitsuDAPTSolver
初回実行は、Scaling and Rounding(「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照)が有効であり、かつ、温度スケジュールに関わるパラメーターのチューニング作業が不要(「備考」(P.42)の説明を参照)である、 FujitsuDAPTSolver の指定を推奨します。FujitsuDAPTSolver を指定しても、 適解を得るまで時間がかかる場合、または 適解が得られない場合は、「FujitsuDASolver」(P.38) または「FujitsuDAMixedModeSolver」(P.40) を指定した実行をお試しください。
QuboRequest { binary_polynomial BinaryPolynomial (*1) qubo_matrix QuboMatrix (*1) fujitsuDAPT FujitsuDAPTSolver (*2) fujitsuDA FujitsuDASolver (*2) fujitsuDAMixedMode FujitsuDAMixedModeSolver (*2)}
FujitsuDAPTSolver { number_iterations integer($int32) number_replicas integer($int32) offset_increase_rate integer($int32) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
パラメーター 説明
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 以上の整数を指定(デフォルト:100000)(推奨値:100000 以上)
number_replicas レプリカ数(int32 型)初期化された異なる温度で並列にアニーリングを実行させる数1 以上の整数を指定(デフォルト:100)(推奨値:100)20 の倍数となる値の指定を推奨設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
offset_increase_rate 新しい状態が選ばれなかったときのエネルギー累積増分(int32 型)0 以上の値を指定(デフォルト:1000)
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_replicas で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_replicas で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
- 36 -
*1: VPN 経由で使用する場合、guidance_config の変数番号は uint16 型で指定します。
guidance_config 各変数の初期値("uint32 型 ":boolean 型)(*1)
適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
パラメーター 説明
2x1x2 4x2x4–
- 37 -
● FujitsuDASolver
FujitsuDASolver { expert_mode boolean($boolean) noise_model string number_iterations integer($int32) number_runs integer($int32) offset_increase_rate integer($int32) temperature_decay number($float) temperature_interval integer($int32) temperature_mode string temperature_start number($float) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
パラメーター 説明
expert_mode エキスパートモード(boolean 型)アニーリングを行うためのスケーリング(Scaling and Rounding)、および各種パラメーター(Parameter Setting)を手動で設定するか自動で設定するかを、true または false で指定(デフォルト:false)• true を指定した場合
Scaling and Rounding:disable(手動) Parameter Setting : enable(手動)
• false を指定した場合Scaling and Rounding:enable(自動)Parameter Setting : disable(自動)
以下の設定にする場合は、「FujitsuDAMixedModeSolver」(P.40) を指定Scaling and Rounding:enable(自動)Parameter Setting:enable(手動)
[Scaling and Rounding]「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照
[Parameter Setting]以下のパラメーターは enable の場合だけ指定可能• noise_model• offset_increase_rate• temperature_decay• temperature_interval• temperature_mode• temperature_start
noise_model(*1)
状態遷移の判定方式(string 型)METROPOLIS または GIBBS を指定(デフォルト:METROPOLIS)METROPOLIS を推奨
[METROPOLIS の判定方式]状態を遷移させた場合のエネルギーの変化量( )とそのときの温度(T)に応じて、状態を遷移させるかどうかを判定するための確率(遷移受入確率)(A)を計算する方式
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 以上の整数を指定
number_runs アニーリングの繰り返し回数(int32 型)1 以上の整数を指定(デフォルト:100)20 の倍数、かつ、number_runs × number_iterations が 100000 以上になる値を推奨設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
E
A min 1 E T– exp[ , ]=
- 38 -
*1: expert_mode パラメーターで true を指定した場合だけ、指定できます。*2: VPN 経由で使用する場合、guidance_config の変数番号は uint16 型で指定します。
offset_increase_rate(*1)
新しい状態が選ばれなかったときのエネルギー累積増分(int32 型)0 以上の値を指定
temperature_decay(*1)
アニーリングの温度の減衰率(float 型)指定値の範囲は、temperature_mode の指定に依存「temperature_mode」(P.39) の説明を参照
temperature_interval(*1)
アニーリング時の温度変更の間隔(int32 型)1 以上の整数を指定
temperature_mode(*1)
アニーリング温度の変更モデル(string 型)EXPONENTIAL、INVERSE、または INVERSE_ROOT のどれかを指定(デフォルト:EXPONENTIAL)n番目の温度変更時における温度(Tn)は以下のように算出する• EXPONENTIAL
Tn +1 = Tn ×(1 - temperature_decay)• INVERSE
Tn +1 = Tn ×(1 - temperature_decay × Tn)• INVERSE_ROOT
Tn +1 = Tn ×(1 - temperature_decay × Tn × Tn)temperature_decay は、各モードの定義式の右辺が 0 以上の値になるように指定各モードの指定値の範囲は以下• EXPONENTIAL
0 ≦ temperature_decay ≦ 1• INVERSE
0 ≦ temperature_decay ≦ 1 / temperature_start• INVERSE_ROOT
0 ≦ temperature_decay ≦ 1 /( temperature_start × temperature_start)temperature_decay の値を小さくすると、アニーリングの温度遷移は緩やかになる
temperature_start(*1)
アニーリングの開始温度(float 型)0 より大きな値を指定
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_runs で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_runs で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
guidance_config 各変数の初期値("uint32 型 ":boolean 型)(*2)適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
パラメーター 説明
2x1x2 4x2x4–
- 39 -
● FujitsuDAMixedModeSolver
Scaling and Rounding(「3.1.1.2 Digital Annealer の計算精度」(P.15) を参照)が有効で、各種温度パラメーターを手動で設定する場合に指定します。
FujitsuDAMixedModeSolver { noise_model string number_iterations integer($int32) number_runs integer($int32) offset_increase_rate integer($int32) temperature_decay number($float) temperature_interval integer($int32) temperature_mode string temperature_start number($float) solution_mode string guidance_config {"integer($uint32)":boolean($boolean)}}
パラメーター 説明
noise_model 状態遷移の判定方式(string 型)METROPOLIS または GIBBS を指定(デフォルト:METROPOLIS)METROPOLIS を推奨
[METROPOLIS の判定方式]状態を遷移させた場合のエネルギーの変化量( )とそのときの温度(T)に応じて、状態を遷移させるかどうかを判定するための確率(遷移受入確率)(A)を計算する方式
number_iterations 1 回のアニーリングにおける探索回数(int32 型)1 以上の整数を指定
number_runs アニーリングの繰り返し回数(int32 型)1 以上の整数を指定(デフォルト:100)20 の倍数、かつ、number_runs × number_iterations が 100000 以上になる値を推奨設定値に制限があるため、「3.2.2 Web API 使用時の注意」(P.52) を参照
offset_increase_rate 新しい状態が選ばれなかったときのエネルギー累積増分(int32 型)0 以上の値を指定
temperature_decay アニーリングの温度の減衰率(float 型)指定値の範囲は、temperature_mode の指定に依存「temperature_mode」(P.41) の説明を参照
temperature_interval アニーリング時の温度変更の間隔(int32 型)1 以上の整数を指定
E
A min 1 E T– exp[ , ]=
- 40 -
*1: VPN 経由で使用する場合、guidance_config の変数番号は uint16 型で指定します。
temperature_mode アニーリング温度の変更モデル(string 型)EXPONENTIAL、INVERSE、または INVERSE_ROOT のどれかを指定(デフォルト:EXPONENTIAL)n番目の温度変更時における温度(Tn)は以下のように算出する• EXPONENTIAL
Tn +1 = Tn ×(1 - temperature_decay)• INVERSE
Tn +1 = Tn ×(1 - temperature_decay × Tn)• INVERSE_ROOT
Tn +1 = Tn ×(1 - temperature_decay × Tn × Tn)temperature_decay は、各モードの定義式の右辺が 0 以上の値になるように指定各モードの指定値の範囲は以下• EXPONENTIAL
0 ≦ temperature_decay ≦ 1• INVERSE
0 ≦ temperature_decay ≦ 1 / temperature_start• INVERSE_ROOT
0 ≦ temperature_decay ≦ 1 /( temperature_start × temperature_start)temperature_decay の値を小さくすると、アニーリングの温度遷移は緩やかになる
temperature_start アニーリングの開始温度(float 型)0 より大きな値を指定
solution_mode 適解の復帰モード(string 型)COMPLETE または QUICK を指定(デフォルト:COMPLETE)• COMPLETE を指定した場合
number_runs で指定したアニーリング数分すべての結果を返すが、同一の結果は 1 つにまとめ、frequency に合計した出現頻度を設定して返す
• QUICK を指定した場合number_runs で指定したアニーリング数分すべての結果の中から、energy が一番低い結果( 適解)を 1 つだけ返す
guidance_config 各変数の初期値("uint32 型 ":boolean 型)(*1)適解を求める際に設定する、多項式(問題)の各変数の初期値を指定適解に近い値を指定することで、 適解の確度の向上が期待できる。また、
指定した初期値で同じ多項式(問題)を繰り返し解いた場合、毎回同じ 適解が得られる
以下の形式で、変数の数分の初期値を指定する形式: {“ 変数番号 ”: 初期値 , ” 変数番号 ”: 初期値 , ・・・ }指定例: の各変数に初期値を指定する場合
{“1”:false,“2”:false,“4”:false}
指定しない場合は、ソルバーがランダムに設定
パラメーター 説明
2x1x2 4x2x4–
- 41 -
備考
• FujitsuDA2PTSolver / FujitsuDAPTSolver(レプリカ交換機能使用)では、QUBO の 適解を求めるために必要な以下のパラメーターの指定が不要になります。• noise_model• temperature_decay• temperature_interval• temperature_mode• temperature_start
FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolverでは、特に temperature_decay、temperature_interval、temperature_start は、温度スケジュールに関わるパラメーターであり、適切な値を指定しないと 適解が得られません。各パラメーターの値の組合せは無数にあり、 適解が得られる適切な値を探すチューニング作業が必要となります。FujitsuDA2PTSolver / FujitsuDAPTSolver では、これらのパラメーターの指定が不要となり、チューニング作業にかかる時間を大幅に短縮できます。
• FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolverでは、以下のパラメーターのうち、どれか 1 つでも指定する場合は、必ず以下の 6 つのパラメーターおよび number_iterations パラメーターをすべて指定してください。• noise_model(FujitsuDASolver / FujitsuDAMixedModeSolver の場合だけ)• offset_increase_rate• temperature_decay• temperature_interval• temperature_mode• temperature_start
• FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolverでのアニーリングの温度スケジュールは、temperature_decay、temperature_interval、temperature_mode、temperature_start のパラメーターで規定されます。例えば、以下のように number_iterations=100000、temperature_interval=100 の場合、100 回の探索ごとに temperature_mode パラメーターで指定したモードで算出した温度に変更します。1 回のアニーリングの探索回数(number_iterations)が 100000 なので、100000/100=1000 回の温度変更をすることになります。
• FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolverでの 1 回のアニーリングは、上記アニーリングの温度スケジュールで設定された各温度で、number_iterations パラメーターで指定した回数分探索が実施され、number_runs パラメーターで指定した回数分アニーリングを繰り返します。どちらのパラメーターも大きな値を指定するほど時間がかかります。
- 42 -
QuboResponse
● API Gateway 経由で使用する場合
*1: async/job/result サービスだけ表示されます。
• offset_increase_rate は、探索を加速するためのパラメーターです。局所解に落ち込んで状態遷移が起こらない場合に、探索ごとに offset_increase_rate の値分ずつエネルギーを上げる処理を行い、状態遷移を起こす確率を向上させます。状態遷移が発生したら、offset_increase_rate によって累積されたエネルギーはリセットされます。使用しない場合は、0 を指定します。
• QuboRequest のソルバーには、1QBit 社提供のソルバーも指定できます。ただし、VPN 経由で使用する場合は未サポートです。ソルバーの種類や仕様については、以下を参照してください。
http://portal.1qbit.com/documentationStandard-2、Trial-2、または Academic-2 を契約した場合、リクエスト時の URI は、/v1/... ではなく、/v2/... を指定してください。
QuboResponse { qubo_solution QuboSolutionList solver_input_parameters {string:string { status string(*1) }}
キー 説明
qubo_solution qubo_solution リスト
solver_input_parameters ソルバーに設定されている各パラメーター名と値値を指定しなかったパラメーターは、そのパラメーターのデフォルトの値、または指定範囲外の値(0 または -1)が表示される
status(*1) ジョブの状態"Done"(完了)または "Delete"(削除)が表示される
- 43 -
*1: ほかの処理により待たされた時間も含みます。
QuboSolutionList { result_status boolean($boolean) solutions [QuboSolution] timing SolverTiming}
キー 説明
result_status 処理結果のステータス(true または false)
solutions QuboSolution の配列
timing timing リスト
QuboSolution { energy number($double) frequency number($double) configuration { < * > : boolean($boolean) }}
キー 説明
energy 適解
frequency 適解の出現頻度
configuration 各変数 X の値(true または false)
energy は、-253 = -9,007,199,254,740,992 ~ 253 = 9,007,199,254,740,992 の範囲外であった場合、double 型(倍精度浮動小数点数)の丸め誤差の影響により、近似解になることがあります。
SolverTiming { cpu_time integer($uint64) queue_time integer($uint64) solve_time integer($uint64) total_elapsed_time integer($uint64) detailed ExtraInfo}
キー 説明
cpu_time CPU 使用時間(単位:ms)
queue_time 処理待ち時間(単位:ms)
solve_time ソルバーの処理時間 (単位:ms)(*1)
total_elapsed_time 適解を求めるのに要したトータル時間(単位:ms)
detailed detailed リスト
- 44 -
図 2:SolverTiming の内訳
● VPN 経由で使用する場合
ExtraInfo { anneal_time integer($uint64)}
キー 説明
anneal_time Digital Annealer ハードウェアでの処理時間(単位:ms)
QuboResponse { qubo_solution QuboSolutionList solver_input_parameters {string:string }}
キー 説明
qubo_solution qubo_solution リスト
solver_input_parameters ソルバーに指定されている各パラメーター名と値値を指定しなかったパラメーターは、そのパラメーターのデフォルトの値、または指定範囲外の値(0 または -1)が表示される
QuboSolutionList { result_status boolean($boolean) solutions [QuboSolution] f_timing FujitsuTiming}
キー 説明
result_status 処理結果のステータス(true または false)
solutions QuboSolution の配列
f_timing f_timing リスト
- 45 -
*1: 契約タイプが共有型の場合、ほかの処理により待たされた時間も含まれます。
JobID
JobStatusList
QuboSolution { energy number($float) frequency number($float) configuration { < * > : boolean($boolean) }}
キー 説明
energy 適解
frequency 適解の出現頻度
configuration 各変数 X の値(true または false)
energy は、-224 = -16,777,216 ~ 224 = 16,777,216 の範囲外であった場合、float 型(浮動小数点数)の丸め誤差の影響により、近似解になることがあります。
FujitsuTiming { timing number($float) anneal_time number($float)}
キー 説明
timing 適解を求めるのに要したトータル時間(単位:ms)(*1)
anneal_time Digital Annealer ハードウェアでの処理時間(単位:ms)(*1)
JobID { job_id string}
キー 説明
job_id ジョブ番号
JobStatusList { job_status_list [JobStatusArray]}
キー 説明
job_status_list JobStatusArray の配列
- 46 -
*1: 状態の種類は、「JobStatus」(P.47) を参照。
JobStatus
*1: CPU または Digital Annealer ハードウェアで処理を実行している場合に表示されます。
JobStatusArray { job_id string job_status string start_time string}
キー 説明
job_id ジョブ番号
job_status ジョブの状態(*1)
start_time ジョブが登録された UTC 時間
各キーの並び順は固定ではありません。
JobStatus { status string}
キー 説明
status ジョブの状態が、以下のどれかで表示される"Done" :ジョブが完了していることを示す"Running" :ジョブが実行中であることを示す(*1)"Waiting" :ジョブが実行待ちであることを示す"Canceled":ジョブがキャンセルされたことを示す"Error" :ジョブが異常終了したことを示す
- 47 -
3.2 注意事項
3.2.1 VPN 接続時の注意
VPN 接続時の注意事項について説明します。
• アクセス中のクライアントに、VPN サーバから IP アドレスが配付されます(IP アドレスは契約時に通知)。
• VPN サーバから配付される IP アドレスと同じ IP アドレスが、同一サブネット内に存在しないことを確認してください。同じ IP アドレスを使用している場合は、別の IP アドレスに変更してください。
• 同一アカウントで、同時に 5 ユーザーまでログインできます。5 ユーザーを超えてログインすると、エラーが通知されます。
• ユーザーセッションの無通信状態が 16 時間続いた場合、セッションを自動切断します。
• パスワードは有効期限(90 日)経過後 15 日以内であれば、変更できます。有効期限(90 日)を経過した場合の通知と対処は以下のとおりです。
有効期限(90 日)経過後15 日以内に接続した場合 左記以降に接続した場合
SSL-VPN 接続 【通知】パスワードの設定パスワードを設定してください。【対処】通知画面上で変更してください
【通知】パスワードの期限切れです。【対処】ヘルプデスクへお問合せください
L2TP/IPsec VPN接続
Windows 【通知】リモートネットワークのパスワードの有効期限が切れています。【対処】通知画面上で変更、または「3.1 Web API サービス」の「1. 事前準備」(P.12) の注意に記載の方法で変更してください
【通知】指定したユーザー名またはパスワードが認識されていないか、選択した認証プロトコルがリモートアクセスサーバーで許可されていないため、リモート接続が拒否されました。【対処】ヘルプデスクへお問合せください
Mac 端末 【通知】なし【対処】「3.1 Web API サービス」の「1. 事前準備」(P.12) の注意に記載の方法で変更してください
【通知】なし【対処】ヘルプデスクへお問合せください
- 48 -
■ L2TP/IPsec VPN 接続の場合• Digital Annealer サーバと L2TP/IPsec クライアントの間にファイアーウォールが設定されている場
合は、以下のパケットをすべて通過させる設定にしてください。
• クライアント環境がインターネットと通信する際に IP マスカレード変換している場合は、NAT トラバーサル機能対応のルータが必要です。
■ SSL-VPN 接続の場合
● レイヤー 2 フォワードマネージャー使用に関する注意事項• 初回接続の場合、SSL-VPN Client のインストールが要求されます。クライアント上で動作して
いるほかのアプリケーションをすべて終了させてから、指示に従ってインストールしてください。SSL-VPN Client をインストールすると、レイヤー 2 フォワードマネージャーもインストールされます。なお、SSL-VPN Client のインストールには管理者権限が必要です。Internet Explorer を管理者権限で実行してください。
• インストール完了後に、レイヤー 2 フォワードマネージャー画面に以下のエラーメッセージが表示された場合は、[接続]ボタンをクリックして接続操作を行ってください。
状態 接続失敗切断理由 SSL-VPN 仮想 LAN アダプタとの接続に失敗しました。
• 他社製品との競合、他社セキュリティ製品によるブロックやアクセス権限不足などが原因でインストールに失敗し、以下のエラーメッセージが表示されることがあります。この場合は、レイヤー 2 フォワードマネージャーを終了して、失敗原因を取り除いたあと、再インストールしてください。
状態 接続失敗切断理由 仮想 LAN アダプタが正常にインストールされていません。
• インストール完了後に以下のメッセージが表示された場合は、コンピュータを再起動してください。
状態 接続失敗切断理由 コンピュータの再起動が必要です。
• 利用するネットワークカードや、すでにインストールされているソフトウェアなどのシステム構成によっては、インストール完了後にシステムの再起動が必要な場合があります。
• インストールするクライアント環境によっては、「SSL-VPN クライアントのインストールに失敗しました。コンピュータを再起動した後に、SSL-VPN クライアントを再インストールしてください。」のメッセージが表示されることがあります。メッセージに従って、コンピュータを再起動し、SSL-VPN Client を再インストールしてください。
• レイヤー 2 フォワードマネージャーのアンインストールは、[コントロールパネル]-[プログラムのアンインストール]-[SSL-VPN Client]を選択して行ってください。
対象パケット 説明
UDP/500 IKE で使用される
ESP(IP: プロトコル番号 50) NAT トラバーサルが使用されない場合は、ESP パケットが使用される
UDP/4500 NAT トラバーサルで使用される
- 49 -
• PPPoE クライアントソフトウェア(フレッツ接続ツールなど)や AIR-EDGE などの通信ソフトウェアを使用したクライアントからポータルにログインしたあと、レイヤー 2 フォワードマネージャーをインストールした場合、レイヤー 2 フォワードマネージャーのインストール処理中に、通信切断や通信異常が発生することがあります。この場合は、レイヤー 2 フォワードマネージャーのインストール完了後、接続ツールで回線に再接続し、レイヤー 2 フォワードマネージャー画面の[接続]ボタンをクリックすると、SSL-VPNアクセスが可能になります。接続ツールで回線に再接続し、レイヤー 2 フォワードマネージャー画面の[接続]ボタンをクリックしても接続に失敗する場合は、クライアントを再起動して、再度ログインしてください。
• レイヤー 2 フォワードマネージャーをインストールするクライアントに、マイクロソフト社以外のベンダーが提供している通信ソフトウェア(PPPoE クライアントソフトウェアや VPN クライアントソフトウェアなど)がインストールされている場合、レイヤー 2 フォワードマネージャーのインストール処理が途中で停止することがあります。この場合は、御使用の通信ソフトウェアの接続ツールで回線を一度切断すると、レイヤー 2 フォワードマネージャーのインストールが再開されます。
• レイヤー 2 フォワードマネージャーをインストールするクライアントの LAN 環境(LAN チップ、LAN カード、LAN ドライバ、または LAN ドライバの版数)によっては、インストールに失敗したり、インストール後に正常に通信できなかったりするなど、問題が発生する場合があります。レイヤー 2 フォワードマネージャーをインストールするクライアントの LAN ドライバが古い場合は、 新の LAN ドライバに更新することで問題が回避されることがあります。
• レイヤー 2 フォワードマネージャーは、OS のユーザー切替え機能を使用して、同時に複数のユーザーで使用することはできません。
● クライアント環境に関する注意事項
• 日本語および英語以外の言語は動作保証していません。また、コントロールパネルで、使用 OSと異なる言語を設定すると、SSL フォワードマネージャーが正常に動作しないことがあります。
• 他ソフトウェアで ActiveX コントロールや Java アプレットの動作を禁止している場合、SSL-VPN クライアントは動作できません。ActiveX コントロールや Java アプレットの動作を許可してください。
• Web ブラウザのタブ設定で、ポップアップ発生時の動作が「常に新しいタブでポップアップを開く」に設定されている場合、SSL-VPN 接続を行うと既存のタブも含むブラウザのウィンドウが非表示になります。SSL-VPN 接続を行う場合は、「常に新しいウィンドウでポップアップを開く」を有効にしてください。
• Windows の DHCP Client サービスが停止している場合、レイヤー 2 フォワードマネージャーは動作しません。Windows の DHCP Client サービスが実行中の状態で運用してください。
• Internet Explorer の[拡大]および Windows の[カスタムの拡大率]は、以下の方法で 100%に設定してください。
Internet Explorer/Windows 設定方法
Internet Explorer [表示]-[拡大]で 100% を選択する
Windows Windows 10 [設定]-[システム]-[ディスプレイ]-[テキスト、アプリ、その他の項目のサイズを変更する]で、100% を指定する
Windows 8.1 [コントロールパネル]-[ハードウェアとサウンド]-[ディスプレイ]-[すべての項目のサイズを変更する]で、[小 -100%( 規定 )]を選択する
Windows 7 [コントロールパネル]-[ハードウェアとサウンド]-[ディスプレイ]-[画面上の文字を読みやすくします]で、[小 -100%( 規定 )]を選択する
- 50 -
● Web ブラウザ(Internet Explorer)の環境設定上の注意事項
• Internet Explorer を保護モードで使用すると、ファイルアクセス、レジストリアクセス、ソケットアクセスなどが制限されるため、SSL フォワードマネージャー機能、クライアントチェッカ機能、およびキャッシュクリーナー機能は、正常に動作しません。これらの機能を使用する場合は、以下の手順でセキュリティを設定してください。
1. [ツール]-[インターネットオプション]を選択し、インターネットオプション画面を表示します。
2. セキュリティ画面で[信頼済みサイト]を選択し、[サイト]ボタンをクリックします。3. 信頼済みサイト画面の[この Web サイトをゾーンに追加する]に、仮想 SSL サーバのア
ドレス(URL)を入力し、[追加]ボタンをクリックします。4. [閉じる]ボタンをクリックし、セキュリティ画面に戻ります。5. [このゾーンのセキュリティのレベル]を以下に設定します。
• [このゾーンで許可されているレベル:すべて]を「中(既定)」または「中高」に設定する。
• [保護モードを有効にする(Internet Explorer の再起動が必要)]を無効にする。
[レベルのカスタマイズ]ボタンをクリックして詳細設定を行う場合は、以下の設定を変更しないでください。
6. [OK]ボタンをクリックして、設定を終了します。
• ポップアップブロックが有効な場合、SSL-VPN 機能は正しく動作しません。以下の手順でポップアップブロックの設定を変更してください。
1. 以下のどちらかの手順で、ポップアップ ブロックの設定画面を表示します。• [ツール]-[ポップアップブロック]-[ポップアップブロックの設定]を選択する。• インターネットオプション画面の[プライバシー]タブ画面で、[ポップアップブロッ
ク]の[設定]ボタンをクリックする。2. ポップアップ ブロックの設定画面で、[許可する Web サイトのアドレス]に SSL-VPN の
仮想 SSL サーバのアドレス(URL)を入力し、[追加]ボタンをクリックします。3. [閉じる]ボタンをクリックして、設定を終了します。
● そのほかの注意事項
• DHCP を使用した環境で以下のどちらかの操作を行うと、Windows の起動時に SSL トンネルを確立していた NIC アダプターの IP アドレスが 169.254.*.* などのリンクローカルアドレスに変更され、通信できなくなることがあります。• SSL トンネルを確立した状態で、Windows を休止した場合• SSL トンネルを確立した状態で、Windows 8.1 の高速スタートアップを有効にして、シャッ
トダウンを行った場合
この現象が発生した場合は、Windows を再起動してください。
• 環境依存文字(Unicode に存在し、Shift-JIS に存在しない文字)を含むユーザー名で Windows にログインしている場合、SSL-VPN クライアントを使用できません。SSL-VPN クライアントを使用する場合は、環境依存文字を含まないユーザー名で Windows にログインしてください。
設定項目 設定内容
ActiveX コントロールとプラグインの実行 有効にする
スクリプトを実行しても安全だとマークされているActiveX コントロールのスクリプトの実行
有効にする
署名された ActiveX コントロールのダウンロード ダイアログを表示する、または有効にする
アクティブスクリプト 有効にする
- 51 -
3.2.2 Web API 使用時の注意
Web API 使用時の注意事項について説明します。
• API は、リクエスト後に中断することはできません。間違ってリクエストしてしまったり、処理に時間がかかったりしている場合でも、処理が終了するまでお待ちください。ただし、非同期サービスを契約している場合、ジョブが実行前であれば、キャンセル(「3.1.1.3.6async/jobs/cancel の使用例」(P.20) 参照)できます。
• Digital Annealer ハードウェアがアニーリング処理中に、qubo/solve の新たなリクエストを発行した場合の処理は、以下のように契約タイプによって異なります。
専有型の場合:以下のメッセージで即時エラー復帰します。しばらく時間をおいてから再試行してください。"error":"Digital Annealer failed to initialize with code: (-1) Initialize called multiple timeswithout finalize().
共有型の場合:実行中のアニーリング処理の完了を待ち合わせます。実行中のアニーリング処理完了後に、新たなリクエストの処理が開始されます。
• アニーリングにかかる時間(anneal_time)は、number_iteration パラメーター、number_replicas パラメーター(FujitsuDA2PTSolver / FujitsuDAPTSolver の場合)、number_runsパラメーター(FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolver の場合)に指定する値で決まります。例えば、number_iterations = 10000000、number_runs = 100 を指定した場合、20 秒程度かかります。値を 10 倍、100 倍 … すると、anneal_time もそれに比例して 10 倍、100 倍 … に増加するため、注意して指定してください。
• 問題の規模(ビット数)が大きいと、スケーリング処理やエネルギーの再計算など、CPU を使用して計算する処理に時間がかかることがあります。指定したソルバーやパラメーターの設定値によって、CPU を使用して計算する処理にかかる時間は異なります。
• FujitsuDA2PTSolver / FujitsuDAPTSolver を使用した場合、問題の種類や難易度によっては、anneal_time が FujitsuDA2Solver / FujitsuDASolver / FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolver の 10 倍程度長くかかることがあります。
- 52 -
• 以下のパラメーターに、上限値および下限値が設定されています。上限値および下限値は、契約のタイプによって異なります。
• Standard-2、Trial-2、または Academic-2 を契約した場合
• Premium、Standard、Trial、または Academic を契約した場合
• リクエスト時に、キーやパラメーターの指定誤り(スペルミスを含む)などがあった場合でも、その指定値は無視され処理が続行されることがあります。それにより期待する処理結果が得られないことがありますので注意して指定してください。
ソルバー パラメーター上限値
下限値同期型 非同期型
FujitsuDA2PTSolver number_replicas 128 128 26
number_replicas × number_iterations
100000000000 256000000000 100000
FujitsuDA2Solver /FujitsuDA2MixedModeSolver
number_runs 128 128 16
number_runs × number_iterations
100000000000 256000000000 100000
ソルバー パラメーター
上限値 下限値
Premium(専有型)
StandardTrial
Academic(共有型)
Premium(専有型)
StandardTrial
Academic(共有型)
同期型 非同期型
FujitsuDAPTSolver number_replicas 200 200 200 20 20
number_replicas × number_iterations
429496729400 1000000000 10000000000 100000 100000
FujitsuDASolver / FujitsuDAMixedModeSolver
number_runs 1000 1000 1000 20 20
number_runs × number_iterations
2147483647000 10000000000 100000000000 100000 100000
- 53 -
用語集
D
Digital Annealer(デジタルアニーラ)量子の振る舞いをデジタル回路で表現し、組合せ 適化問題を高速に解くハードウェアです。
F
FujitsuDA2MixedModeSolver / FujitsuDAMixedModeSolver
Digital Annealer で QUBO を解くためのソルバーです。
FujitsuDA2PTSolver / FujitsuDAPTSolver
Digital Annealer でレプリカ交換機能を使用して QUBO を解くためのソルバーです。
FujitsuDA2Solver / FujitsuDASolver
Digital Annealer で QUBO を解くためのソルバーです。
H
HOBO(Higher Order Binary Optimization)組合せ 適化問題を高次単項式または高次多項式で表したものです。
Q
QUBO(Quadratic Unconstrained Binary Optimization)組合せ 適化問題を二次多項式で表したものです。
W
Web API
HTTP プロトコルを用いてネットワーク越しに呼び出す、アプリケーション間、システム間インターフェースです。
- 54 -
あ
アニーリング方式金属工学における「焼なまし」を模したシミュレーション手法です。金属の「焼なまし」では、高温に加熱して金属の原子が動きやすいようにしてからゆっくりと冷却することで、金属の結晶が安定した状態(=エネルギーが低い状態)になり、金属内部の欠陥やひずみを取り除くことができます。アニーリング方式によるシミュレーションは、金属の「焼なまし」と完全に同じ動作をするわけではありませんが、「焼なまし」と同じように、初めは「温度」に相当する擾乱(じょうらん)を決めるパラメーターを大きく取ることで状態が変化しやすい状況にしてから、「温度」を少しずつ下げていくことで 低エネルギー状態に近づけていく方法です。与えられた初期状態からエネルギーが低い状態への変化は、乱数を用いて発生させた(温度により決まる)擾乱により確率的に起こります。このため、有限時間で必ず 低エネルギー状態が得られる保証はありませんが、時間をかけて温度を下げていくことで、 低エネルギー状態が得られる確率が時間とともに増加し、1 に近づいていきます。
さ
シミュレーテッドアニーリング焼なましと呼ばれる過熱炉内の個体の冷却過程をシミュレートするアルゴリズムに端を発し、 適化問題(特に組合せ 適化問題)を解くための汎用近似解法の 1 つです。
ら
量子アニーリング量子力学的な効果を利用して、組合せ 適化問題を解く手法です。
量子コンピュータ量子力学的な「状態の重ね合わせ」を利用して、並列性を実現するとされるコンピュータです。
レプリカ交換parallel tempering(並列焼戻し法)としても知られ、緩和が遅く、かつ局所解に陥りやすいシミュレーテッドアニーリング(焼なまし法)を改善する方法です。方法としては、複数の初期化された異なる温度でアニーリングを並列に実行し、メトロポリス法(乱数発生により作った新しい状態を棄却するか採択するかの基準の与え方)の基準で、それぞれの温度間で状態を交換することで 適解を求めるものです。
- 55 -
FUJITSU Quantum-inspired ComputingDigital Annealer ユーザーズガイド
発行日 2018 年 12 月Copyright 2018 FUJITSU LIMITED
● 本書の内容は、改善のため事前連絡なしに変更することがあります。● 本書の無断転載を禁じます。