JP2024513576A - 制約付き2次モデルを解く際のプロセッサベースのデバイスの計算効率を改善するためのシステム及び方法 - Google Patents
制約付き2次モデルを解く際のプロセッサベースのデバイスの計算効率を改善するためのシステム及び方法 Download PDFInfo
- Publication number
- JP2024513576A JP2024513576A JP2023562516A JP2023562516A JP2024513576A JP 2024513576 A JP2024513576 A JP 2024513576A JP 2023562516 A JP2023562516 A JP 2023562516A JP 2023562516 A JP2023562516 A JP 2023562516A JP 2024513576 A JP2024513576 A JP 2024513576A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- variables
- value
- processor
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 275
- 230000006870 function Effects 0.000 claims abstract description 295
- 238000005070 sampling Methods 0.000 claims abstract description 198
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 159
- 238000005457 optimization Methods 0.000 claims abstract description 134
- 238000009826 distribution Methods 0.000 claims abstract description 114
- 230000008859 change Effects 0.000 claims abstract description 51
- 239000000523 sample Substances 0.000 claims description 115
- 238000002922 simulated annealing Methods 0.000 claims description 43
- 238000000137 annealing Methods 0.000 claims description 33
- 230000001965 increasing effect Effects 0.000 claims description 21
- 230000001976 improved effect Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 17
- 239000012488 sample solution Substances 0.000 claims description 13
- 238000005496 tempering Methods 0.000 claims description 12
- 230000003247 decreasing effect Effects 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000035899 viability Effects 0.000 claims 1
- 239000000243 solution Substances 0.000 description 124
- 238000005315 distribution function Methods 0.000 description 39
- 230000027455 binding Effects 0.000 description 28
- 238000009739 binding Methods 0.000 description 28
- 238000005192 partition Methods 0.000 description 24
- 239000013256 coordination polymer Substances 0.000 description 23
- 230000003993 interaction Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 19
- 239000002096 quantum dot Substances 0.000 description 19
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000002829 reductive effect Effects 0.000 description 11
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 238000013016 damping Methods 0.000 description 8
- 230000004907 flux Effects 0.000 description 8
- 238000012887 quadratic function Methods 0.000 description 8
- 230000001186 cumulative effect Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 6
- 239000000203 mixture Substances 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000005641 tunneling Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 229920005994 diacetyl cellulose Polymers 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 230000005283 ground state Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000000342 Monte Carlo simulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010790 dilution Methods 0.000 description 1
- 239000012895 dilution Substances 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000004870 electrical engineering Methods 0.000 description 1
- 230000005281 excited state Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000005040 ion trap Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000005233 quantum mechanics related processes and functions Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/60—Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/40—Physical realisations or architectures of quantum processors or components for manipulating qubits, e.g. qubit coupling or qubit control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/80—Quantum programming, e.g. interfaces, languages or software-development kits for creating or handling programs capable of running on quantum computers; Platforms for simulating or accessing quantum computers, e.g. cloud-based quantum computing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Databases & Information Systems (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Complex Calculations (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
最適化アルゴリズム、サンプルの更新、及び制約違反にペナルティを課すことのためのシステム及び方法について論じる。サンプルを更新するための方法は、目的関数及び制約関数を有する問題定義、初期サンプル、及び進行パラメータの値を受信することを含む。各変数について、変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づく目的エネルギ変化、並びに変数のサンプル値及び変数によって定義される制約関数の各々に基づく制約エネルギ変化に基づいて総エネルギ変化を決定する。サンプリング分布が変数タイプに基づいて選択され、更新値が総エネルギ変化及び進行パラメータに基づいてサンプリングされる。変数集合の各変数の更新値を有する更新されたサンプルが返される。これによりプロセッサベースのシステムの動作を改善することができる。
Description
分野
本開示は、一般に例えばデジタルプロセッサ及びアナログプロセッサを活用するハイブリッド手法を採用する、制約付き2次モデルを解く際のプロセッサベースのデバイスの効率を改善するためのシステム及び方法に関する。
本開示は、一般に例えばデジタルプロセッサ及びアナログプロセッサを活用するハイブリッド手法を採用する、制約付き2次モデルを解く際のプロセッサベースのデバイスの効率を改善するためのシステム及び方法に関する。
背景
量子デバイス
量子デバイスとは、量子力学的効果が観測可能な構造のことである。量子デバイスは、電流輸送が量子力学的効果によって支配される回路を含む。かかるデバイスは、スピントロニクス及び超伝導回路を含む。スピンも超伝導も量子力学的現象である。量子デバイスは計測機器、計算機等に使用することができる。
量子デバイス
量子デバイスとは、量子力学的効果が観測可能な構造のことである。量子デバイスは、電流輸送が量子力学的効果によって支配される回路を含む。かかるデバイスは、スピントロニクス及び超伝導回路を含む。スピンも超伝導も量子力学的現象である。量子デバイスは計測機器、計算機等に使用することができる。
量子計算
量子コンピュータとは、重ね合わせ、トンネリング、及びエンタングルメント等の少なくとも1つの量子力学的現象を直接使用してデータに対する操作を行うシステムのことである。量子コンピュータの素子は量子ビットである。量子コンピュータは、量子物理学をシミュレートする計算問題等、特定のクラスの計算問題を高速化することができる。
量子コンピュータとは、重ね合わせ、トンネリング、及びエンタングルメント等の少なくとも1つの量子力学的現象を直接使用してデータに対する操作を行うシステムのことである。量子コンピュータの素子は量子ビットである。量子コンピュータは、量子物理学をシミュレートする計算問題等、特定のクラスの計算問題を高速化することができる。
量子プロセッサ
量子プロセッサは、超伝導量子プロセッサの形を取ることができる。超伝導量子プロセッサは、幾つかの超伝導量子ビット及び関連する局所バイアスデバイスを含み得る。超伝導量子プロセッサは、量子ビット間の通信結合を選択的に行う結合デバイス(カプラ又は量子ビットカプラとしても知られる)を含むこともある。
量子プロセッサは、超伝導量子プロセッサの形を取ることができる。超伝導量子プロセッサは、幾つかの超伝導量子ビット及び関連する局所バイアスデバイスを含み得る。超伝導量子プロセッサは、量子ビット間の通信結合を選択的に行う結合デバイス(カプラ又は量子ビットカプラとしても知られる)を含むこともある。
量子プロセッサとは、量子情報を処理する際に少なくとも1つの量子力学的現象(重ね合わせ、エンタングルメント、トンネリング等)を活用するように設計される任意のコンピュータプロセッサのことである。具体的なハードウェア実装に関わらず、全ての量子プロセッサは、量子ビット又は「キュビット」と呼ばれる量子力学的物体又はデバイス内の量子情報をエンコード及び操作し、全ての量子プロセッサは量子ビット間で情報を伝達するための構造又はデバイスを採用し、全ての量子プロセッサは少なくとも1つの量子ビットの状態を読み出すための構造又はデバイスを採用する。量子プロセッサは、これだけに限定されないが量子ビット、カプラ、読み出しデバイス、ラッチングデバイス(例えば量子磁束パラメトロンラッチング回路)、シフトレジスタ、デジタルアナログコンバータ、及び/又はデマルチプレクサツリー、並びにデバイスのばらつきを訂正するためのプログラマブルサブコンポーネント(例えばインダクタンスチューナー、キャパシタンスチューナー等)、不所望の信号ドリフトを補償するためのプログラマブルサブコンポーネント等のこれらの素子のプログラマブルサブコンポーネントを含む、多数(例えば数百、数千、数百万等)のプログラマブル素子を含み得る。
本発明のシステム及びデバイスと共に使用することができる例示的な量子プロセッサの更なる詳細及び実施形態が、例えば米国特許第7,533,068号、同第8,008,942号、同第8,195,596号、同第8,190,548号、及び同第8,421,053号に記載されている。
量子プロセッサを含むハイブリッド計算システム
ハイブリッド計算システムは、アナログコンピュータと通信可能に結合されるデジタルコンピュータを含み得る。一部の実装形態では、アナログコンピュータは量子コンピュータであり、デジタルコンピュータは古典コンピュータである。
ハイブリッド計算システムは、アナログコンピュータと通信可能に結合されるデジタルコンピュータを含み得る。一部の実装形態では、アナログコンピュータは量子コンピュータであり、デジタルコンピュータは古典コンピュータである。
デジタルコンピュータは、本システム及び方法の中で記載する古典的なデジタル処理タスクを実行するために使用することができるデジタルプロセッサを含み得る。デジタルコンピュータは、コンピュータ又はプロセッサ可読命令、アプリケーションプログラム及び/又はデータの様々な集合を記憶するために使用できる少なくとも1つのシステムメモリを含み得る。
量子コンピュータは、量子ビット、カプラ、及び他のデバイス等のプログラマブル素子を含む量子プロセッサを含み得る。量子ビットは読み出しシステムによって読み出すことができ、結果はデジタルコンピュータに伝達される。量子ビット及びカプラは、量子ビット制御システム及びカプラ制御システムによってそれぞれ制御され得る。一部の実装形態では、量子ビット制御システム及びカプラ制御システムは、アナログコンピュータ上で量子アニーリングを実装するために使用することができる。
量子アニーリング
量子アニーリングは、システムの低エネルギ状態、典型的には好ましくはシステムの基底状態を見つけるために使用され得る計算手法である。この方法は、低エネルギ状態の方が安定しているので自然システムが低エネルギ状態に向かう傾向があるという基本原理に依拠する。量子アニーリングは、エネルギ最小値に到達するための非局所化の源として、量子トンネリング等の量子効果を使用することができる。
量子アニーリングは、システムの低エネルギ状態、典型的には好ましくはシステムの基底状態を見つけるために使用され得る計算手法である。この方法は、低エネルギ状態の方が安定しているので自然システムが低エネルギ状態に向かう傾向があるという基本原理に依拠する。量子アニーリングは、エネルギ最小値に到達するための非局所化の源として、量子トンネリング等の量子効果を使用することができる。
量子プロセッサは、量子アニーリング及び/又は断熱量子計算を実行するように設計することができる。問題ハミルトニアンに比例する第1項と非局所化ハミルトニアンに比例する第2項との和に比例する進化ハミルトニアンを以下のように構築することができる:
HE∝A(t)HP+B(t)HD
但しHEは進化ハミルトニアンであり、HPは問題ハミルトニアンであり、HDは非局所化ハミルトニアンであり、A(t)、B(t)は進化の速度を制御することができる係数であり、典型的には[0,1]の範囲内にある。
HE∝A(t)HP+B(t)HD
但しHEは進化ハミルトニアンであり、HPは問題ハミルトニアンであり、HDは非局所化ハミルトニアンであり、A(t)、B(t)は進化の速度を制御することができる係数であり、典型的には[0,1]の範囲内にある。
一部の実装形態では、時変包絡関数が問題ハミルトニアン上に配置され得る。適切な非局所化ハミルトニアンは
によって与えられ、但しNは量子ビットの数を表し、
はi番目の量子ビットのパウリx行列であり、Δiはi番目の量子ビットにおいて誘発された単一量子ビットトンネル分裂量である。ここで
の項は「非対角」項の例である。
一般的な問題ハミルトニアンは、対角単一量子ビット項に比例する第1の成分と、対角多量子ビット項に比例する第2の成分とを含み、次の形式のものであり得る:
但しNは量子ビットの数を表し、
はi番目の量子ビットのパウリz行列であり、hi及びJijは量子ビットの無次元局所場及び量子ビット間の結合であり、εはHPに関する一部の特徴的なエネルギスケールである。
本明細書の全体を通して、「問題ハミルトニアン」及び「最終ハミルトニアン」という用語は、文脈上別段の指示がない限り区別なく使用される。量子プロセッサの特定の状態は、問題ハミルトニアンによってエネルギ的に優先され又は単に優先される。これらは基底状態を含み、励起状態を含むこともある。
上記の2つの方程式におけるHD及びHP等のハミルトニアンは様々な異なるやり方で物理的に実現することができる。具体的な例は、超伝導量子ビットの実装によって実現される。
サンプリング
本明細書及び添付の特許請求の範囲の全体を通して、「サンプル」、「サンプリング」、「サンプリングデバイス」、及び「サンプル生成器」という用語を使用する。
本明細書及び添付の特許請求の範囲の全体を通して、「サンプル」、「サンプリング」、「サンプリングデバイス」、及び「サンプル生成器」という用語を使用する。
統計学において、サンプルとは母集団の部分集合、即ち統計的母集団から取り出されたデータの選択である。電気工学及び関連分野では、サンプリングはアナログ信号又は他の何らかの物理システムの測定の集合を取ることに関係する。
物理システムのシミュレーション及び計算、特にアナログ計算を含む多くの分野では、前述の意味が融合することがある。例えばハイブリッドコンピュータはアナログコンピュータからサンプルを引き出すことができる。サンプルの提供元としてのアナログコンピュータは、サンプル生成器の一例である。アナログコンピュータは、選択された確率分布からサンプルを提供するように動作させることができ、確率分布は母集団内の各データ点にサンプリングされるそれぞれの確率を割り当てる。母集団はプロセッサの全ての可能な状態に対応することができ、各サンプルはプロセッサのそれぞれの状態に対応することができる。
マルコフ連鎖モンテカルロ
マルコフ連鎖モンテカルロ(MCMC)は、例えばシミュレーテッドアニーリング、パラレルテンパリング、ポピュレーションアニーリング、及び他の技法を含む計算技法の一種である。マルコフ連鎖は、例えば確率分布を使用できない場合に使用することができる。マルコフ連鎖は、離散確率変数のシーケンスとして、及び/又は各時間増分において状態が前の状態にのみ依存するランダムプロセスとして記述することができる。連鎖が十分に長い場合、平均等の連鎖の集約的な特性がターゲット分布の集約的な特性と一致することができる。
マルコフ連鎖モンテカルロ(MCMC)は、例えばシミュレーテッドアニーリング、パラレルテンパリング、ポピュレーションアニーリング、及び他の技法を含む計算技法の一種である。マルコフ連鎖は、例えば確率分布を使用できない場合に使用することができる。マルコフ連鎖は、離散確率変数のシーケンスとして、及び/又は各時間増分において状態が前の状態にのみ依存するランダムプロセスとして記述することができる。連鎖が十分に長い場合、平均等の連鎖の集約的な特性がターゲット分布の集約的な特性と一致することができる。
マルコフ連鎖は、マルコフ提案過程(一般に「更新操作」と呼ばれる)に従って新しい点を提案することによって得ることができる。新しい点は受け入れられるか拒否されるかのどちらかである。新しい点が拒否される場合は新しい提案が行われ、その後も同様に続く。受け入れられる新しい点は、ターゲット分布に対する確率的収束を生み出すものである。収束は、提案及び受け入れ基準が詳細平衡条件を満たし、提案がエルゴード性要件を満たす場合に保証される。更に、提案の受け入れはマルコフ連鎖が可逆的であるように、即ち連鎖内の状態の閉ループ上の遷移率の積がどちらの方向でも同じであるように行うことができる。可逆マルコフ連鎖は詳細平衡を有するとも言われる。典型的には、多くの場合に新しい点は前の点に対して局所的である。
従来技術及びそれに関係する限定の上記の例は、排他的ではなく例示的であることを意図する。本明細書を読み、図面を検討すれば従来技術の他の限定が当業者に明らかになる。
簡単な概要
プロセッサベースのデバイスの動作の計算効率及び/又は精度を改善することは概して望ましく、制約付き2次モデルを解くためのソルブとしてプロセッサベースのデバイスを使用する場合に特に望ましい。
プロセッサベースのデバイスの動作の計算効率及び/又は精度を改善することは概して望ましく、制約付き2次モデルを解くためのソルブとしてプロセッサベースのデバイスを使用する場合に特に望ましい。
最適化問題を解くときに制約に対処する1つの方法は、スラック変数を使用して制約を目的関数の一部に変換し、新しい目的関数上で最小化することである。しかし一部の実装形態では、これは長い処理時間、多数のスラック変数が必要とされること、及び/又は解の複雑さが大幅に増加すること等の高い計算コストを招き得る。本開示は、制約付き2次問題を解くときに計算効率を改善するのに有用なシステム及び方法を記載する。とりわけ本明細書で説明するシステム及び方法は、制約を変換し目的関数に含める必要なく、制約を指定できるようにし得る。
制約が満たされることも保証しながら解く際の幾らかの柔軟性を与えるために、制約にペナルティ値を割り当て、(シミュレーテッドアニーリングの開始時等の)一部の状況において制約が違反され得るように、制約に与える重みを変化させることができる。目的関数に制約を追加する場合、所与の問題における適切なペナルティ値に関する如何なるガイダンスもなしに、制約のペナルティ値を選択する必要があり得る。このことは、よりよい解を見つけるために異なるペナルティ値で問題を複数回解く必要を生じさせることがある。ここで説明するシステム及び方法は、異なるペナルティ値を用いて問題を複数回解くことなくペナルティ値を選択すること、及び解くプロセス中にペナルティ値を動的に調整することも可能にし得る。
本明細書に記載する方法及びシステムは、有益には、制約を目的関数の一部に変換するのとは対照的に、制約を直接処理することにより、制約を有する最適化問題を計算効率よく解くことを可能にする。このことは、時間効率がよくスケーラブルな方法で最適化問題に対する実行可能解をプロセッサが返すことを有益に可能にし得る。このことは、プロセッサによる複数の解の並列生成も可能にし得る。制約の寄与は、各制約を考慮する更新プロセスによって暗黙的に処理することができる。制約関数を直接処理し、計算によって制約関数のエネルギ値を引き出すことは解の効率を高め得る。本明細書に記載する方法及びシステムは、制約関数のペナルティの重みを自動で及び動的に調整することも有利に可能にすることができ、よりよい解を返しながら探索を効率的に実行可能性に導くことを可能にする。産業界で解決されるような多くの実世界の問題は、実行可能解に対する制約を有する問題である。本明細書に記載する方法及びシステムは、2値変数と離散変数との混合等、異なるタイプの変数集合を有する問題の解も可能にし得る。サンプリングは、変数タイプの決定に基づいて、並びに現在のエネルギ値及びペナルティを考慮して行うことができる。一部の実装形態では、本明細書に記載する方法及びシステムは、改善された解をもたらすためにハイブリッド量子計算技法と組み合わせて使用することができる。
一態様によれば、実行可能性への収束を改善するために最適化アルゴリズム内のサンプルを更新する計算システムの動作方法が提供され、この方法はプロセッサによって実行され、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される、受信すること、変数集合のサンプル値及び進行パラメータ(progress parameter)の値を受信すること、変数集合の変数ごとに、変数の変数タイプを決定すること、変数タイプに基づいてサンプリング分布を選択すること、変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、変数のサンプル値及び変数によって定義される制約関数の各々に基づいて1つ又は複数の制約エネルギバイアスを決定すること、並びに目的エネルギバイアス、1つ又は複数の制約エネルギバイアス、及び進行パラメータに基づいてサンプリング分布から変数の更新値をサンプリングすること、及び更新されたサンプルを返すことであって、更新されたサンプルは変数集合の各変数の更新値を含む、返すことを含む。
他の態様によれば、本方法は、ペナルティパラメータの値を受信することを更に含むことができ、サンプリング分布から変数の更新値をサンプリングすることは、ペナルティパラメータの値に基づいてサンプリング分布から変数の更新値をサンプリングすることを更に含むことができ、ペナルティパラメータの値を受信することは、進行パラメータの値に依存するラグランジュパラメータの値を受信することを含むことができ、変数の変数タイプを決定することは、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することを含むことができ、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが2値であると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することはベルヌーイ分布を選択することを含むことができ、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが離散であると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することはソフトマックス分布を選択することを含むことができ、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが整数又は連続のうちの1つであると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することは条件付き確率分布を選択することを含むことができ、サンプリング分布から更新値をサンプリングすることは、条件付き確率分布からスライスサンプリングすることを含むことができ、進行パラメータの値を受信することは逆温度を受信することを含み得る。
一態様によれば、最適化アルゴリズムにおいてサンプルを更新するためのシステムが提供され、このシステムは、プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して本明細書に記載の方法を実行する、少なくとも1つのプロセッサとを含む。
一態様によれば、計算システムの動作方法が提供され、計算システムは1つ又は複数のプロセッサを含み、この方法は1つ又は複数のプロセッサの少なくとも1つによって実行され、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される、受信すること、目的関数に対するサンプル解及び進行パラメータを初期化すること、終了基準が満たされるまで反復的に、最適化アルゴリズムのステージをインクリメントすること、変数集合内の変数ごとに、変数集合からi番目の変数を選択することであって、i番目の変数は現在値を有する、選択すること、i番目の変数の現在値に基づいて目的関数の目的エネルギバイアスを計算すること、i番目の変数の現在値に基づいてi番目の変数によって定義される各制約関数の制約エネルギバイアスを計算すること、並びに目的エネルギバイアス及び制約エネルギバイアスに基づいてi番目の変数の更新値をサンプリングすることであって、更新値は現在値を置換する、サンプリングすること、進行パラメータをインクリメントすること、終了基準を評価すること、及び変数集合の現在値を含む解を出力することを含む。
他の態様によれば、変数集合からi番目の変数を選択することが2値変数を選択することを含むことができ、2値変数は現在値及び代替値を有し、i番目の変数の現在値に基づいて目的関数の目的エネルギバイアスを計算することは、2値変数の現在値と代替値との間の目的関数のエネルギの差を計算することを含むことができ、i番目の変数の現在値に基づくi番目の変数によって定義される各制約関数に基づいて制約エネルギバイアスを計算することは、2値変数の現在値と2値変数の代替値との間で2値変数によって定義される各制約関数のエネルギの差を計算することを含むことができ、目的エネルギバイアス及び制約エネルギバイアスに基づいてi番目の変数の更新値をサンプリングすることは、i番目の変数によって定義される目的関数及び各制約関数のエネルギ値の差に基づいてi番目の変数の更新値をサンプリングすることを含み得る。
他の態様によれば、本方法は、ペナルティパラメータを初期化すること、i番目の変数によって定義される制約関数のエネルギの差及び進行パラメータに基づいて各制約関数のペナルティパラメータを調整することを更に含むことができ、i番目の変数によって定義される各制約関数のエネルギの差を計算することはペナルティパラメータによって各制約関数にペナルティを課すことを含み、目的関数に関する最適化アルゴリズムのステージをインクリメントすることは、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムのうちの1つをインクリメントすることを含むことができ、目的関数及び1つ又は複数の制約関数を含む問題定義を受信することは、2次目的関数及び1つ又は複数の2次等式又は不等式制約関数を含む問題定義を受信することを含むことができ、変数集合を含む問題定義を受信することは、2値変数、整数変数、又は離散変数のうちの1つ又は複数の集合を含む問題定義を受信することを含むことができ、変数集合を含む問題定義を受信することは1つ又は複数の整数変数を含む問題定義を受信することを含むことができ、i番目の変数の更新値をサンプリングすることは条件付き確率分布からサンプリングを実行することを含むことができ、i番目の変数は1つ又は複数の整数変数からの整数変数を含み、終了基準は反復回数、時間量、値限界の平均変化量(average change in value limit)、又は進行パラメータの値のうちの1つを含み得る。
一態様によれば、最適化に使用するためのシステムが提供され、このシステムは、プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して本明細書に記載の方法を実行する、少なくとも1つのプロセッサとを含む。
他の態様によれば、本システムが量子プロセッサを更に含んでもよく、方法を実行した後、少なくとも1つのプロセッサが出力解に基づいて量子アニーリングを実行するように量子プロセッサに指示することができる。
一態様によれば、ハイブリッド計算システムの動作方法が提供され、ハイブリッド計算システムは量子プロセッサと古典プロセッサとを含み、この方法は古典プロセッサによって実行され、制約付き2次最適化問題を受信することであって、制約付き2次最適化問題は変数集合、変数集合にわたって定義される目的関数、1つ又は複数の制約関数であって、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される、1つ又は複数の制約関数、及び最適化のための進行パラメータであって、初期値と最終値との間でインクリメントする値の集合を含む、進行パラメータを含む、受信すること、進行パラメータの最終値に到達するまで反復的に、最適化アルゴリズムから変数集合の値のサンプル集合をサンプリングすること、更新アルゴリズムを用いて値のサンプル集合を更新することであって、変数集合の変数ごとに、変数の変数タイプを決定すること、変数タイプに基づいてサンプリング分布を選択すること、値のサンプル集合からの変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、変数のサンプル値及び変数によって定義される制約関数のそれぞれに基づいて1つ又は複数の制約エネルギバイアスを決定すること、及び目的エネルギバイアス、1つ又は複数の制約エネルギバイアス、及び進行パラメータに基づいてサンプリング分布から変数の更新値をサンプリングすることを含む、値のサンプル集合を更新すること、並びに更新されたサンプルを返すことであって、更新されたサンプルは変数集合の各変数の更新値を含む、返すこと、進行パラメータをインクリメントすること、1つ又は複数の最終サンプルを量子プロセッサに伝送すること、サンプルを洗練させるように量子プロセッサに指示すること、及び解を出力することを含む。
他の態様によれば、1つ又は複数の最終サンプルを量子プロセッサに伝送することが、サンプルの対を量子プロセッサに伝送することを含むことができ、サンプルを洗練させるように量子プロセッサに指示することがサンプル間の選択を行うために量子アニーリングを実行するように量子プロセッサに指示することを含み、本方法は、最適化アルゴリズムへの入力として変数集合の値のサンプル集合として出力解を返すことを更に含み得る。
一態様によれば、ハイブリッド計算システムが提供され、ハイブリッド計算システムは、量子プロセッサ及び古典プロセッサと、プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して本明細書に記載の方法を実行する、少なくとも1つのプロセッサとを含む。
一態様によれば、計算システムの性能を改善するために探索空間を実行可能性に導く計算システムの動作方法が提供され、計算システムは1つ又は複数のプロセッサを含み、この方法は1つ又は複数のプロセッサの少なくとも1つによって実行され、最適化からサンプルを受信すること、1つ又は複数の制約関数のエネルギ値を決定すること、サンプルの実行可能性を評価すること、サンプルが実行可能でない場合はペナルティ値を増加させること、サンプルが実行可能である場合はペナルティ値を減少させること、及びペナルティ値を最適化アルゴリズムに返すことを含む。
他の態様によれば、本方法は、以前のサンプルと比較して違反が低減しているかどうかを判定し、違反が低減していない場合は初期アジャスタ値を増加すること、及び以前のサンプルと比較して現在の最良解が改善されているかどうかを判定し、現在の最良解が改善されていない場合は初期アジャスタ値を増加することを更に含み得る。
一態様によれば、計算システムの動作方法が提供され、計算システムは1つ又は複数のプロセッサを含み、この方法は1つ又は複数のプロセッサの少なくとも1つによって実行され、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、制約関数の各々は変数集合の少なくとも1つの変数によって定義され、変数集合は2値、整数、離散、又は連続のうちの1つである少なくとも1つの変数を有する変数の第1の部分集合、及び連続である少なくとも1つの変数を有する変数の第2の部分集合を含む、受信すること、目的関数に対するサンプル解及び進行パラメータを初期化すること、変数の第2の部分集合にわたって定義される連続問題を初期化することであって、連続問題は線形計画モデルを含む、初期化すること、終了基準が満たされるまで反復的に、最適化アルゴリズムのステージをインクリメントすること、変数の第1の部分集合内の変数ごとに、変数の変数タイプを決定すること、変数タイプに基づいてサンプリング分布を選択すること、変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、変数のサンプル値及び変数によって定義される制約関数の各々に基づいて1つ又は複数の制約エネルギバイアスを決定すること、目的エネルギバイアス、1つ又は複数の制約エネルギバイアス、及び進行パラメータに基づいてサンプリング分布から変数の更新値をサンプリングすること、更新されたサンプルを返すことであって、更新されたサンプルは変数集合の各変数の更新値を含む、返すこと、変数の第1の部分集合内の各変数の値を更新値に固定した状態で、変数の第2の部分集合について線形計画モデルを解くこと、解かれた線形計画モデルに基づいて変数の第2の部分集合内の各変数の更新値をサンプリングすることであって、更新値は現在値を置換する、サンプリングすること、変数の第2の部分集合の更新値に基づいて目的エネルギバイアス及び1つ又は複数の制約エネルギバイアスを更新すること、進行パラメータをインクリメントすること、終了基準を評価すること、及び変数集合の更新値を含む解を出力することを含む。
他の態様によれば、本方法は1つ又は複数のペナルティパラメータを初期化することを更に含むことができ、サンプリング分布から変数の更新値をサンプリングすることは、1つ又は複数のペナルティパラメータの少なくとも1つの値に基づいてサンプリング分布から変数の更新値をサンプリングすることを更に含み、変数の第2の部分集合内の各変数の更新値をサンプリングすることは、解かれた線形計画モデル及び1つ又は複数のペナルティパラメータの少なくとも1つの値に基づいて変数の第2の部分集合内の各変数の更新値をサンプリングすることを含み、1つ又は複数のペナルティパラメータを初期化することは、進行パラメータの値に依存する少なくとも1つのラグランジュパラメータを初期化することを含むことができ、変数の変数タイプを決定することは、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することを含むことができ、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが2値であると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することはベルヌーイ分布を選択することを含み、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが離散であると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することはソフトマックス分布を選択することを含み、変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、変数タイプが整数及び連続のうちの1つであると決定することを含むことができ、変数タイプに基づいてサンプリング分布を選択することは条件付き確率分布を選択することを含むことができ、サンプリング分布から変数の更新値をサンプリングすることは、条件付き確率分布からスライスサンプリングすることを含むことができ、進行パラメータの値を受信することは逆温度を受信することを含むことができ、目的関数の最適化アルゴリズムのステージをインクリメントすることは、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムのうちの1つをインクリメントすることを含むことができ、目的関数及び1つ又は複数の制約関数を含む問題定義を受信することは、2次目的関数及び1つ又は複数の2次等式又は不等式制約関数を含む問題定義を受信することを含むことができ、終了基準は反復回数、時間量、値限界の平均変化量、又は進行パラメータの値のうちの1つを含み得る。
一態様によれば、最適化に使用するためのシステムが提供され、このシステムは、プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して本明細書に記載の方法を実行する、少なくとも1つのプロセッサとを含む。
他の態様によれば、本システムが量子プロセッサを更に含んでもよく、本明細書に記載の方法を実行した後、少なくとも1つのプロセッサが出力解に基づいて量子アニーリングを実行するように量子プロセッサに指示する。
他の態様では、当業者によって認識されるように上述の特徴は任意の合理的な組み合わせで一緒に組み合わせることができる。
図面の幾つかの表示の簡単な説明
図中、同一の参照番号は類似する要素又は行為を識別する。図中の要素のサイズ及び相対位置は必ずしも縮尺通りに描かれていない。例えば様々な要素の形状及び角度は必ずしも縮尺通りに描かれておらず、これらの要素の一部は図面を分かりやすくするために任意に拡大し位置決めしている場合がある。更に、描かれている要素の特定の形状は、特定の要素の実際の形状に関する如何なる情報を伝えることも意図しておらず、単に図面を認識しやすいように選択している場合がある。
図中、同一の参照番号は類似する要素又は行為を識別する。図中の要素のサイズ及び相対位置は必ずしも縮尺通りに描かれていない。例えば様々な要素の形状及び角度は必ずしも縮尺通りに描かれておらず、これらの要素の一部は図面を分かりやすくするために任意に拡大し位置決めしている場合がある。更に、描かれている要素の特定の形状は、特定の要素の実際の形状に関する如何なる情報を伝えることも意図しておらず、単に図面を認識しやすいように選択している場合がある。
詳細な説明
以下の説明では、開示する様々な実装形態の完全な理解を与えるために幾つかの具体的詳細を記載する。しかし、これらの具体的詳細の1つ又は複数なしに、又は他の方法、コンポーネント、材料等を用いて実装形態を実施できることを当業者なら理解されよう。他の例では、実装形態の説明を不必要に曖昧にするのを避けるために、コンピュータシステム、サーバコンピュータ、及び/又は通信ネットワークに関連する周知の構造は図示又は説明していない。
以下の説明では、開示する様々な実装形態の完全な理解を与えるために幾つかの具体的詳細を記載する。しかし、これらの具体的詳細の1つ又は複数なしに、又は他の方法、コンポーネント、材料等を用いて実装形態を実施できることを当業者なら理解されよう。他の例では、実装形態の説明を不必要に曖昧にするのを避けるために、コンピュータシステム、サーバコンピュータ、及び/又は通信ネットワークに関連する周知の構造は図示又は説明していない。
文脈上他の意味に解すべき場合を除き、本明細書及び添付の特許請求の範囲の全体を通して「含む(comprising)」という語は「含む(including)」と同義であり、包含的又は無制限である(即ち列挙されていない追加の要素又は方法の行為を除外しない)。
本明細書の全体を通して「一実装形態(one implementation)」又は「一実装形態(an implementation)」に言及することは、その実装形態に関連して記載する特定の特徴、構造、又は特性が少なくとも1つの実装形態に含まれることを意味する。従って、本明細書の全体を通して様々な箇所で登場する「一実装形態では(in one implementation)」又は「一実装形態では(in an implementation)」という句は、必ずしも全て同じ実装形態を指すものではない。更に、1つ又は複数の実装形態において特定の特徴、構造、又は特性を任意の適切なやり方で組み合わせることができる。
本明細書及び添付の特許請求の範囲で使用するとき、文脈において明白に指示しない限り、単数形「1つの(a)」、「1つの(an)」、及び「その(the)」は複数の指示対象を含む。文脈において明白に指示しない限り、「又は(or)」という用語は「及び/又は(and/or)」を含む意味で概して用いることにも留意すべきである。
本明細書に示す見出し及び本開示の要約は便宜上のものに過ぎず、実装形態の範囲又は意味を説明するものではない。
説明のための例として、断熱量子計算及び/又は量子アニーリングを実行するように設計される超伝導量子プロセッサを以下の説明で使用する。しかし前述したように、本システム及び方法は、任意の形の量子アルゴリズム(例えば断熱量子計算、量子アニーリング、ゲート/回路ベースの量子計算等)を実装する任意の形の量子プロセッサハードウェア(例えば超伝導、フォトニック、イオントラップ、量子ドット、トポロジカル等)に適用され得ることを当業者なら理解されよう。量子プロセッサは、1つ又は複数の古典プロセッサ又はデジタルプロセッサと組み合わせて使用することができる。本明細書で説明する方法は、量子アルゴリズムを実装する量子プロセッサと通信する古典プロセッサ又はデジタルプロセッサによって実行され得る。
例示的な計算システム
図1は、デジタルコンピュータ102を含む計算システム100を示す。このデジタルコンピュータ102の例は、古典的なデジタル処理タスクを実行するために使用され得る1つ又は複数のデジタルプロセッサ106を含む。デジタルコンピュータ102は、少なくとも1つのシステムメモリ122と、システムメモリ122を含む様々なシステムコンポーネントをデジタルプロセッサ106に結合する少なくとも1つのシステムバス120とを更に含み得る。システムメモリ122は、モジュール124と呼ばれることがあるプロセッサ実行可能命令の1つ又は複数の集合を記憶することができる。
図1は、デジタルコンピュータ102を含む計算システム100を示す。このデジタルコンピュータ102の例は、古典的なデジタル処理タスクを実行するために使用され得る1つ又は複数のデジタルプロセッサ106を含む。デジタルコンピュータ102は、少なくとも1つのシステムメモリ122と、システムメモリ122を含む様々なシステムコンポーネントをデジタルプロセッサ106に結合する少なくとも1つのシステムバス120とを更に含み得る。システムメモリ122は、モジュール124と呼ばれることがあるプロセッサ実行可能命令の1つ又は複数の集合を記憶することができる。
デジタルプロセッサ106は、1つ又は複数の中央処理装置(「CPU」)、グラフィック処理装置(「GPU」)、デジタル信号プロセッサ(「DSP」)、特定用途向け集積回路(「ASIC」)、プログラマブルゲートアレイ(「FPGA」)、プログラマブルロジックコントローラ(「PLC」)等の任意の論理処理装置又は回路(例えば集積回路)、及び/又はそれらのものの組み合わせとすることができる。
一部の実装形態では、計算システム100がアナログコンピュータ104を含み、アナログコンピュータ104は1つ又は複数の量子プロセッサ126を含み得る。量子プロセッサ126は、少なくとも1つの超伝導集積回路を含み得る。デジタルコンピュータ102は、例えばコントローラ118を介してアナログコンピュータ104と通信することができる。本明細書でより詳細に説明するように、特定の計算はデジタルコンピュータ102の指示によりアナログコンピュータ104によって実行され得る。
デジタルコンピュータ102は、ユーザ入力/出力サブシステム108を含み得る。一部の実装形態では、ユーザ入力/出力サブシステムがディスプレイ110、マウス112、及び/又はキーボード114等の1つ又は複数のユーザ入力/出力コンポーネントを含む。
システムバス120は、メモリコントローラを有するメモリバス、周辺バス、及びローカルバスを含む、任意の既知のバス構造又はアーキテクチャを採用することができる。システムメモリ122は、読み出し専用メモリ(「ROM」)、スタティックランダムアクセスメモリ(「SRAM」)、フラッシュNAND等の不揮発性メモリ、及びランダムアクセスメモリ(「RAM」)等の揮発性メモリ(不図示)を含み得る。
デジタルコンピュータ102は、他の非一時的コンピュータ可読記憶媒体若しくはプロセッサ可読記憶媒体又は不揮発性メモリ116を含むこともできる。不揮発性メモリ116は、ハードディスク(例えば磁気ディスク)との間で読み書きするためのハードディスクドライブ、リムーバブル光ディスクとの間で読み書きするための光ディスクドライブ、及び/又はソリッドステート媒体(例えばNANDベースのフラッシュメモリ)との間で読み書きするためのソリッドステートドライブ(SSD)を含む様々な形を取ることができる。不揮発性メモリ116は、システムバス120を介してデジタルプロセッサと通信することができ、システムバス120に結合される適切なインタフェース又はコントローラ118を含み得る。不揮発性メモリ116は、デジタルコンピュータ102のためのプロセッサ可読命令若しくはコンピュータ可読命令、データ構造、又は他のデータ(プログラムモジュール又はモジュール124と呼ばれることもある)の長期記憶装置として機能することができる。
デジタルコンピュータ102は、ハードディスク、光ディスク、及び/又はソリッドステート記憶媒体を使用するものとして説明してきたが、他の種類の非一時的及び不揮発性のコンピュータ可読媒体を使用できることを当業者なら理解されよう。一部のコンピュータアーキテクチャは、非一時的揮発性メモリ及び非一時的不揮発性メモリを使用することを当業者なら理解されよう。例えば揮発性メモリ内のデータは不揮発性メモリにキャッシュすることができる。又は不揮発性メモリを提供するために集積回路を使用するソリッドステートディスク。
様々なプロセッサ又はコンピュータ可読及び/又は実行可能命令、データ構造、又は他のデータがシステムメモリ122内に記憶され得る。例えばシステムメモリ122は、リモートクライアントと通信し、デジタルコンピュータ102及びアナログコンピュータ104上の資源を含む資源の使用をスケジューリングするための命令を記憶し得る。更に、例えばシステムメモリ122は、少なくとも1つのプロセッサによって実行されるとき、命令を実行するための様々なアルゴリズムを少なくとも1つのプロセッサに実行させるプロセッサ実行可能命令又はデータの少なくとも1つを記憶し得る。一部の実装形態では、システムメモリ122は、アナログコンピュータ104に対する前処理、共同処理、及び後処理を実行するためのプロセッサ又はコンピュータ可読計算命令及び/又はデータを記憶し得る。システムメモリ122は、アナログコンピュータ104と対話するためのアナログコンピュータインタフェース命令の集合を記憶することができる。例えばシステムメモリ122は、プロセッサ又はコンピュータによって実行されるとき、方法300(図3)~方法900(図9)及び方法1400(図14)の行為の1つ、複数、又は全てをプロセッサ又はコンピュータに実行させるプロセッサ又はコンピュータ可読命令、データ構造、又は他のデータを記憶することができる。
アナログコンピュータ104は、量子プロセッサ126等の少なくとも1つのアナログプロセッサを含み得る。アナログコンピュータ104は隔離環境内に、例えば量子コンピュータの内部要素を熱、磁場、及び他の外部ノイズから遮蔽する隔離環境内に設けることができる。隔離環境は、アナログプロセッサを、例えば約1K未満の温度まで極低温冷却するように動作可能な冷凍機、例えば希釈冷凍機を含み得る。
アナログコンピュータ104は、量子ビット、カプラ、及び他のデバイス(本明細書では制御可能デバイスとも呼ぶ)等のプログラマブル素子を含み得る。量子ビットは読み出しシステム128によって読み出すことができる。読み出された結果は、デジタルコンピュータ102の他のコンピュータ可読命令又はプロセッサ可読命令に送信され得る。量子ビットは、量子ビット制御システム130によって制御され得る。量子ビット制御システム130は、ターゲットデバイスにバイアスを印加するように動作可能なオンチップデジタルアナログコンバータ(DAC)及びアナログラインを含み得る。量子ビットを結合するカプラは、カプラ制御システム132によって制御され得る。カプラ制御システム132は、オンチップDAC及びアナログライン等のチューニング素子を含み得る。量子ビット制御システム130及びカプラ制御システム132は、本明細書に記載の量子アニーリングスケジュールをアナログプロセッサ104上で実装するために使用され得る。プログラマブル素子は、集積回路の形で量子プロセッサ126に含まれ得る。量子ビット及びカプラは、第1の材料を含む集積回路の層内に配置することができる。読み出し制御システム128等の他のデバイスは、第2の材料を含む集積回路の他の層内に配置することができる。本開示に従い、量子プロセッサ126等の量子プロセッサは量子アニーリング及び/又は断熱量子計算を実行するように設計することができる。量子プロセッサの例は米国特許第7,533,068号に記載されている。
例示的な超伝導量子プロセッサ
図2は、少なくとも1つの実装形態による、例示的な超伝導量子プロセッサ200の一部分の概略図である。超伝導量子プロセッサ200は、図1の計算システム100内に実装され、量子プロセッサ126の全部又は一部を形成することができる。図2に示す超伝導量子プロセッサ200の一部分は、2つの超伝導量子ビット201及び202を含む。更に、量子ビット201と202との間のカプラ210によるチューニング可能な結合(対角結合)も示す(即ち2-局所相互作用を提供する)。図2に示す量子プロセッサ200の一部分は2つの量子ビット201、202及び1つのカプラ210のみを含むが、量子プロセッサ200は任意の数の量子ビット及びそれらの間で情報を結合する任意の数のカプラを含み得ることを当業者なら理解されよう。
図2は、少なくとも1つの実装形態による、例示的な超伝導量子プロセッサ200の一部分の概略図である。超伝導量子プロセッサ200は、図1の計算システム100内に実装され、量子プロセッサ126の全部又は一部を形成することができる。図2に示す超伝導量子プロセッサ200の一部分は、2つの超伝導量子ビット201及び202を含む。更に、量子ビット201と202との間のカプラ210によるチューニング可能な結合(対角結合)も示す(即ち2-局所相互作用を提供する)。図2に示す量子プロセッサ200の一部分は2つの量子ビット201、202及び1つのカプラ210のみを含むが、量子プロセッサ200は任意の数の量子ビット及びそれらの間で情報を結合する任意の数のカプラを含み得ることを当業者なら理解されよう。
量子プロセッサ200は、量子プロセッサ200の状態を構成及び制御するために使用される複数のインタフェース221~225を含む。インタフェース221~225の各々は、プログラミングサブシステム及び/又は進化サブシステムの一部として、図示のようにそれぞれの誘導結合構造によって実現され得る。代わりに又は加えて、インタフェース221~225はガルバニック結合構造によって実現されてもよい。一部の実装形態では、インタフェース221~225の1つ又は複数が1つ又は複数のDACによって駆動されてもよい。かかるプログラミングサブシステム及び/又は進化サブシステムは、量子プロセッサ200とは別個とすることができ、又は局所的に(即ち量子プロセッサ200と共にオンチップで)含まれてもよい。
量子プロセッサ200の動作において、インタフェース221及び224は、量子ビット201及び202のそれぞれの複合ジョセフソン接合231及び232内に磁束信号を結合するためにそれぞれ使用することができ、それによりシステムハミルトニアンにおけるチューニング可能なトンネリング項(Δi項)を実現する。この結合はハミルトニアンの非対角σx項を与え、これらの磁束信号は「非局所化信号」の例である。量子計算で使用されるハミルトニアン(及びその項)の例は、例えば米国特許出願公開第2014/0344322号の中でより詳細に記載されている。
同様に、インタフェース222及び223は、量子ビット201及び202のそれぞれの量子ビットループ内に磁束信号を印加するためにそれぞれ使用することができ、それによりシステムハミルトニアンにおけるhi項(量子ビットのための無次元局所場)を実現する。この結合はシステムハミルトニアンの対角σz項を与える。更に、インタフェース225は磁束信号をカプラ210内に結合するために使用することができ、それによりシステムハミルトニアンにおけるJij項(カプラのための無次元局所場)を実現する。この結合はシステムハミルトニアンの対角
項を与える。
図2では、システムハミルトニアンに対するインタフェース221~225の各々の寄与が、ボックス221a~225a内でそれぞれ示されている。図示のように、図2の例ではボックス221a~225aは、量子アニーリング及び/又は断熱量子計算のための時変ハミルトニアンの要素である。
図2には2つの物理的量子ビット201、202、1つのカプラ210、及び2つの読み出しデバイス251、252のみを示すが、量子プロセッサ(例えばプロセッサ200)はより多数(例えば数百、数千又はそれ以上)の量子ビット、カプラ、及び/又は読み出しデバイスを含む任意の数の量子ビット、カプラ、及び/又は読み出しデバイスを使用することができる。超伝導量子ビットの例は、超伝導磁束量子ビット、超伝導電荷量子ビット等を含む。超伝導磁束量子ビットでは、ジョセフソンエネルギが支配的であり又は電荷エネルギ(charging energy)に等しい。電荷量子ビットではこれが逆になる。使用可能な磁束量子ビットの例は、1つのジョセフソン接合によって中断された超伝導ループを含む高周波超伝導量子干渉素子、3つのジョセフソン接合によって中断された超伝導ループを含む持続電流量子ビット等を含む。
制約付き2次問題
2次関数とは、最大でも2次の相互作用を有する1つ又は複数の変数を持つ多項式関数を指す。多くの実世界の問題は、最適化すべき2次関数と、変数の実行可能な結果に置かれる幾つかの制約との組み合わせとして表現することができる。換言すれば、2次関数(本明細書では目的関数とも呼ぶ)は、制約又は制約集合の影響を受ける変数間の相互作用を定義する。所与の問題に対する最適解又は最適に近い解を得るために、目的関数は実行可能な結果に対する制約を条件として最小化又は最大化することができる。以下に記載する実装例では、改善された解に最小化又は低エネルギが対応するように問題が構成される。但し最小化問題は(例えば関数の符号を逆にすることによって)最大化問題として代わりに構成でき、以下の原理は目的関数が極値化される状況に概して適用されることが理解されよう。以下、明瞭にするために最小化について論じるが、同様の原理は最大化される関数に適用することができ、「極値化」という用語は「最小化」と置換することができ、以下に記載するエネルギペナルティは改善された解から離れる方向にペナルティを課すために適用されることが理解されよう。
2次関数とは、最大でも2次の相互作用を有する1つ又は複数の変数を持つ多項式関数を指す。多くの実世界の問題は、最適化すべき2次関数と、変数の実行可能な結果に置かれる幾つかの制約との組み合わせとして表現することができる。換言すれば、2次関数(本明細書では目的関数とも呼ぶ)は、制約又は制約集合の影響を受ける変数間の相互作用を定義する。所与の問題に対する最適解又は最適に近い解を得るために、目的関数は実行可能な結果に対する制約を条件として最小化又は最大化することができる。以下に記載する実装例では、改善された解に最小化又は低エネルギが対応するように問題が構成される。但し最小化問題は(例えば関数の符号を逆にすることによって)最大化問題として代わりに構成でき、以下の原理は目的関数が極値化される状況に概して適用されることが理解されよう。以下、明瞭にするために最小化について論じるが、同様の原理は最大化される関数に適用することができ、「極値化」という用語は「最小化」と置換することができ、以下に記載するエネルギペナルティは改善された解から離れる方向にペナルティを課すために適用されることが理解されよう。
最適化問題を解くときの制約に対処する1つの方法は、ペナルティ項及び不等式の場合は追加の「スラック」変数を使用して制約を目的関数の一部に変換し、新しい目的関数上で最小化を試みることである。しかし一部の実装形態では、これは長い処理時間、多数のスラック変数が必要とされること、及び/又は解の複雑さが大幅に増加すること等の高い計算コストを招き得る。本開示は、制約付き2次問題を解くときに計算効率を改善するのに有用なシステム及び方法を記載する。とりわけ本明細書で説明するシステム及び方法は、制約を変換し目的関数に含める必要なく、制約を指定できるようにし得る。
最終解によって制約が満たされることも保証しながら大域的最適を見つける確率を有益に増加させ得る解く際の幾らかの柔軟性を与えるために、制約にペナルティ値を割り当て、(シミュレーテッドアニーリングの開始時等の)一部の状況において制約が違反され得るように、制約に与える重みを変化させることができる。目的関数に制約を追加する場合、所与の問題における適切なペナルティ値に関する如何なるガイダンスもなしに、制約のペナルティ値を選択する必要があり得る。このことは、よりよい解を見つけるために異なるペナルティ値で問題を複数回解く必要を生じさせることがある。ここで説明するシステム及び方法は、異なるペナルティ値を用いて問題を複数回解くことなくペナルティ値を選択すること、及び解くプロセス中にペナルティ値を動的に調整することも可能にし得る。
制約付き最適化問題を解く所期の結果は、gc(x)≦0等の一部の不等式又は等式制約を条件とする本明細書でf(x)として言及する一部の関数を最適化することである。2次最適化問題では、f(x)及びgc(x)は最大2次の多項式相互作用を有する関数である。最適化は
として表すことができる。これは次式に関して表すことができ、
以下の制約を条件とする。
この制約を2次項として扱うために、左辺(所望の値からの違反)を2乗することができる(n=2)。違反が小さい場合、特に違反が1よりも小さい場合は代わりに線形項(n=1)又は定数項(n=0)を使用することが有益であり得る。以下でより詳細に論じるが、変数xiに対する提案される更新ごとに各制約のΔEが決定される。所望の結果はシステムのエネルギを最小化することなので、エネルギ値の増加はそれらの増加値をもたらす解にペナルティを課す。
線形不等式制約を有する実装形態では、関数は同様に扱われる。しかしこの場合、関数が正である場合にのみ違反にペナルティが課され、関数が負である場合はペナルティが課されない。そのため、例えば
ΣiAc,ixi+bc≦0
として表される不等式では、誤差関数が正である場合にのみ違反にペナルティが課され、さもなければペナルティは適用されない。
ΣiAc,ixi+bc≦0
として表される不等式では、誤差関数が正である場合にのみ違反にペナルティが課され、さもなければペナルティは適用されない。
上記のように、nの値は違反の値に基づいて選択することができる。不等式制約は、以下でより詳細に論じるように所与の値域についてのみペナルティが課され得る。
図3は、プロセッサベースのシステム上で実行される最適化アルゴリズムにおいてサンプリングを実行するための方法300の一例の流れ図である。方法300は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行されてもよく、又は少なくとも1つのデジタル若しくは古典プロセッサを含む古典計算システムによって実行され得る。方法300の実装例は、制約付き2値問題に関して以下でより詳細に論じる。
方法300は行為302~322を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法300は、例えば別のルーチンからの呼び出し又は呼びかけに応答して302から開始する。
302で、プロセッサは、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を有する問題定義を受信し、制約関数の各々は変数集合の少なくとも1つの変数によって定義される。
問題定義は次のように表現することができる:
最小化:Σiaixi+Σi≦jbijxixj+c
条件:
但し{xi}i=1,...,Nは変数集合を表し、集合ai、bij、及びcは実数値であり、Cineq及びCeqはそれぞれ不等式制約及び等式制約の数である。
最小化:Σiaixi+Σi≦jbijxixj+c
条件:
304で、プロセッサは、変数集合のサンプル値及び進行パラメータの値を受信する。一部の実装形態では、進行パラメータは逆温度とすることができる。サンプル値は問題の既知の特性に基づく所定の開始値とすることができ、別のルーチンによって提供されてもよく、ランダムに選択されてもよく、又は当技術分野で知られている他の技法を使用して提供され得る。
306で、プロセッサは変数集合からi番目の変数を選択する。これは、例えば変数集合内の変数の全てが選択されるまで、第1の反復では変数集合内の第1の変数、第2の反復では変数集合内の第2の変数等とすることができる。他の実装形態では、変数の順序はランダム化又は当技術分野で知られている他の測定基準に従って選択することができる。
308で、プロセッサは変数の変数タイプを決定する。変数タイプは、例えば2値、離散、整数、及び連続のうちの1つであり得る。所与の問題定義に関して、変数集合内の変数の全てが単一のタイプでもよく、又は問題が異なる変数タイプの混合を有してもよいことが理解されよう。
310で、プロセッサは変数タイプに基づいてサンプリング分布を選択する。変数タイプが2値である一部の実装形態では、選択されるサンプリング分布がベルヌーイ分布であり得る。変数タイプが離散である他の実装形態では、選択されるサンプリング分布がソフトマックス分布であり得る。或いは一部の実装形態では、ワンホット制約を使用して離散変数が2値変数として含まれてもよく、サンプリング分布がベルヌーイ分布であり得る。ワンホット制約とは、各カテゴリに0/1又は真/偽のダミー2値変数を割り当てることによってカテゴリ変数を2値変数に変換することを指す。例えば離散変数はΣi∈Dxi=1として追加され得る。図10及び図11に関して以下でより詳細に論じるように、変数タイプが整数である他の実装形態では、サンプリングがギブスサンプリング、つまり現在の状態を所与とした条件付き確率に基づくサンプリングによって実行され得る。或いは、条件付き確率関数が変数タイプによって決定される状態で、ギブスサンプリングを全ての変数タイプに対して実行することができる。一部の実装形態では整数変数を2値変数に変換することもでき、ベルヌーイ分布からのサンプリングが実行され得ることが理解されよう。以下でより詳細に論じるように、変数タイプが連続である一部の実装形態では、条件付き確率に基づくサンプリングがスライスサンプリングによって行われてもよく、又はサンプリング分布が線形計画モデルによって提供され得る。
312で、プロセッサは、他の変数の全ての現在値を所与として検討中の変数に作用する目的エネルギバイアスを決定する。上述したように、最適化問題はエネルギを定義する目的関数を用いて構造化することができ、最適化の間、プロセッサはこのエネルギを低減する目的で解を返す。検討中の変数が2値変数であるような一部の実装形態では、目的エネルギ変化
は、以前の解のエネルギ及び現在のサンプル値のエネルギに基づいて決定することができ、エネルギの減少は解の改善を示唆する。
314で、プロセッサは、検討中の変数に作用する制約エネルギバイアスを他の変数の全ての現在値及びその変数を含む制約関数のそれぞれを所与として決定する。上記で論じたように、制約エネルギバイアスは2値変数ではΔE=Σc(│δc,1│n-│δc,0│n)で定義することができる。各制約に適用されるペナルティは違反の大きさによって決定され得る。
一部の実装形態では、プロセッサは、目的エネルギ変化及び制約エネルギ変化に基づいて総エネルギ変化を決定する。上記で論じたように、2値変数では関数
において等、制約を考慮したエネルギ項の追加により、プロセッサによって制約関数がこのエネルギに間接的に含められる。
318で、プロセッサは、目的エネルギバイアス及び制約エネルギバイアス並びに進行パラメータに基づき、サンプリング分布から変数の更新値をサンプリングする。例えば一部の実装形態では、サンプル値がエネルギの改善であり如何なる制約関数にも違反しなかった場合はサンプル値が受け入れられる一方、サンプル値がエネルギの改善ではなく及び/又は制約関数に違反した場合、進行パラメータに依存する幾らかの確率でのみサンプル値が受け入れられ、さもなければ以前の値が受け入れられるように、プロセッサが分布からサンプリングすることができる。進行パラメータは初期段階ではより多くの違反を許容し、後期段階ではより少ない違反を許容することができる。他の実装形態では、サンプリングされる更新値は、総エネルギ変化及び進行パラメータに基づいて加重分布からサンプリングされ得る。例えば変数が2値変数である場合、サンプリング分布はベルヌーイ分布であってもよく、変数は
に従ってサンプリングすることができ、但し
は総エネルギ変化であり、βは進行パラメータ(例えば逆温度)である。
2値変数に関してギブスサンプリングを実行する他の実装形態では、条件付き分配関数が使用される。2値変数では、変数xk=1である条件付き確率は
によって与えられ、但しβは進行パラメータである。従って、目的関数の条件付き分配関数は
によって与えられる。目的関数では、目的エネルギバイアスがδeff=ak+Σi≠kbikxiによって与えられ、確率関数は
によって与えられる。異なる進行パラメータに基づく確率分布の一例を図12に示す。隣接制約に関して、分配関数は
として書くことができ、但しconstは定数前因子であり、確率は
によって与えられる。
離散変数では、ワンホット制約の使用に基づいてギブスサンプリングを実行することができる。dがケースの添字であり、Dkが変数kのケースの集合である式
に基づき、分配関数は
として与えることができる。次いで、異なるセグメント内の値に基づいてギブスサンプリングを実行することができる。
整数変数では、分配関数は
によって与えることができ、但し
は変数xkに対する下限であり、
は上限である。以下でより詳細に論じるように、整数値の制約を考慮する場合、不等式の両辺が等しくなる値であるバインディング値
が決定され、各セグメントの分配関数が
によって与えられる。λcは各制約のペナルティ項であり、実行不可能解にペナルティを課すために使用される。ペナルティ項については以下でより詳細に論じる。αは、同じく以下でより詳細に論じるペナルティノルムパラメータである。320で、プロセッサは変数集合の変数の全てが検討されているかどうかを評価する。例えば変数集合内にn個の変数があり、プロセッサがx1から開始し、次にxS等から開始する場合、プロセッサは1からnまでのインクリメンタル値をモニタすることができ、xnが検討されるとき、インクリメンタル値はnとなることができ、プロセッサは変数集合の変数の全てが検討されていると評価する。連続変数では、以下でより詳細に論じるように線形計画モデル又はスライスサンプリングモデルからサンプリングを実行することができる。一部の実装形態では、サンプリングは、第1の部分集合として他の変数タイプについてまず実行し、次いで第2の部分集合として連続変数について実行することができる。変数の全てが検討されていない場合、制御は行為306に戻り、次の変数が選択される。変数の全てが検討されると、制御は行為322に移る。
322で、プロセッサは、変数集合の各変数の更新値を有する更新されたサンプルを返す。次いで方法300は、例えば再び呼び出されるまで終了することができ、又は行為304からの新しいサンプル値で繰り返すことができる。322におけるサンプル出力は、更なる処理のために別のアルゴリズムに渡すことができ、又は問題の解として返すことができる。一部の実装形態では、シミュレーテッドアニーリングアルゴリズムが解を返した後に方法300が適用されてもよく、方法300は0温度で適用され、システムが最も近い局所最小値まで緩和されることをもたらす。
一部の実装形態では、方法300は、ペナルティパラメータの値を受信することを含むことができ、総エネルギ変化はペナルティパラメータの値にも依存し得る。ペナルティパラメータについては以下でより詳細に論じる。一部の実装形態では、ペナルティパラメータは進行パラメータの値に依存するラグランジュパラメータとすることができる。
上述したように、進行パラメータは逆温度βとすることができる。一部の実装形態では、0.1から開始して1にインクリメントすること等、設定範囲にわたって逆温度をインクリメントすることができる。他の実装形態では、初期温度(シミュレーテッドアニーリングアルゴリズムの最高温度、従って最小の逆温度)βmin及び最終温度(シミュレーテッドアニーリングアルゴリズムの最低温度)βmaxを局所最小値から離れる確率に基づいて設定することが有益であり得る。つまり、あまり望ましくない解に向かう有意な確率があるように、開始温度及び終了温度は十分高く選択されるべきである。一部の実装形態では、プロセッサが返す解は初期温度に敏感である場合があり、特定の問題に基づいて初期温度を決定することが改善された解を有益に返すことがある。
一部の実装形態では、目的関数及び任意の制約によって寄与されるエネルギバイアスは、局所的に最適でない値をサンプリングする有意な確率(例えば50%の確率)を与える初期逆温度パラメータを決定するために使用され得る。アルゴリズムの開始時の高温時に、この確率は、可能な限り強いエネルギバイアスを有する変数でさえ、最も好ましくない値がサンプリングされる確率が相対的に大きいことを保証するために選択することができる。アルゴリズムの終了時の低温時に、可能な限り小さなエネルギバイアスを有する変数でさえ、最も好ましくない値をサンプリングする少なくとも相対的に小さい確率があることを保証するために、この確率を選択することができる。換言すれば、アルゴリズムの全体を通して、好ましくない値を選択する確率は所定の相対的に高い確率で始まり、その後減少するが、常に非ゼロである。
図4は、制約付き2次モデルとして表現され得る最適化問題又は他の問題の解を見つけるための、又は他のアルゴリズムへの入力として使用され得るサンプル解を生成するための、計算システムの動作の方法400の一例の流れ図である。方法400は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行されてもよく、又は少なくとも1つのデジタル若しくは古典プロセッサを含む古典計算システムによって実行され得る。方法400は、2値変数を有する実装形態で使用されてもよく、又は2値変数として他の変数タイプを表現するための1つ又は複数の追加の行為を含んでもよい。
方法400は行為402~430を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法400は、例えば別のルーチンからの呼び出し若しくは呼びかけに応答して、又はユーザによる入力に応答して402から開始する。
402で、プロセッサは問題定義を受信する。問題定義は、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含み、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される。問題定義は、ユーザから受信され(例えば入力デバイスによって入力され)、別のプロセッサから伝送され、メモリから取得され、又はプロセッサによって実行される別のプロセスの出力として提供され得る。目的関数は2次関数とすることができ、問題定義は2次最適化問題を定義し得る。変数集合は、連続変数、離散変数、2値変数、及び整数変数のうちの1つ又は複数を含み得る。制約関数は、1つ又は複数の2次等式又は不等式制約関数を含み得る。
404で、プロセッサは目的関数のサンプル解を初期化する。サンプル解は目的関数に対するランダム解とすることができる。ランダム解は、変数空間全体からランダムに選択することができ、又は問題定義の既知の特性若しくは他の情報に基づいて変数空間の限られた範囲内で選択され得る。サンプル解は、別のアルゴリズムによって生成されてもよく又はユーザによる入力として提供されてもよい。
406で、プロセッサは進行パラメータを初期化する。進行パラメータは、最適化アルゴリズムを定義する増分的に変化する値の集合とすることができる。例えば進行パラメータは逆温度とすることができ、逆温度は初期の高温から最終的な低温までインクリメントすることができる。一部の実装形態では、逆温度はシミュレーテッドアニーリングアルゴリズムのための進行パラメータとして提供される。逆温度の選択については上記で更に詳しく説明してある。
408で、プロセッサは任意でペナルティパラメータを初期化する。以下でより詳細に論じるように、一部の実装形態ではペナルティパラメータはラグランジュ乗数とすることができる。他の実装形態では、ペナルティパラメータは一定値又は1つ若しくは複数の他の変数に依存する値として選択され得る。
410で、プロセッサは任意でサンプル値における各制約関数の現在値を計算する。例えば制約関数は、与えられる制約に応じてΣAc,ixi+bc=0として又は不等式として与えることができる。
412で、最適化アルゴリズムに進行パラメータを与えること等により、プロセッサが最適化アルゴリズムのステージをインクリメントする。最適化アルゴリズムは、シミュレーテッドアニーリング、パラレルテンパリング、マルコフ連鎖モンテカルロ技法、分枝限定アルゴリズム、及び貪欲アルゴリズムを含むことができ、これらは古典コンピュータによって実行され得る。最適化アルゴリズムは、量子アニーリング、量子近似最適化アルゴリズム(QAOA)又は他のノイズあり中規模量子(NISQ)アルゴリズム、量子実装耐障害最適化法、又は他の量子最適化アルゴリズム等、量子コンピュータによって実行されるアルゴリズムも含み得る。量子コンピュータは、量子アニーリングプロセッサ又はゲートモデルベースのプロセッサを含み得る。最適化アルゴリズムの一部の実装例は、米国仮特許出願第62/951,749号及び米国特許出願公開第2020/0234172号に記載されている。連続的な反復にわたり、インクリメントされた最適化アルゴリズムがサンプルを提供し得る。
414で、プロセッサは変数集合からi番目の変数を選択する。これは例えば変数集合内の変数の全てが選択されるまで、第1の反復では変数集合内の第1の変数、第2の反復では変数集合内の第2の変数等とすることができる。i番目の変数は、行為404で初期化されたサンプルからの現在値を有する。一部の実装形態では、i番目の変数は代替値を有することもある。代替値は、最適化アルゴリズムによって行為412で提供することができ、又はi番目の変数の既知の特性に基づいて生成され得る。例えばi番目の変数が2値であり、i番目の変数の現在値が0である場合、i番目の変数の代替値は1になる。
416で、プロセッサは、i番目の変数の現在値に基づいて目的関数が提供するエネルギバイアスを計算する。変数が2値であるような代替値を有する実装形態では、これはi番目の変数の現在値とi番目の変数の代替値との間の目的関数のエネルギの差を計算することを含み得る。上述したように、2値変数の目的エネルギ変化
は、現在値を取るi番目の変数について評価される目的関数、及び代替値を取るi番目の変数について評価される目的関数に基づいて決定され得る。
418で、プロセッサはi番目の変数を含む制約によって与えられるエネルギバイアスを計算する。制約エネルギバイアスに寄与する1つ又は複数の制約関数があってもよい。代替値を有する実装形態では、これはi番目の変数の現在値とi番目の変数の代替値との間で、i番目の変数によって定義される各制約関数のエネルギの差を計算することを含み得る。i番目の変数によって定義される各制約関数のエネルギの差を計算することは、それぞれのペナルティパラメータによって各制約関数にペナルティを課すことを含み得る。例えば線形等式制約を有する2値変数の場合、制約関数のエネルギの差はδc,0=δc-xiAc,i及びδc,1=δc+(1-xi)Ac,iとして与えることができ、エネルギの差は上記で論じたようにΔE=Σc(│δc,1│n-│δc,0│n)で与えられる。
420で、プロセッサは、目的エネルギバイアス及び制約エネルギバイアスに基づきi番目の変数の値をサンプリングする。代替値を有する実装形態では、これは行為416及び418で計算されるように、i番目の変数によって定義される目的関数及び各制約関数のエネルギ値の差に基づいてサンプリングすることを含み得る。上述したように、サンプリングされる値は2値変数に対するベルヌーイ分布、離散変数に対するソフトマックス分布、整数変数に対する条件付き確率分布、又は連続変数に対する線形計画モデル又はスライスサンプリングモデル等、総エネルギ変化及び進行パラメータに基づいて加重分布からサンプリングされ得る。
422で、プロセッサは変数集合の変数の全てが検討されているかどうかを評価する。変数の全てが検討されていない場合、制御は行為414に戻り、次の変数が選択される。変数の全てが検討されると、制御は行為424に移る。一部の実装形態では、プロセッサは変数集合の各変数を順番に増分的に検討し、変数集合の最後の変数が検討されているときに変数集合の変数の全てが検討されていると評価することができる。
424で、プロセッサは進行パラメータをインクリメントする。例えば進行パラメータが逆温度であり、行為406においてt0で初期化された場合、424における最初の反復中に進行パラメータをt1にインクリメントすることができる。一部の実装形態では、t1はt0よりも低い温度とすることができる。連続的な反復にわたり、温度は最終温度に到達するまで更に下げることができる。
426で、任意で各制約のペナルティパラメータを調整することができる。一部の実装形態では、ペナルティパラメータはi番目の変数及び進行パラメータによって定義される制約関数のエネルギの変化に基づいて調整され得る。他の実装形態では、ペナルティパラメータは、以下でより詳細に論じる方法800及び900で説明するように調整することができる。
428で、プロセッサは1つ又は複数の終了基準を評価する。一部の実装形態では、終了基準は進行パラメータの値であり得る。他の実装形態では、終了基準は、反復回数、時間量、更新間の平均エネルギ変化閾値、変数の現在値の品質の測度、又は当技術分野で知られている他の測定基準を含み得る。終了基準が満たされない場合、方法は行為412を継続する。終了基準が満たされるまで行為412~428を反復的に繰り返す。一部の実装形態では、行為420でサンプリングされる変数集合が、行為412で最適化アルゴリズムによって入力として受信されてもよく、サンプルは行為414に渡す前に最適化アルゴリズムによって修正することができる。上述したように、目的関数に関する最適化アルゴリズムのステージをインクリメントすることは、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムをインクリメントすることを含み得る。他の実装形態では、最適化アルゴリズムがMCMCアルゴリズム又は貪欲アルゴリズムであり得る。他の最適化アルゴリズムは、分枝限定アルゴリズム、量子アニーリング、量子近似最適化アルゴリズム(QAOA)又は他のノイズあり中規模量子(NISQ)アルゴリズム、量子実装耐障害最適化法、又は他の量子最適化アルゴリズムを含む。
1つ又は複数の終了基準が満たされている場合、制御は430に移り、そこで解が出力される。430で、方法400は例えば再び呼び出されるまで終了する。行為430における解の出力は、量子アニーリングアルゴリズム等の他のアルゴリズムに渡すことができる。
一部の実装形態では、行為430で解を出力した後、方法400は、行為404で初期化されている新しいサンプルを用いて再び開始することができる。一部の実装形態では、方法400は、異なる初期化されたサンプル又はランダムに生成された一連のサンプルから開始して複数回並行して実行され得る。一部の実装形態では、解を対にすることができ、米国仮特許出願第62/951,749号に記載されているようにクロスボルツマン更新を用いて一連の解を評価するために2値問題を構築することができる。
本明細書に記載する方法は、候補解を提供するために最適化アルゴリズムを使用し、一部の実装形態ではシミュレーテッドアニーリングを使用することができる。シミュレーテッドアニーリングは、候補解のエネルギの変化及びシミュレーテッドアニーリングのステージの両方に基づいて候補解を受け入れるかどうかを確率的に決定する。シミュレーテッドアニーリングの初期段階では、より低いエネルギを提供しない候補解が受け入れられる可能性が高いのに対し、シミュレーテッドアニーリングの後期段階では、より低いエネルギを提供しない候補解が拒絶される可能性が高くなる。これはシステムを高温から低温に進化させるものとして考えることができる。候補解を受け入れる確率は、現在の解と候補解のエネルギ、及びしばしば温度として表され又は言及される時変パラメータの両方に依存する確率受け入れ関数に依存する。別の代替策はパラレルテンパリング(レプリカ交換マルコフ連鎖モンテカルロ法とも呼ぶ)である。シミュレーテッドアニーリングと同様に、パラレルテンパリングはランダムな初期解から開始し、温度及びエネルギに基づいて候補解を交換する。他の最適化アルゴリズムは、MCMCアルゴリズム、貪欲アルゴリズム、分枝限定アルゴリズム、量子アニーリング、量子近似最適化アルゴリズム(QAOA)又は他のノイズあり中規模量子(NISQ)アルゴリズム、量子実装耐障害最適化法、又は他の量子最適化アルゴリズムを含む。
本明細書に記載する方法は、制約関数を目的関数の一部に変換し、適切なペナルティ値を決定する必要なしにソルバーが制約関数を暗黙的に考慮し、違反にペナルティを課すことを可能にする。本方法は、各変数と全ての接続されている変数との相互作用を考慮し、加えて各変数と各制約との相互作用を考慮する。本方法は、各制約が満たされるまで関数内のペナルティの強さを調整することもできる。各変数について、本方法は異なる変数タイプを含めることを可能にするために、変数タイプに特有の更新を行うことができる。
図5は、制約付き2次モデルとして表現することができ、2値変数を有する最適化問題又は他の問題の解を見つけるための計算システムの動作の方法500の一例の流れ図である。他の変数タイプを2値変数に変換することにより、又は本明細書の他の方法で論じるようにエネルギバイアス及びサンプリング分布に対処することにより、本明細書で論じる他のタイプの変数に同様の原理を適用できることが理解されよう。方法500は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行されてもよく、又は少なくとも1つのデジタル若しくは古典プロセッサを含む古典計算システムによって実行され得る。
方法500は行為502~524を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法500は、例えば別のルーチンからの呼び出し又は呼びかけに応答して502から開始する。
502で、プロセッサは問題定義を受信する。問題定義は、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含み、制約関数の各々は変数集合の少なくとも1つの変数によって定義される。問題定義は、ユーザから(例えば入力デバイスによって)受信され、別のプロセッサから伝送され、メモリから取得され、又はプロセッサによって実行される別のプロセスの出力として提供され得る。目的関数は2次関数とすることができ、問題定義は2次最適化問題を定義し得る。変数集合は、連続変数、離散変数、2値変数、及び整数変数のうちの1つ又は複数を含み得る。
504で、プロセッサは目的関数の各変数について2つの候補値を生成する。候補値を生成するための方法の例は米国仮特許出願第62/951,749号に記載されている。候補値は最適化アルゴリズムによって生成されてもよく、ランダムに生成されてもよく、又はランダム解が選択され、ランダム解に基づく代替値が生成されてもよい。解は、変数空間全体からランダムに選択することができ、又は問題定義の既知の特性若しくは他の情報に基づいて変数空間の或る範囲内で選択され得る。例えばi番目の変数が2値であり、i番目の変数の現在値が0である場合、i番目の変数の代替値は1になる。2値でない変数の場合、代替値は既知の分布からサンプリングすることによって生成することができる。一部の実装形態では、代替値を選択するために、プロセッサが整数又は連続変数の空間内でギブスサンプラ等のネイティブサンプラを使用することができる。代替値は様々なアルゴリズムによって生成することができ、変数タイプ及び問題の既知のパラメータに依存し得ることが理解されよう。
506で、プロセッサは変数集合からi番目の変数を選択する。これは、例えば変数集合内の変数の全てが選択されるまで、第1の反復では変数集合内の第1の変数、第2の反復では変数集合内の第2の変数等とすることができる。
508で、プロセッサは、504で生成されたi番目の変数の2つの候補値に基づいて目的関数のエネルギの差を計算する。目的エネルギ変化
は、候補値のそれぞれにおいてi番目の変数について評価される目的関数に基づいて決定され得る。
510で、プロセッサはi番目の変数の2つの候補値間の各制約関数のエネルギの差を計算する。一部の実装形態では、エネルギの差は上記で論じたようにΔE=Σc(│δc,1│n-│δc,0│n)で与えることができる。
512で、プロセッサは、i番目の変数によって定義される目的関数及び各制約関数のエネルギ値の差に基づいてi番目の変数の値をサンプリングする。上述したように、サンプリングされる値は2値変数に対するベルヌーイ分布等、総エネルギ変化及び進行パラメータに基づいて加重分布からサンプリングされ得る。
514で、プロセッサは変数集合の変数の全てが検討されているかどうかを評価する。一部の実装形態では、プロセッサは変数集合の各変数を順番に増分的に検討し、変数集合の最後の変数が検討されているときに変数集合の変数の全てが検討されていると評価することができる。変数の全てが検討されていない場合、制御は行為506に戻り、次の変数が選択される。変数の全てが検討されると、制御は行為516に移る。
516で、プロセッサはサンプリング値に基づく各制約関数のエネルギ値を記憶する。
518で、プロセッサは、任意で制約関数のエネルギ値の変化に関してエネルギ計算に適用されるペナルティ値を調整する。以下でより詳細に論じるように、制約が満たされない場合はペナルティ値を増加できる一方、制約が満たされる場合はペナルティ値を減少させることができる。ペナルティ値の自動調整の実装については、方法800及び900に関して以下で論じる。他の実装形態では、制約が満たされる又は違反されることに応答し、ペナルティ値が固定値によって調整され得る。
520で、プロセッサは1つ又は複数の終了基準を評価する。終了基準は、進行パラメータの値、反復回数、時間量、更新間の平均エネルギ変化閾値、変数の現在値の品質の測度、又は当技術分野で知られているような他の測定基準を含み得る。終了基準が満たされない場合、方法は行為522を継続する。終了基準が満たされるまで行為504~522を反復的に繰り返す。終了基準が満たされている場合、制御は524に移り、そこで解が出力される。524で、方法500は、例えば再び呼び出されるまで終了する。
522で、プロセッサは目的関数に関する最適化アルゴリズムをインクリメントして、変数集合のための受け入れられる値の新しい集合を提供する。最適化アルゴリズムは、行為512のサンプリング値から開始し、各変数について2つの候補値を与えるために代替解を生成することができる。最適化アルゴリズムは、シミュレーテッドアニーリング、パラレルテンパリング、マルコフ連鎖モンテカルロ技法、分枝限定アルゴリズム、及び貪欲アルゴリズムを含むことができ、これらは古典コンピュータによって実行され得る。最適化アルゴリズムは、量子アニーリング、量子近似最適化アルゴリズム(QAOA)又は他のノイズあり中規模量子(NISQ)アルゴリズム、量子実装耐障害最適化法、又は他の量子最適化アルゴリズム等、量子コンピュータによって実行されるアルゴリズムも含み得る。量子コンピュータは、量子アニーリングプロセッサ又はゲートモデルベースのプロセッサを含み得る。最適化アルゴリズムの例は、米国仮特許出願第62/951,749号及び米国特許出願公開第2020/0234172号に記載されている。
図6は、制約付き2次モデルとして表現され得る最適化問題又は他の問題の解を見つけるためのハイブリッド計算システムの動作の方法600の一例の流れ図である。方法600は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行され得る。
方法600は行為602~608を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法600は、例えば別のルーチンからの呼び出しに応答して602から開始する。
602で、プロセッサは、制約付き2次モデル(CQM)問題(本明細書では制約付き2次最適化問題とも呼ぶ)を受信し、制約付き2次最適化問題は変数集合、変数集合にわたって定義される目的関数、1つ又は複数の制約関数であって、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される、1つ又は複数の制約関数、及び最適化のための進行パラメータであって、初期値と最終値との間でインクリメントする値の集合を含む、進行パラメータを有する。
604で、プロセッサは、最適化アルゴリズム604a及びサンプリングアルゴリズム604bを用いてCQM問題のサンプル解を生成する。これらの方法は、本明細書に記載の方法300、400、及び500と同様であり得る。一部の実装形態では、行為604は、進行パラメータの最終値に到達するまで反復的に、最適化アルゴリズムから変数集合の値のサンプル集合をサンプリングすること、更新アルゴリズムを用いて値のサンプル集合を更新することであって、変数集合の変数ごとに、変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づいて目的エネルギ変化を決定すること、変数のサンプル値及び変数によって定義される制約関数のそれぞれに基づいて制約エネルギ変化を決定すること、目的エネルギ変化及び制約エネルギ変化に基づいて総エネルギ変化を決定すること、変数の変数タイプを決定すること、変数タイプに基づいてサンプリング分布を選択すること、並びに総エネルギ変化及び進行パラメータに基づいてサンプリング分布から変数の更新値をサンプリングすることにより、更新アルゴリズムを用いて値のサンプル集合を更新すること、次いで更新されたサンプルを返すことであって、更新されたサンプルは変数集合の各変数の更新値を含む、返すこと、及び進行パラメータをインクリメントすることを含み得る。他の実装形態では、行為604は本明細書に記載する他の任意の方法、例えば図14の方法1400を含み得る。
606で、進行パラメータの最終値又は上述した別の終了基準に到達した後に生成された1つ又は複数の最終サンプルを量子プロセッサに伝送することができ、プロセッサはサンプルを洗練させるように量子プロセッサに指示することができる。一部の実装形態では、1つ又は複数の最終サンプルを量子プロセッサに伝送することが(606aで)サンプルの対を量子プロセッサに伝送すること、及び(606b及び606cで)サンプル間の選択を行うために量子アニーリングを実行することによってサンプルを洗練させるように量子プロセッサに指示することを含む。
608で、プロセッサはCQM問題に対する解を出力する。一部の実装形態では、これらの解は(例えば出力デバイスによって)ユーザに返されてもよい。他の実装形態では、解が洗練のために別のアルゴリズムに渡されてもよく、又は最適化アルゴリズムへの入力として値のサンプル集合として行為604に返されてもよい。608で、方法600は反復されない限り、又は例えば再び呼び出されない限り終了する。
方法600に関して上述したように、一部の実装形態では、得られたサンプルは、例えばクラスタ収縮を使用するハイブリッドアルゴリズムの一部として量子コンピュータによって更に洗練され得る。クラスタ収縮ハイブリッドアルゴリズムは、米国特許出願公開第2020/0234172号でより詳細に開示されている。一部の実装形態では、解を対にすることができ、米国仮特許出願第62/951,749号に記載されているようにクロスボルツマン更新を用いて一連の解を評価するために2値問題を構築することができる。図1のハイブリッド計算システム100等の少なくとも1つの古典コンピュータ又はデジタルコンピュータと量子コンピュータとを含むハイブリッド計算システムを使用することにより、初期解を改善することができる。
クロスボルツマン更新では、所与の変数に関する2つの異なる値と共に、2つの可能な解を見つける又はもたらすことができる。2つの異なる値から選択する新しい2値変数が定義される。次いでこれを最適化可能な2次制約なし2値最適化(QUBO)問題に低減することができる。一部の実装形態では、その結果生じるQUBO問題を量子プロセッサに送信することができ、量子アニーリングを使用して解を生成することができる。古典コンピュータ又はデジタルコンピュータはクロスボルツマン更新を使用して、量子コンピュータが解くことができる2値問題を構築し得る。クロスボルツマン更新は、2つの変数を更新するかどうかの判断を表現するハミルトニアンを与えるために、個別に及び互いに依存してそれらの2つの変数を更新することに関連するエネルギを使用する。デジタルプロセッサは2つの候補値を選択することができ、この更新を最適化問題として量子プロセッサに送信することができる。
実の重みのNxNの上三角行列である上対角行列Q、及び2値変数のベクトルxを用いてQUBO問題を定義して関数を最小化する:
但し対角項Qi,iは線形係数であり、非ゼロの非対角項は2次係数Qi,jである。
不等式
上述したように、エネルギの変化に対する制約の寄与は次のように表すことができる:
Θ(δ)は不等式制約に対処する関数である。不等式制約が違反されない場合、Θ(δ)はゼロになり、そのためその項はエネルギに寄与しない。図7を参照し、グラフ702に示すように、等式ではエネルギペナルティがゼロから離れる方向に増加するようにΘ(δ)が選択される。グラフ704に示すように、不等式では不等式が違反されない限りΘ(δ)はゼロである。
上述したように、エネルギの変化に対する制約の寄与は次のように表すことができる:
δcΘ(δc)に従って違反にペナルティを課すことであって、Θ(δ)はグラフ704に示す関数である、ペナルティを課すことは、制約の値が正である場合にのみ違反にペナルティを課す。
ラグランジュパラメータ
上述したように、目的関数及び制約の両方によって寄与されるエネルギの変化は、
として表すことができ、但しλはラグランジュパラメータ(本明細書ではラグランジュ乗数とも呼ぶ)である。ラグランジュパラメータはペナルティパラメータとして機能し、探索空間を実行可能性に導くために、各関数に割り当てられるペナルティの値が解法プロセスの全体を通して繰り返し調整される。変数の更新が上記のように実行不可能解を返す場合、ペナルティ値を増加させることができる。変数の更新が実行可能解を返す場合、最適解を見つけることができる可能性を高めるためにペナルティを緩和することができる。
上述したように、目的関数及び制約の両方によって寄与されるエネルギの変化は、
ラグランジュ乗数は、制約関数の違反を評価することによって最適化中に調整することができる。所与の制約が違反される場合、関連するラグランジュ乗数が増加される。所与の制約が満たされる場合、関連するラグランジュ乗数が減少される。
上述した実装形態にあるように、CQM問題は次のように表すことができる:
但し、xiは問題変数(2値、離散、整数、連続等であり得る)であり、Mは制約集合である。aiは変数iの線形バイアスであり、bi,jは目的関数内の変数iとjとの間の2次バイアスである。同様に
は制約mの線形バイアス及び2次バイアスである。
シミュレーテッドアニーリングでは、変数のシミュレートされた状態がその現在値から変化する場所について、目的値の変化の大きさが変数ごとに評価される。
但し
は目的値の変化であり、
はシミュレーテッドアニーリングアルゴリズムの反復kにおける制約違反による変化である。
は各制約のラグランジュ乗数である。制約も満たしながら目的関数を最小化しようと試みるために、
を調整して目的関数に与える重みと制約に与える重みとのバランスを取ることが有益であり得る。
に過度に高い値を選択することは制約を尚早に満たし、目的関数に対する最適とは言えない解をもたらし得る一方、過度に低い値は、実行不可能解としても知られる1つ又は複数の制約に違反する解が生成されることをもたらし得る。
最初の実行可能解を見つけた後、ペナルティ値を安定させるために大域的減衰が使用される。パラメータは減衰係数df:
を使用して減衰され、但しα0及びγ0は初期アジャスタ値であり、kは反復回数であり、rは最初の実行可能解の反復回数である。
図8及び図9は、方法800及び900を実行するプロセッサベースのシステムの性能を有利に改善し得る、探索空間を実行可能性に導くためにペナルティパラメータを調整するための方法800及び900の例の流れ図である。方法800及び900は、シミュレーテッドアニーリングのサブプロセスとして、又は最適化アルゴリズムの一部として実装することができる。後述するように、方法900は、ラグランジュ初期パラメータ及び乗数、具体的にはラグランジュ初期値μ、α、及びγの初期化から開始する。加えて、探索が実行不可能性(違反の合計)を低下させること及び最良の解をそれぞれ進展させることができない反復回数をカウントするためにtinf及びtfのカウンタを初期化する。tinfは探索が実行不可能性を下げる(違反の合計を下げる)ことなく実行不可能領域に留まる反復回数であるのに対し、tfは探索が最良実行可能解を改善することなく実行可能領域に留まる反復回数である。上述したように、tはアルゴリズムがα及びγを増加させる前に待機する反復回数である。
シミュレーテッドアニーリングの更新方法の間、所与の状態、その現在の目的、及び制約の左辺のエネルギに関して、システムが解の実行可能性、制約のバインディングからの距離、及びそれらの違反を検査する。次いでシステムは、最良の解及び違反の合計の改善に従い、探索を実行可能性又は実行不可能性に向けて調整する。最後に、α、γ、違反/制約のバインディングの新しい値、及び前の反復からのラグランジュ乗数に基づいてラグランジュ乗数が調整される。
一部の実装形態では、ラグランジュパラメータは、逆温度等の進行パラメータに沿ってシミュレーテッドアニーリングの進行と共に直接変化させることもできる。シミュレーテッドアニーリングの開始時には、ラグランジュパラメータは小さくあることができ、違反に割り当てられるペナルティは小さくあり得る。シミュレーテッドアニールの終了間際、最終解で制約が満たされ得るように違反に割り当てられるペナルティは増加し得る。
図8は、最適化を実行する際にプロセッサベースのシステムの性能を有利に改善し得る、最適化アルゴリズムにおける実行可能性に探索空間を導くための方法800の一例の流れ図である。方法800は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行されてもよく、又は少なくとも1つのデジタル若しくは古典プロセッサを含む古典計算システムによって実行され得る。
方法800は行為802~822を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法800は、例えば別のルーチンからの呼び出し又は呼びかけに応答して802から開始する。
802で、プロセッサは、上述したようなシミュレーテッドアニーリングアルゴリズム等の最適化アルゴリズムからサンプルを受信する。一部の実装形態では、方法800は、上述した方法300、400、500、及び600の何れか1つ、又は以下で論じる方法1400によって呼び出され得る。方法800は、方法400の行為426又は方法500の行為518において等、ペナルティパラメータを調整するために使用され得る。
804で、プロセッサは、1つ又は複数の制約関数のエネルギ値又はバイアスを決定する。一部の実装形態では、プロセッサは所与のサンプルについて制約関数を評価することができる。上述した方法のような他の実装形態では、方法400の行為418又は方法500の行為516によって等、1つ又は複数の制約関数のエネルギ値が別の関数によって計算され、行為804に渡され得る。
806で、プロセッサはサンプルの実行可能性を評価する。これは、例えば1つ又は複数の制約関数のエネルギ値について受信される値によって判定され得る。一部の実装形態では、図7に関して上記で論じたように、実行可能サンプルのエネルギ値をゼロにする関数が提供されてもよい。制約が違反される場合、そのサンプルは実行不可能であると見なされる。
808で、サンプルが実行不可能である場合は制御が810に移り、サンプルが実行可能である場合は制御が812に移る。
810で、プロセッサは、非実行可能サンプルについて違反される制約のペナルティ値を増加させる。一部の実装形態では、非実行可能サンプルを返す反復ごとにペナルティ値を一定値インクリメントすることができる。実行可能サンプルだけが望まれるので、アルゴリズムが実行可能解だけを返すように制約関数が十分に重み付けされるまでペナルティ値をインクリメントすることが有益である。
812で、プロセッサは、実行可能サンプルに対するペナルティ値を減少させる。制約に重みを付け過ぎることは決して最適ではない実行可能解を招き得るので、実行可能サンプルが返される場合はペナルティ値を減少させることができる。方法900に関して以下で論じるように、実行可能解を返す低い値にペナルティ値を収束させるために減衰係数を使用することができる。一部の実装形態では、非実行可能サンプルが返されるまで、実行可能サンプルを返す反復ごとにペナルティ値を一定値減少させることができる。その後、実行可能サンプルが返されるまでペナルティ値を増加させ、残りの反復にわたってそのペナルティ値を維持することができる。
814で、プロセッサは任意で、以前のサンプルと比較して違反が低減しているかどうかを判定する。例えばこれは、上述したように制約違反関数を比較することによって行うことができる。制約関数によって寄与される総エネルギペナルティが増加する場合、違反は増加している。制約関数によって寄与される総エネルギペナルティが減少する場合、違反は低減している。一部の実装形態では違反が同じままであり、そのため低減していない場合もある。違反が低減している場合、制御は818へ、さもなければ822へ移る。
818で、プロセッサは初期アジャスタ値を増加させる。例えば上記で論じたように、α0を定数係数(例えば1.2)によって指数関数的に増加させることができる。
816で、プロセッサは任意で、以前のサンプルと比較して現在の最良解が改善されているかどうかを判定する。現在の最良解が改善されている場合、制御は822に進み、さもなければ820に進む。例えばこれは、前の反復における目的関数のエネルギを目的関数のエネルギと比較することによって行うことができる。
820で、プロセッサは初期アジャスタ値を増加させる。例えば上記で論じたように、γ0を定数係数(例えば1.2)によって指数関数的に増加させることができる。
822で、プロセッサは最適化アルゴリズムに返すペナルティ値を出力する。次いで方法800は、例えば再び呼び出されるまで終了することができる。
図9は、最適化を実行する際にプロセッサベースのシステムの性能を有利に改善し得る方法900の形を取る、最適化アルゴリズムにおける実行可能性に探索空間を導くための方法800の実装例の流れ図である。図9は、CQM問題を解くためのシミュレーテッドアニーリング手順中にラグランジュ乗数をどのように自動で調整できるのかを示す。図9は、主なシミュレーテッドアニーリング手順902を、乗数の自動調整手順を示す行為904~922と共に示す。
904で、システムはラグランジュパラメータを初期化する。図9の実装例では、初期アジャスタα0及びγ0を2及び0.05にそれぞれ設定した状態でラグランジュパラメータ
を反復k=0について初期化する。tは、問題が実行不可能であり違反の合計の改善に失敗する場合、又は問題が実行可能であり最良の解の改善に失敗する場合に初期アジャスタα0及びγ0が同じ値のままである反復回数を表す。βmin、βmax、及びscaleはシミュレーテッドアニーリングアルゴリズムによって与えられるシミュレーテッドアニーリングパラメータである。tinf及びtfは、サンプリングが進展しなかった実行不可能レジーム及び実行可能レジームにおいて反復回数をカウントするために使用されるカウンタであり、最初は0に設定される。
906で、システムは、最適化アルゴリズム又は更新アルゴリズムから制約関数のエネルギ及び変数の現在の状態を受信する。例えば方法300、400、500、600、又は1400のうちの1つによって生成されるサンプル値が、それらの方法の1つによって見出される制約関数に関するエネルギと共にシステムに渡され得る。一部の実装形態では、システムは、シミュレーテッドアニーリングアルゴリズムから制約関数のエネルギ及び変数の現在の状態を受信することができる。
908で、システムは減衰係数、違反、及びバインディングを評価する。減衰係数は初期パラメータとして与えられてもよく、又は以前の反復における実行可能値と実行不可能値との間の変動に応じて調整され得る。違反は、上述したような制約関数から評価することができる。例えば制約は、図7に関して論じた関数によって評価され、乗算され得る。バインディングは、制約が違反されていない各制約のバインディングからの距離、及び/又は全ての制約にわたるバインディングからの総距離として計算することができる。
910で、システムは現在のサンプルが実行可能かどうか、つまり制約の何れかが違反されているかどうかを判定する。これは、上述したように制約のエネルギに基づいて判定され得る。制約の1つ又は複数が違反されている場合、本方法は行為912に進むのに対し、サンプルが実行可能である(即ち制約が違反されていない)場合、本方法は914に進む。
912で、システムは違反が低減されているかどうかを判定する。上記のように、これは制約のエネルギに基づいて判定され得る。違反が低減されている場合、制御は916に進み、カウンタ値は変化しない(tinf及びtfはゼロのままである)。違反が低減されていない場合、制御は918に進む。
918で、カウンタtinfを1インクリメントし、tと比較する。tinfがt以上である場合は初期アジャスタα0の値を(例えば1.2の指数等の幾らかの定数係数によって)増加させる。初期アジャスタα0の値が増加される場合、tinfはゼロにリセットされる。その後、制御は916に渡される。
914で、システムは最良解が改善されているかどうか、つまり目的関数のエネルギが減少しているかどうか、又はより最適な解が見つかっているかどうかを判定する。解が改善されている場合、制御は916に進み、カウンタ値は変更されない(tinf及びtfはゼロのままである)。最良解が改善されていない場合、制御は920に進む。
920で、カウンタtfを1インクリメントし、tと比較する。tfがt以上である場合は初期アジャスタγ0の値を(例えば1.2の指数等の幾らかの定数係数によって)増加させる。初期アジャスタγ0の値が増加される場合、tfはゼロにリセットされる。その後、制御は916に渡される。
916で、システムは上記の減衰係数dfに基づいて
の有効値を決定する。実行可能解が見つかると、減衰係数を使用してパラメータの変化を減衰させ、減衰係数は、例えば現在の反復回数及び最初の実行可能解が見つかった反復回数に依存し得る
。
に従って
を評価することができる。
更新されたラグランジュ乗数は902に戻され、シミュレーテッドアニーリングアルゴリズムのステージに戻される等、他のアルゴリズムで使用され得る。
疑似コードによる例
一部の実装形態では、解くべき問題が2値変数のみを含む場合がある。2値変数x1、x2を有するこのような2値問題の一実装例について次に論じる。この例題は1つの可能な実装例を表すに過ぎず、以下で論じる内容を他の実装形態が凌ぐ場合があることが理解されよう。
一部の実装形態では、解くべき問題が2値変数のみを含む場合がある。2値変数x1、x2を有するこのような2値問題の一実装例について次に論じる。この例題は1つの可能な実装例を表すに過ぎず、以下で論じる内容を他の実装形態が凌ぐ場合があることが理解されよう。
プロセッサは、f(x1,x2)等の目的関数並びにg(x1,x2)及びh(x1)等の制約関数を有する制約付き2次モデル(CQM)問題を受信する。制約関数は等式又は不等式を含み得る。
プロセッサは、サンプルを受信又は初期化する。サンプルは、別のアルゴリズムによって生成されてもよく、入力として受信されてもよく、分布からサンプリングされてもよく、又はランダムに生成され得る。この例では、ランダムなサンプルを
として初期化する。一部の実装形態では、一対のサンプルを受信することができる。
プロセッサは、進行パラメータを受信し又は初期化する。一部の実装形態では、進行パラメータは逆温度とすることができる。プロセッサは、例えば逆温度をt0として初期化することができる。例えば一部の実装形態では、最適化を実行するためにシミュレーテッドアニーリングが使用され得る。システムの温度は、最初は或る高温に設定することができ、或る低温までインクリメントすることができる。これには、最適化の初期に高エネルギ解を受け入れ、局所最小値に留まる確率を下げ、最適化の終了間際に高エネルギ解を受け入れることを妨げる効果があり得る。
プロセッサは任意で、ペナルティパラメータを受信し又は初期化することができる。例えばプロセッサは、進行パラメータ及びエネルギ違反の大きさの関数、例えばλc(t,δc)として、上記でより詳細に論じたようにラグランジュパラメータを初期化することができる。
次いでプロセッサは各変数を順番に検討する。変数は初期化されたサンプルによって与えられる現在値を有し、プロセッサは、変数の特性又は変数に対する制約に基づいて代替値を決定することができ、又は入力として若しくは別のアルゴリズムから代替値を受信することができる。例えばx1が2値変数であり、
からサンプリングされた値が0であることを所与とし、x1の代替値は1でなければならない。2値以外の変数タイプの場合、代替値は初期サンプルと共に受信することができ、又は別のアルゴリズムによって生成され得ることが理解されよう。プロセッサは目的関数を検討し、変数の近傍で目的関数によって寄与されるエネルギ項を決定する。プロセッサは、変数の現在値及び変数の代替値について変数を含む制約関数も検討する。所与の例では、プロセッサはx1から開始し、初期化されたサンプル値(0)及び代替値(1)に関してx1を含む目的関数f(x1,x2)の線形項の値を見つけることができる。これは、x1とx2との間のペアワイズ相互作用項、及びx1のみを含む項の係数を含み得る。より大きな例では、様々な変数間の多岐にわたるペアワイズ相互作用項があり得ることが理解されよう。次いでΔE等のエネルギ値を、x1に関するこれらの項が寄与するエネルギに設定することができる。
x1を含む各制約について、最初に計算された制約値g(0,1)、h(0)、及びx1を含むx1の代替値であるg(1,1)のペアワイズ項に基づいて制約のエネルギ値がプロセッサによって決定される。所与の例では、制約エネルギがδx1,1=g(1,1)+h(1)及びδx1,0=g(0,1)+h(0)としてプロセッサによって計算され得る。次いでこれらの項は、ΔE=ΔE,x1+λt0,δx1,1δx1,1
2Θ(δx1,1)-λt0,δx1,0δx1,0
2Θ(δx1,0)として現在のエネルギ値に加算され、但し図7に関して上記でより詳細に論じたように、Θ(δ)は不等式制約のための関数である。不等式制約が違反されない場合、Θ(δ)はゼロに設定され、そのためその項はエネルギに寄与しない。
次いで、ΔE及びt0に基づいて変数x1のサンプル値がプロセッサによって生成される。サンプリングは変数タイプに応じて異なることができ、例えば分布からサンプリングすること又は別の方法でサンプルを生成することができる。一部の実装形態では、サンプリング値が如何なる制約にも違反しない場合はサンプリング値が受け入れられる一方、サンプリング値が制約に違反する場合はt0に依存する確率でサンプリング値が受け入れられる。次いでこの値はx1,t0、例えばx1,t0=1となる。
次いで、プロセッサはx2を検討し、同じことを繰り返してx2,t0の値をサンプリングする。
変数の全てが検討され、新しいサンプル値が生成されると、プロセッサは進行パラメータをインクリメントする。生成されたサンプル
は
の代わりになるように送り返されてもよく、又は他の何らかの処理操作が実行され得る。例えばシミュレーテッドアニーリングの場合、生成されたサンプル
がシミュレーテッドアニーリングアルゴリズムに送り返されてもよく、シミュレーテッドアニーリングアルゴリズムは
から始まる新しい値をサンプリングすることができ、新しい値は
の代わりに現在論じられているアルゴリズムに返される。プロセッサは進行パラメータをインクリメントし、初期逆温度から最終逆温度まで等、進行パラメータの値ごとに更新されたサンプルを生成する。ペナルティパラメータは、進行パラメータの各インクリメント時に更新することもできる。
最終逆温度において、生成されたサンプル
が返される。進行パラメータにわたる初期サンプルからのサンプリングは、初期逆温度から最終逆温度までの上記の例における繰り返しごとに、新しくランダムに生成された
から開始して複数回繰り返すことができる。これは、複数の開始サンプルに対して並行して行うことができる。このことは、
の値の集合によって与えられるサンプル集合をもたらす。
上記で論じた単純な2値問題の疑似コードの一例を以下に示す:
目的関数f(x1,x2)、制約g(x1,x2)、h(x1)を受信する
サンプルの初期化
ペナルティパラメータの初期化 λc(t,δc)
初期化 t=t0
に基づいて各制約の現在値を計算してg(0,1)、h(0)を与える
tごとに:
それぞれの変数について:
x1では:
代替値を決定する。x1=0、代わりに1とすることができる(2値)。
ΔE,x1=線形バイアス=x1を含むf(x1,x2)の項
ΔE,x1=x1を含むf(1,1)の項-f(0,1)の項
neighborhood(x1)内の各制約cについて:
δx1,1=g(1,1)+h(1)-g(1,1)に関してg(x1,x2)のx1を含むペアワイズ項のみを計算する。
δx1,0=g(0,1)+h(0)-g(0,1)及びh(0)は上記から既に知られている。
ΔE=ΔE,x1+λt0,δx1,1δx1,1 2Θ(δx1,1)-λt0,δx1,0δx1,0 2Θ(δx1,0)
ΔE及びt0を使用して変数x1の値をサンプリングする:
例:x1,t0=1を返す
更新δc=g(1,1)+h(1)
x2では:
代替値:x2=0。
ΔE,x2=x2を含むf(0,1)の項-f(0,0)の項
neighborhood(x1)内の各制約cについて:
δx2,0=g(0,0)-g(0,0)に関してg(x1,x2)のx2を含むペアワイズ項のみを計算する。
δx2,1=g(0,1)-g(0,1)は上記から既に知られている。
ΔE=ΔE,x2+λt0,δx2,0δx2,0 2Θ(δx2,0)-λt0,δx2,1δx2,1 2Θ(δx2,1)
ΔE及びt0を使用して変数x2の値をサンプリングする:
例:x2,t0=1を返す
更新δc=g(1,1)
逆温度をインクリメントする-t=t1に設定する。
最適化アルゴリズムに渡してサンプルを折り返し得る、又はt1に関して直接繰り返す。
目的関数f(x1,x2)、制約g(x1,x2)、h(x1)を受信する
サンプルの初期化
初期化 t=t0
tごとに:
それぞれの変数について:
x1では:
代替値を決定する。x1=0、代わりに1とすることができる(2値)。
ΔE,x1=線形バイアス=x1を含むf(x1,x2)の項
ΔE,x1=x1を含むf(1,1)の項-f(0,1)の項
neighborhood(x1)内の各制約cについて:
δx1,1=g(1,1)+h(1)-g(1,1)に関してg(x1,x2)のx1を含むペアワイズ項のみを計算する。
δx1,0=g(0,1)+h(0)-g(0,1)及びh(0)は上記から既に知られている。
ΔE=ΔE,x1+λt0,δx1,1δx1,1 2Θ(δx1,1)-λt0,δx1,0δx1,0 2Θ(δx1,0)
ΔE及びt0を使用して変数x1の値をサンプリングする:
例:x1,t0=1を返す
更新δc=g(1,1)+h(1)
x2では:
代替値:x2=0。
ΔE,x2=x2を含むf(0,1)の項-f(0,0)の項
neighborhood(x1)内の各制約cについて:
δx2,0=g(0,0)-g(0,0)に関してg(x1,x2)のx2を含むペアワイズ項のみを計算する。
δx2,1=g(0,1)-g(0,1)は上記から既に知られている。
ΔE=ΔE,x2+λt0,δx2,0δx2,0 2Θ(δx2,0)-λt0,δx2,1δx2,1 2Θ(δx2,1)
ΔE及びt0を使用して変数x2の値をサンプリングする:
例:x2,t0=1を返す
更新δc=g(1,1)
逆温度をインクリメントする-t=t1に設定する。
最適化アルゴリズムに渡してサンプルを折り返し得る、又はt1に関して直接繰り返す。
本明細書に記載する方法及びシステムは、制約を目的関数の一部に変換するのとは対照的に、制約を直接処理することにより、計算効率のよい解くこと制約を有する最適化問題を有益に可能にする。このことは、時間効率がよくスケーラブルな方法で最適化問題に対する実行可能解をプロセッサが返すことを有益に可能にし得る。このことは、プロセッサによる複数の解の並列生成も可能にし得る。制約の寄与は、各制約を考慮する更新プロセスによって暗黙的に処理することができる。制約関数を直接処理し、計算によって制約関数のエネルギ値を引き出すことは解の効率を高め得る。本明細書に記載する方法及びシステムは、制約関数のペナルティの重みを自動で及び動的に調整することも有利に可能にすることができ、よりよい解を返しながら探索を効率的に実行可能性に導くことを可能にする。産業界で解決されるような多くの実世界の問題は、実行可能解に対する制約を有する問題である。本明細書に記載する方法及びシステムは、2値変数と離散変数との混合等、異なるタイプの変数集合を有する問題の解も可能にし得る。サンプリングは、変数タイプの決定に基づいて、並びに現在のエネルギ値及びペナルティを考慮して行うことができる。一部の実装形態では、本明細書に記載する方法及びシステムは、改善された解をもたらすためにハイブリッド量子計算技法と組み合わせて使用することができる。
整数変数
上述したように、制約付き問題は、2値、離散、整数、及び連続等の様々な変数タイプにわたって定義することができる。変数タイプは、それらの変数の更新値をサンプリングするためにプロセッサによって選択されるサンプリング分布を決定することができる。変数タイプが2値である一部の実装形態では、選択されるサンプリング分布がベルヌーイ分布であり得る。変数タイプが離散である他の実装形態では、選択されるサンプリング分布がソフトマックス分布であり得る。
上述したように、制約付き問題は、2値、離散、整数、及び連続等の様々な変数タイプにわたって定義することができる。変数タイプは、それらの変数の更新値をサンプリングするためにプロセッサによって選択されるサンプリング分布を決定することができる。変数タイプが2値である一部の実装形態では、選択されるサンプリング分布がベルヌーイ分布であり得る。変数タイプが離散である他の実装形態では、選択されるサンプリング分布がソフトマックス分布であり得る。
変数タイプが整数(又は連続)である場合、選択可能な単一の明確に定義された分布がない可能性がある。多くの最適化問題は、整数変数及びそれらの整数変数が取り得る値に関する制約を含む。上述したように制約付き問題ソルバーで整数変数をサポートするために、整数変数の「ネイティブ」サポートを提供することが有益であり得る。整数変数の制約及びラグランジュパラメータを考慮した整数変数の更新について以下で論じる。
整数の更新を実装するための1つの技法は、整数変数を一時的に連続変数に緩和すること、その変数を含む制約の目的及びラグランジュ緩和による勾配を計算すること、その勾配による更新を提案すること、及び上述のプロセスと同様に確率的に受け入れる又は拒否することを含む。しかし、整数変数に対するこの種の更新は、制約が複雑であり及び/又は多くの重複する制約がある高いアルゴリズム複雑性(隣接制約数のオーダー)をもたらし得る。代わりに、サイズRの有界範囲で定義された整数変数は、整数変数を約log(R)の2値変数に変換することによって2値変数と同様に実装することができる。次いで、サンプリング分布としてベルヌーイ分布を選択し、2値変数について上述したように更新を進めることによりこれを更新することができる。しかし、この種の更新は整数変数を2値変数に変換する最良の方法を選択することを必要とする。一部の例はベース2表現又はグレイコードを含む。log(R)の2値変数では、サンプリングに指数関数的な時間がかかり、Rのオーダーの実行時間が発生し得る。
所与の整数変数の隣接制約を調べ、整数変数の範囲を一連のセグメントであって、各セグメントは同じ形式の制約ペナルティを有する、一連のセグメントに分割することにより、整数の更新を実行することが有益であり得る。セグメントは、そのセグメント内の目的及び制約ペナルティの積分に基づいてランダムに選択することができる。そのセグメント内から整数のための新しい値をサンプリングすることができる。以下の方法は整数変数の文脈で論じるが、以下で論じるように連続変数での使用に拡張することもできる。
このプロセスにはO(M log(M)+Mt)時間かかり、但しMは制約の数であり、tは分配関数又はセグメント上のサンプルを計算するのに必要な実行時間である。整数変数が目的関数内で線形項(又は複数の線形項)のみを有する場合t=O(1)になり、以下のように記載する更新にはO(M log(M))時間かかることが予期される。整数変数が目的内で2次項を有する場合、tはO(log(r))になることが予期され、但しrはセグメントの範囲であり、場合によってはO(1)であり得る。これは、整数変数を連続変数に緩和すること又は整数変数に変換すること等、上述した他の方法よりも高速であることが有益に期待される。
整数変数の値をサンプリングする場合、ギブスサンプリング、つまり現在の状態を所与とした条件付き確率でサンプリングすることを行うことができる。これについては以下でより詳細に説明する。上述したように、CQM問題を解く文脈では、新しい値をサンプリングするとき目的関数及び制約関数の両方が考慮される。従って、所与の整数変数を更新するために、現在の状態又は現在受け入れられている変数の値を所与とした条件付き確率でサンプリングを行うことができる。目的関数の条件付き確率は、以下に記載するように解析的に計算することができる。
2次関数は2乗変数を含むが、本明細書に記載する実装形態の中の方程式の幾つかは2乗整数変数に対して機能しない場合があることが理解されよう。それらの実装形態では、新しい変数を定義することができる。例えば整数変数x1が目的関数又は制約の中で2乗される場合、新しい変数x2を定義することができ、追加の制約x2=x1と共に2乗をx1x2で置換することができる。この置換は、変数がi及びjの添字と共に記載され、i=jである場合等、上記で使用した方程式で必要とされ得ることが理解されよう。2乗変数に対処するために、他の置換も同様に行えることが理解されよう。他の実装形態では、以下の方程式を修正することができる。余分な変数を追加することなく2乗(2次)変数に対処するための代替的実装形態についても、スライスサンプリングを使用して以下で論じる。
制約は、バインディング値を計算することによって考慮される。変数に隣接する制約に関する変数の有効線形バイアスがゼロよりも大きいと仮定し、バインディング値が変数の下限よりも小さい可能性がある、バインディング値が変数の上限と下限との間にあり得る、及びバインディング値が変数の上限よりも大きい可能性があるという3つの可能な結果がある。バインディング値が変数の上限よりも大きい場合、制約は変数の全ての可能な値について満たされ、分配関数は条件付き目的関数だけを含む条件付き分配関数によって与えられる。バインディング値が変数の下限よりも小さい場合、変数の全ての可能な値は制約に違反し、ペナルティを課さなければならない。変数の有効線形バイアスがゼロよりも小さい場合、これらの状況が逆になる。上述したようにペナルティは定数として適用することができ、又は違反の大きさ及び最適化アルゴリズムのステージに応じて変化させることができる。
バインディング値が変数の上限と下限との間にある場合、図10に示すように変域を2つのセグメントに分割することができる。上記のように、図10は有効線形バイアスがゼロよりも大きいと仮定する。有効線形バイアスがゼロよりも小さい場合、結果が反転される。第1のセグメントは変数の下限とバインディング値以下の整数によって定義され、第2のセグメントはバインディング値以上の整数と上限によって定義される。分配関数は、これらの2つのセグメントの分配関数の和として計算することができる。第1のセグメントは、バインディング値が変数の上限よりも大きい場合と同じ分配関数、つまり目的関数の条件付き分配関数を使用することができる。第2のセグメントは、ペナルティを適用した状態でバインディング値が変数の下限よりも小さい場合と同じ分配関数を使用することができる。変数の有効線形バイアスがゼロよりも小さい場合、状況は上記と同じになるがケースが入れ替わる。これは複数の制約に一般化するために使用することができる。
目的関数及び制約の関数を所与とし、現在の状態が与えられたときの条件付き確率に基づいてギブスサンプリングによって新しい値をサンプリングすることができる。
上述したように、制約付き2次モデル(CQM)は目的関数及び制約集合によって定義される。CQMは、例えば2値変数、整数変数、離散変数、及び連続変数の組み合わせ、又は他のタイプの変数であり得る変数xiの集合を有する。一部の実装形態では、変数の1つ又は複数が整数変数である。
一実装形態では目的関数、例えばf(x)=Σiaixi+Σi<jwi,jxixjが定義される。形式gc(x)=Σiai,cxi+Σi<jwi,j,cxixj+Cc≦、≧又は=0のMの制約の集合が提供される。ai,c又は任意のjに関するwi,j,cが非ゼロである場合、制約gc(x)は所与の変数xiに関して「隣接している」と見なされる。CQM内の整数変数は、変数xkに関するlb[k](下限)及びub[k](上限)として定義され得る下限及び/又は上限と共に与えることができる。これらの限界は制約として代わりに表現することができる。
所与の整数変数xkを更新するために、他の全ての変数の現在の状態が与えられたときの条件付き確率に基づいてギブスサンプリングが行われる。目的関数を検討し、整数変数xkを更新するとき、条件付き分配関数は
によって与えられ、条件付き目的関数は
exp[-βf(n|{xi}i≠k)]=exp[-βA]exp[-βδeffn]
として書くことができ、但し定数Aは変数xkを含まないf(x)内の全ての項を含み、A=f(x)-δeffxkであり、δeffは変数xkの有効線形バイアスであり、δeff=ak+Σi≠kwikxiである。
exp[-βf(n|{xi}i≠k)]=exp[-βA]exp[-βδeffn]
として書くことができ、但し定数Aは変数xkを含まないf(x)内の全ての項を含み、A=f(x)-δeffxkであり、δeffは変数xkの有効線形バイアスであり、δeff=ak+Σi≠kwikxiである。
制約を考慮し、全ての制約は不等式制約として表現され、等式制約は2つの不等式の組み合わせとして実装され、変数xkに隣接する任意の制約cは
と書くことができ、バインディング値
は、
となるように、計算することができる。
ケース3を検討すると、制約はxkの全ての可能な値に対して満たされ、値を抑制する必要はない。条件付き分配関数は方程式(1)によって与えられる。
ケース1を検討すると、変数xkの全ての可能な値が制約に違反し、従ってペナルティを課されるべきである。分配関数は
として書くことができ、但しα≧0は制約の違反に関する様々なペナルティの使用を可能にする。一部の実装形態では、上記で論じたL0、L1、及びL2ペナルティにそれぞれ対応するα=0、1、又は2を使用することができる。方程式内の違反のLαノルムは
であるべきであり、これは各制約の違反の相対的な大きさに関係なく、L0が同じ重要度の全ての制約を有することを意味することに留意されたい。従って、有効バイアス項
を上記の指数関数から除外することができる。
ケース2を検討すると、図10に示すように変数xkの変域は2つのセグメント、つまり
に分割することができる。図10では、
から生じる斜線1002がペナルティの方向及び傾き(
によって与えられる)を示す。
分配関数は、2つのセグメント内の分配関数の和として計算することができる。どちらもセグメントの変域に適応した状態で、最初のセグメントではケース3の結果を使用することができ、2番目のセグメントではケース1の結果を使用することができる。すると、分配関数は次のようになる:
。
分配関数を複数の制約のケースに一般化し、バインディング値の順序付き集合
がセグメントの集合{s≡[xs,xs+1]}を定義する。上記のように、分配関数はセグメントにわたって計算することができ、全てのセグメントの分配関数を合計することができる。各セグメントについて、寄与する制約が追跡される。これらは、
であり
でもある制約cによって与えられる。
この全般的なケースを図11に示す。
逆変換サンプリング
選択されたセグメント内からのサンプリングは様々な技法を使用して、例えば逆変換サンプリングを使用して行うことができる。以下、逆変換サンプリングを整数変数及び連続変数について説明する。xをセグメントx∈[xL,xU]内の値を有する連続確率変数とする。上記の解説を参照し、xL及びxUはセグメント境界xs、xs+1としてそれぞれ取ることができる。セグメントの分配関数は、一般的に
として書くことができる。累積分布関数は
として計算することができ、但しRはR=xU-xLとして定義される。この公式は解析的に反転させることができ、F(x)=yの設定は
をもたらす。
選択されたセグメント内からのサンプリングは様々な技法を使用して、例えば逆変換サンプリングを使用して行うことができる。以下、逆変換サンプリングを整数変数及び連続変数について説明する。xをセグメントx∈[xL,xU]内の値を有する連続確率変数とする。上記の解説を参照し、xL及びxUはセグメント境界xs、xs+1としてそれぞれ取ることができる。セグメントの分配関数は、一般的に
分布exp[-λx]を有するセグメント[xL,xU]内の連続変数をサンプリングするために、[0,1]内で一様に分布する変数yをランダムにサンプリングし、次いで方程式(9)を使用することができる。
整数の場合も同様にサンプリングすることができ、累積分布関数は
によって与えられる。但しここではR=xU-xL+1となる。2つの累積分布関数(9)及び(10)は、+1の変位まで同一である。方程式(10)では引数xが整数であり、そのため連続確率変数y∈[0,1)からの変化には床関数及び天井関数の使用が必要である。F(x)=yと設定し、方程式(10)の逆は次式をもたらす:
次に、整数変数に関する上記の技法を図3及び方法300に関して論じる。上述したように、方法300は、実行可能性への収束性を改善するために最適化アルゴリズムにおけるサンプルを更新するための計算システムの動作方法の一実装形態である。整数変数に関する上述の技法は、本明細書で論じる方法の何れにも同様に適用できることが理解されよう。
302で、プロセッサは、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を有する問題定義を受信し、制約関数の各々は変数集合の少なくとも1つの変数によって定義される。この実装形態では、変数集合の少なくとも1つの変数が整数変数である。
304で、変数集合のサンプル値がプロセッサによって受信される。これはシステムの何らかの既知の特性に基づくことができ、別のアルゴリズムによって提供されてもよく、ランダムに選択されてもよく、又は当業者によって認識される他の技法によって提供され得る。シミュレーテッドアニーリングの場合は温度等の進行パラメータの値も受信される。
306で、プロセッサは変数集合から変数を選択する。この例では整数変数だけを論じる。しかし、この方法は連続変数にも適用することができる。上記でより詳細に論じたように、他の変数タイプも更新することができる。以下でより詳細に論じるように、行為308~318までの順序は図3に示す順序から変更してもよいことが理解されよう。
308で、変数タイプを決定する。この例では変数タイプが整数であると決定される。
310で、整数変数のサンプリング分布を選択する。上述したように、整数変数に対して選択され得る単一の明確に定義された分布は存在しない。代わりに、条件付き分布からサンプリングするための技法を指すギブスサンプリングが実行される。サンプリング分布は、条件付き分配関数によって与えられる条件付き分布であるように選択される。
312で、変数のサンプル値及び変数を含む目的関数の1つ又は複数の項に基づく目的エネルギ変化バイアスを決定する。上述したように、整数変数ではこれは変数xkの有効線形バイアスとして計算され、δeff=ak+Σi≠kwikxiによって与えられる。
318で、上述したように、目的エネルギ変化及び制約エネルギ変化に基づいて変数の更新値をサンプリングする。更新値は、上記のように各制約の現在値及び各制約のタイプに基づいて選択することもできる。具体的には、所与の変数
について制約のどれも線形バイアスに寄与しない場合、上記の方程式(2)及び(3)によって与えられるように、新しい整数値が目的関数の分配関数からサンプリングされる。制約が線形バイアスに寄与する場合、制約からのバイアス値が同じ値を有するか又はよく定義されているセグメントが作成される。セグメントはその分配関数に比例する確率でランダムに選択され、次いでそのセグメント内から新しい整数値がランダムにサンプリングされる。各セグメントの分配関数は上記の方程式(8)に基づいて計算され、δeff及び
によって与えられる総エネルギ変化及び進行パラメータβに基づく。
320で、変数の全てが検討されているかどうかを判定する。他の整数変数がある場合、サンプリングのための上記のプロセスが繰り返される。他の変数タイプがある場合、サンプリングを上記の通り実行する。
322で、更新されたサンプルが返され、更新されたサンプルは変数集合の各変数の更新値を含む。
連続変数
上述したように、制約付き問題は、2値、離散、整数、及び連続等の様々な変数タイプにわたって定義することができる。変数タイプは、プロセッサによって選択されるサンプリング分布を決定することができる。整数変数についての上記の解説では、単一の明確に定義されたサンプリング分布がない可能性がある。同様に、連続変数でも単一の明確に定義されたサンプリング分布がない可能性がある。連続変数は任意の2つの特定の実数値を取ることができ、それらの2つの値の間の全ての実数値を取ることもできる。例えば連続変数は実数の範囲にわたる任意の値を取ることができる。最適化問題の多くの種類は、連続変数によって表される決定変数を含む。かかる連続変数の一部の例は、重量、体積、圧力、温度、速度、流量、及び標高を含む。
上述したように、制約付き問題は、2値、離散、整数、及び連続等の様々な変数タイプにわたって定義することができる。変数タイプは、プロセッサによって選択されるサンプリング分布を決定することができる。整数変数についての上記の解説では、単一の明確に定義されたサンプリング分布がない可能性がある。同様に、連続変数でも単一の明確に定義されたサンプリング分布がない可能性がある。連続変数は任意の2つの特定の実数値を取ることができ、それらの2つの値の間の全ての実数値を取ることもできる。例えば連続変数は実数の範囲にわたる任意の値を取ることができる。最適化問題の多くの種類は、連続変数によって表される決定変数を含む。かかる連続変数の一部の例は、重量、体積、圧力、温度、速度、流量、及び標高を含む。
最適化問題における連続変数に対処する1つの方法は、整数変数又は2値変数の集合を使用して連続変数を表すために連続変数の離散化を使用すること、及び再定義された変数タイプに対して上述の技法を使用することである。しかし、連続変数の離散化は計算的に効率的な解法を提供しない場合がある。例えば連続変数を整数変数に変換することは、任意の精度を有する連続変数をモデル化するために無限の上限を必要とし得る。無限の限界を有する整数変数は、多くの応用例において実装が現実的ではない場合がある。2値変数を使用することも同様に問題の規模を著しく増加させ、非効率な解法を招く可能性がある。
連続変数の逆変換サンプリング
上述したように、整数変数の逆変換サンプリング方法は連続変数にも容易に適応することができ、主な違いは分配関数の計算方法及びセグメントの分割方法である。連続変数の分配関数は次のように書くことができる:
上述したように、整数変数の逆変換サンプリング方法は連続変数にも容易に適応することができ、主な違いは分配関数の計算方法及びセグメントの分割方法である。連続変数の分配関数は次のように書くことができる:
前因子exp{-βA}は無視することができ、δeff>0又はδeff<0という2つのケースを区別する必要なく分配関数を解析的に計算することができる。
変数xkに隣接する制約gcを検討する場合、これはバインディング値
の場所に応じて変域[lb[k],ub[k]]を2つの変域に分割する。ここでは、
であるケースを簡潔に検討する。このケースでは、
である場合、分配関数は
によって与えられる。
上述した方法は、逆変換サンプリング又はセグメントにわたる同様のサンプリング方法を使用し、2次のケースを有する変数(整数又は連続)には使用することができない。
線形(x)項又は双線形(x×y)項を有する場合にのみ累積分布関数を解析的に反転させることができる。2次(x2)項の場合、累積分布関数を反転させることは、誤差関数(erf(x))又は虚数誤差関数(ierf(x))を計算する必要性等の著しい計算オーバヘッドを伴う。スライスサンプリングは、累積分布関数を反転させる必要なく条件付き分布関数からサンプリングするために有益に実行することができる。一部の実装形態では、スライスサンプリングは本明細書に記載する他の方法に含まれない変数にのみ使用することができる。しかし他の実装形態では、この方法は線形、双線形、及び2次相互作用を有する整数及び連続変数をサンプリングするために使用することができる。これは連続変数と他の変数タイプとの間の相互作用に対応することもできる。
上述した実装形態と同様に、2値変数、整数変数、及び連続変数を有する制約付き2次モデル(CQM)がある場合を検討されたい。B⊆{1,...,n}は2値変数の添字集合を表し、つまり、i∈Bの場合xi∈{0,1}となる。同様に、C⊆{1,...,n}は連続変数の添字集合を表し、つまりi∈Cの場合
となり、I⊆{1,...,n}は整数変数の添字集合を表し、つまり、i∈Iの場合
となる。
k∈C又はk∈Iである変数xkを更新する場合の制約なしのモデルを検討されたい。アニーリングソルバー及びギブスサンプリングを用いる一実装形態では、他の変数{xi}i≠kの値を所与とした変数xkの条件付き確率分布関数は
として書くことができ、但しβは最適化アルゴリズム(例えばアニーリングソルバー)の所与のインクリメントが行われるときの逆温度であり、δkは変数xkの有効線形バイアスであり、Akは定数d及び他の変数{xi}i≠kの寄与を含む定数係数である。βはアニーリングが進むにつれて増加する。
bkk=0である場合、2次項がないので整数変数又は連続変数のサンプリングは整数変数について前述した方法を使用して実行することができる。p(x)=exp(-λx)の累積分布関数は、整数変数及び連続変数の両方に関して反転させることができる。しかしbkk≠0の場合、もはや関数を容易に反転させることはできない。2次項及び混合変数相互作用に関するサンプリングの一実装形態を以下で説明する。
2次項及び混合変数相互作用の場合、所与の変数のサンプリングがスライスサンプリングによって実行され得る。スライスサンプリングの全般的な説明はNeal, R., Slice Sampling, The Annals of Statistics, 2003, Vol. 31, No. 3, 705-767に記載されている。スライスサンプリングは概して、変数の密度関数のグラフの下の領域から一様にサンプリングすることによってランダムなサンプルを抽出するためのマルコフ連鎖モンテカルロアルゴリズムである。変数x0の所与の値について、0とf(x0)との間で補助変数yが一様にサンプリングされる。f(x0)の曲線の下にあるyにおける線(又はスライス)から点(x,y)をサンプリングすることができる。サンプリングされる点のxの値が変数xの更新値になる。以下、スライスサンプリングについて記載するが、他の実装形態ではニュートンラプソン法、バイセクション法、又は当技術分野で知られている他の方法の助けを借りて逆変換サンプリングを使用できることが理解されよう。
CQM問題では、
と示すことができる変数xkの現在値に基づき、上記で示したように0と
との間から値yを一様にサンプリングすることができる。xkの新しい値は領域X={xk:P(xk)≧y}から一様にサンプリングすることができる。
u~RAND(0,1)を0から1までの乱数とする。条件
は
と書くことができ、但し
である。Cの定義内のこれらの最後の2つの項は
によって与えられる。xkが連続変数であると仮定すると、この不等式を解くことは、不等式のゼロである2つの値x1≦x2をもたらす。
2つのケースがある:
x1≧lb[k]及びx2≦ub[k]が成立する、xk∈[x1,x2]の連結領域において。xkの新しい値は[x1,x2]から一様にサンプリングすることができる。
xk∈[lb[k],x1]∨xk∈[x2,ub[k]]である非連結領域において、2つの非連結領域の一方がx1-lb[k]及び[x2,ub[k]]に比例する確率で選択される。xkの新しい値は、選択された領域から一様にサンプリングされる。
x1≧lb[k]及びx2≦ub[k]が成立する、xk∈[x1,x2]の連結領域において。xkの新しい値は[x1,x2]から一様にサンプリングすることができる。
xk∈[lb[k],x1]∨xk∈[x2,ub[k]]である非連結領域において、2つの非連結領域の一方がx1-lb[k]及び[x2,ub[k]]に比例する確率で選択される。xkの新しい値は、選択された領域から一様にサンプリングされる。
変数xkが整数である場合、2つの値x1、x2は連結領域内でx1,x2→[x1],[x2]で置換され、非連結領域内でx1,x2→[x1],[x2]で置換される。
次に制約に移り、「よりも小さい」不等式について以下で解説する。「よりも大きい」等式も同様に扱うことができ、等式制約は2つの不等式制約の組み合わせとして扱えることが理解されよう。
上記のように、(整数変数又は連続変数であり得る)変数xkを更新するとき、他の変数は固定される。制約は以下のように書くことができる:
この不等式の解は、
という仮定の下で
として示すことができる最大2つの解をもたらす。これらは上記の解説ではバインディング値とも呼ばれる。
の符号は、領域
が実行可能か(つまり制約を満たすか)どうかを判定する。連続変数に関する確率分布関数の一実装例を示す図13を参照されたい。
bkk>0の場合、不等式の2つの解は
となるものになる。不等式はセグメント
内で満たされる(放物線が軸の下にある)。これを図13の領域1306として示す。不等式が満たされず変数xkをサンプリングする確率を抑制すべき
(図13の領域1302)、不等式が満たされ、従ってxkをサンプリングする確率を抑制しない
(図13の領域1306)、及び不等式が違反され、確率が抑制される
(図13の領域1304)という3つのセグメントを定義することができる。制約に対してラグランジュλc>0を導入し、非正規化確率分布関数を次のように書くことができる
上記で、とりわけ方法800及び900に関してより詳細に論じたように、実行不可能解にペナルティを課すためにラグランジュ係数(ペナルティパラメータ)を提供することができる。抑制されたケースは次のように書くこともでき
P(xk=n)∝exp{-β[an2+bn+c]}
、但し次式が成立する。
P(xk=n)∝exp{-β[an2+bn+c]}
、但し次式が成立する。
変数xkの次の値が下記のようにサンプリングされる:変数
の現在値を所与とし、非正規化確率分布関数が計算され、
として示される。スライドyをy~U(0,P0)内で一様にサンプリングすることができる。セグメントのそれぞれについて、スライスyの上の下位領域Si、つまり
が計算される。
各Siは空とすることができ(セグメント内の全てのxがP(x)<yを有する場合)、又は上記のように切断され得る。これらの下位領域のそれぞれは、(連続変数では)領域の幅であり(整数変数では)領域内の整数の数である(非正規化)確率piを伴う。下位領域は確率
で選択される。次の値は、選択された領域から一様にサンプリングされる。選択されたセグメントからのサンプリングは、逆変換サンプリング又は当技術分野で知られている他のサンプリング技法によって実行することができる。
これらの原理は、変域の全てが相応に抑制された状態で上記の方程式に対する解がない場合、並びに解が1つしかない場合
に拡張できることが理解されよう。上記の内容は、
の一方又は両方が変数の変域外にある場合にも一般化することができる。
複数の制約がある場合、変数xkの変域は、一部の制約が違反されるセグメントの集合へと分割することができる。スライスyをサンプリングした後、この方法は、各セグメントが下位領域に分割され、P(x)≧yである状態で上記の実装形態と同様に進めることができる。次いで、下位領域の全幅(又は整数の数)に応じた確率で下位領域の1つがサンプリングされ、変数xkの新しい値は選択された下位領域内から一様にサンプリングされる。
α=2である違反制約のL2ノルムでは、上記の式が2次項を含むので逆変換型のサンプリングを行うことができない。しかし上述したように、制約が線形項又は双線形項を有する場合のL2ノルムの使用に対応するためにスライスサンプリングを使用することができる。2次項を有する制約ではL2ペナルティが4次項までもたらし、これは以下の解説の範囲を越える。4次のケースに対応するには本明細書に記載する方法の追加の修正が必要とされる場合があり、又はL0及びL1ノルムがこれらのケースで使用されてもよい。
指数関数内の2乗は上記のように展開することができる。xkの新しい値をサンプリングするために、上記のスライスサンプリング手順を使用することができる。
疑似コード:
次に、上記の方法の一実装例を記載する。
次に、上記の方法の一実装例を記載する。
入力:CQM、CQM上の状態x、各制約cの現在のラグランジュ乗数λc、各制約cの現在のエネルギ値E[c]、逆温度β、及び更新される整数変数xk。
有効バイアス関数は、状態、変数、及び制約を所与として次のように定義される:
(制約引数cを除外することは、主なCQMの目的による有効バイアスに戻るだけである)。有効バイアスの定義において、下付き文字のkは、全ての変数xkについて及び各隣接制約cについて量が再計算されることを示すことに留意されたい。
一実装例では以下の構造が定義される:
・「QuadraticPenalty」は、上記で定義した線形ペナルティ方程式で導入された量をエンコードする「quadratic」、「linear」、及び「offset」(全て実数)の特性を有する。これは、2次係数及び線形係数を有する2次ペナルティを記述するために使用され、「offset」はxk=0におけるペナルティの値である。
・「QuadraticPenalty」は、上記で定義した線形ペナルティ方程式で導入された量をエンコードする「quadratic」、「linear」、及び「offset」(全て実数)の特性を有する。これは、2次係数及び線形係数を有する2次ペナルティを記述するために使用され、「offset」はxk=0におけるペナルティの値である。
加算演算は次のようにも定義される:2つの「QuadraticPenalty」オブジェクトQP1及びQP2を所与とし、以下のようにQP=QP1+QP2と定義する:
QP.quadratic=QP1.quadratic+QP2.quadratic
QP.linear=QP1.linear+QP2.linear
QP.offset=QP1.offset+QP2.offset。
QP.quadratic=QP1.quadratic+QP2.quadratic
QP.linear=QP1.linear+QP2.linear
QP.offset=QP1.offset+QP2.offset。
・「ConstraintPoint」は、「value」(整数)、「left」及び「right」(どちらも「QuadraticPenalty」)の特性を有する。これは、1つ又は複数のペナルティが異なる2次関数に変化するxiの変域に沿った点を記述する。「value」はxkの値を指し、「left」及び「right」は「value」に最も近いところで0になる異なる2次ペナルティ(又は2次ペナルティの和)を指す。「left」は負の「傾き」を有するxkの変域の負の方向から来るペナルティを指し、「right」は正の「傾き」を有する変域の正の方向に行くペナルティを指す。2つの「ConstraintPoint」オブジェクトCP1及びCP2について、加算はCP1.value==CP2.valueの場合にのみ定義される。これが満たされる場合、CP=CP1+CP2が設定され、CP.value=CP1.value、CP.left=CP1.left+CP2.left、及びCP.right=CP1.right+CP2.rightとなる。
・「PartialSegment」は、「lower_bound」(整数)及び「quadratic_penalty」(「QuadraticPenalty」)の特性を有する。これは、各セグメント(上記の数学的定式化の節の中で定義したセグメント)の始点、及び下限に続くセグメントの部分内の変数に適用される2次ペナルティの合計に対応する。
・「Segment」は、「lower_bound」、「upper_bound」、及び「quadratic_penalty」の特性を有する。
一実装例では、アルゴリズムが次のように進む:
サブルーチン1:
sample_integer_continuous_variable
入力:
逆温度ベータ
現在の状態x
更新する変数xk
ラグランジュリスト
CQMモデル
tmp_constraints及びconstraintsと呼ばれるConstraintPointオブジェクトの2つの空の配列を初期化する
partial_segmentsと呼ばれるPartialSegmentオブジェクトの空の配列を初期化する
segmentsと呼ばれるSegmentオブジェクトの空の配列を初期化する
目的関数からquadratic_bias,linear_biasを得る
IF xkが整数変数である THEN:
update_integer=1
ELSE:
update_integer=0
END IF
num_active_constraints=0
FOR 変数xkに隣接する各制約c DO:
lagrangianはラグランジュパラメータである
tmp_constraints,num_active_constraints=PARSE_CONSTRAINT(c,lagrangian,update_integer,tmp_constraints,xk_lower,xk_upper,num_active_constraints)
END FOR
SORT tmp_constraintsを値によって、次いで2次が最初でオフセットが最後になるように左右のペナルティによって constraints,num_constraints=COLLAPSE_CONSTRAINTS(tmp_constraints,num_active_constraints) partial_segments,num_partial_segments=MAKE_PARTIAL_SEGMENTS(quadratic_bias,linear_bias,lower_bound,upper_bound,collapsed_constraints,num_collapsed_constraints,partial_segments,update_integer) segments,num_segments=MAKE_SEGMENTS(partial_segments,num_partial_segments,lower_bound,upper_bound,segments,update_integer)
new_value=SAMPLE_VALUE_FROM_SEGMENTS(segments,num_segments,beta)
RETURN new_value
サブルーチン1:
sample_integer_continuous_variable
入力:
逆温度ベータ
現在の状態x
更新する変数xk
ラグランジュリスト
CQMモデル
tmp_constraints及びconstraintsと呼ばれるConstraintPointオブジェクトの2つの空の配列を初期化する
partial_segmentsと呼ばれるPartialSegmentオブジェクトの空の配列を初期化する
segmentsと呼ばれるSegmentオブジェクトの空の配列を初期化する
目的関数からquadratic_bias,linear_biasを得る
IF xkが整数変数である THEN:
update_integer=1
ELSE:
update_integer=0
END IF
num_active_constraints=0
FOR 変数xkに隣接する各制約c DO:
lagrangianはラグランジュパラメータである
tmp_constraints,num_active_constraints=PARSE_CONSTRAINT(c,lagrangian,update_integer,tmp_constraints,xk_lower,xk_upper,num_active_constraints)
END FOR
SORT tmp_constraintsを値によって、次いで2次が最初でオフセットが最後になるように左右のペナルティによって constraints,num_constraints=COLLAPSE_CONSTRAINTS(tmp_constraints,num_active_constraints) partial_segments,num_partial_segments=MAKE_PARTIAL_SEGMENTS(quadratic_bias,linear_bias,lower_bound,upper_bound,collapsed_constraints,num_collapsed_constraints,partial_segments,update_integer) segments,num_segments=MAKE_SEGMENTS(partial_segments,num_partial_segments,lower_bound,upper_bound,segments,update_integer)
new_value=SAMPLE_VALUE_FROM_SEGMENTS(segments,num_segments,beta)
RETURN new_value
サブルーチン2:
PARSE_CONSTRAINT
入力:
制約c
lagrangian
update_integer
tmp_constraints
num_active_constraints
lower_bound
upper_bound
制約cから2次係数b_kk、有効線形バイアスdelta_k、及びオフセットA_kを得る
IF b_kk=0 THEN
#線形制約
IF delta_k==0 THEN
この制約をスキップする
END IF
xc=-delta_k/A_k
if update_integer THEN
IF delta_k>0 THEN
xc=CEIL(xc)
ELSE
xc=FLOOR(xc)
END IF
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian*abs(delta_k))
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,lagrangian*delta_k,-lagrangian*delta_k*xc)
ELSE IF L2ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*delta_k**2,-lagrangian*delta_k*A_k,lagrangian*A_k**2)
END IF
CP=ConstraintPoint(xc)
IF delta_k>0 THEN
CP.right=QP
ELSE
CP.left=QP
END IF
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
ELSE
#この制約は2次である。
#ここでx1及びx2は実数であればソートされる
x1,x2=SOLVE_QUADRATIC_EQUATION(b_kk,delta_k,A_k)
IF (x1<=x2)AND(x1,x2が実数) THEN
IF b_kk>0 THEN
IF update_integer THEN
x1=CEIL(x1)
x2=FLOOR(x2)
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF #この場合L2ペナルティは使えない
CP=ConstraintPoint(x1)
CP.left=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
CP=ConstraintPoint(x2)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
ELSE IF b_kk<0 THEN
IF update_integer THEN
x1=FLOOR(x1)
x2=CEIL(x2)
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF
CP=ConstraintPoint(x1)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
CP=ConstraintPoint(x2)
CP.left=-QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
END IF
ELSE IF x1,x2が複素数である THEN
IF b_kk>0 THEN
#制約は常に違反される
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF
CP=ConstraintPoint(lower_bound)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
END IF
END IF
END IF
RETURN tmp_constraints,num_active_constraints
PARSE_CONSTRAINT
入力:
制約c
lagrangian
update_integer
tmp_constraints
num_active_constraints
lower_bound
upper_bound
制約cから2次係数b_kk、有効線形バイアスdelta_k、及びオフセットA_kを得る
IF b_kk=0 THEN
#線形制約
IF delta_k==0 THEN
この制約をスキップする
END IF
xc=-delta_k/A_k
if update_integer THEN
IF delta_k>0 THEN
xc=CEIL(xc)
ELSE
xc=FLOOR(xc)
END IF
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian*abs(delta_k))
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,lagrangian*delta_k,-lagrangian*delta_k*xc)
ELSE IF L2ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*delta_k**2,-lagrangian*delta_k*A_k,lagrangian*A_k**2)
END IF
CP=ConstraintPoint(xc)
IF delta_k>0 THEN
CP.right=QP
ELSE
CP.left=QP
END IF
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
ELSE
#この制約は2次である。
#ここでx1及びx2は実数であればソートされる
x1,x2=SOLVE_QUADRATIC_EQUATION(b_kk,delta_k,A_k)
IF (x1<=x2)AND(x1,x2が実数) THEN
IF b_kk>0 THEN
IF update_integer THEN
x1=CEIL(x1)
x2=FLOOR(x2)
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF #この場合L2ペナルティは使えない
CP=ConstraintPoint(x1)
CP.left=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
CP=ConstraintPoint(x2)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
ELSE IF b_kk<0 THEN
IF update_integer THEN
x1=FLOOR(x1)
x2=CEIL(x2)
END IF
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF
CP=ConstraintPoint(x1)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
CP=ConstraintPoint(x2)
CP.left=-QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
END IF
ELSE IF x1,x2が複素数である THEN
IF b_kk>0 THEN
#制約は常に違反される
IF L0ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(0,0,lagrangian)
ELSE IF L1ペナルティを使用している THEN
QP=QUADRATIC_PENALTY(lagrangian*b_kk,lagrangian*delta_k,lagrangian*A_k)
END IF
CP=ConstraintPoint(lower_bound)
CP.right=QP
tmp_constraints[num_active_constrains]=CP
num_active_constraints++
END IF
END IF
END IF
RETURN tmp_constraints,num_active_constraints
以下のサブルーチンはtmp_constraintsを走査し、同じ値内に2つ以上の制約点がある場合、それらの和である1つだけが残るようにする。
サブルーチン3:
COLLAPSE_CONSTRAINTS
入力:
tmp_constraints
num_active_constraints
constraints
num_collapsed_constraints=0に設定する
current_constraint=tmp_constraints[0]
FOR c_i=1,num_active_constraints-1 DO
next_constraint=tmp_constraints[c_i]
IF current_constraint.value==next_constraint.value THEN
current_constraint=current_constraint+next_constraint
ELSE
constraints[num_collapsed_constraints]=current_constraint
current_constraint=next_constraint
num_collapsed_constraint++
END IF
END FOR
constraints[num_collapsed_constraints]=current_constr
num_collapsed_constraint++
RETURN constraints,num_collapsed_constraints
COLLAPSE_CONSTRAINTS
入力:
tmp_constraints
num_active_constraints
constraints
num_collapsed_constraints=0に設定する
current_constraint=tmp_constraints[0]
FOR c_i=1,num_active_constraints-1 DO
next_constraint=tmp_constraints[c_i]
IF current_constraint.value==next_constraint.value THEN
current_constraint=current_constraint+next_constraint
ELSE
constraints[num_collapsed_constraints]=current_constraint
current_constraint=next_constraint
num_collapsed_constraint++
END IF
END FOR
constraints[num_collapsed_constraints]=current_constr
num_collapsed_constraint++
RETURN constraints,num_collapsed_constraints
以下のサブルーチンは部分セグメント、つまり条件付き確率分布関数がその後で係数を変更する点を作成する。
サブルーチン4:
MAKE_PARTIAL_SEGMENTS
入力:
quadratic_bias
linear_bias
lower_bound
upper_bound
collapsed_constraints
num_collapsed_constraints
partial_segments
update_integer
//L1の場合
penalty_sum=QUADRATIC_PENALTY(quadratic_bias,linear_bias,0);
FOR i=0,num_collapsed_constraints-1 DO
IF collapsed_constraints[i].value<lower_bound THEN
penalty_sum+=collapsed_constraints[i].right
ELSE
penalty_sum+=collapsed_constraints[i].left
END IF
END FOR
current_value=lower_bound
num_partial_segments=0
FOR i=0,num_collapsed_constraints-1 DO
IF collapsed_constraints[i].value<lower_bound THEN
CONTINUE
END IF
IF collapsed_constraints[i].value>lower_bound+update_integer THEN
BREAK
END IF
IF collapsed_constraints[i].rightが存在する THEN
IF current_value!=collapsed_constraints[i].value THEN
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum;
num_partial_segments++;
END IF
current_value=collapsed_constraints[i].value
penalty_sum+=collapsed_constraints[i].right
END IF
IF collapsed_constraints[i].leftが存在する THEN
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum;
current_value=constraints[i].value+update_integer;
penalty_sum-=constraints[i].left;
num_partial_segments++;
END IF
END FOR
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum
num_partial_segments++
RETURN partial_segments,num_partial_segments
MAKE_PARTIAL_SEGMENTS
入力:
quadratic_bias
linear_bias
lower_bound
upper_bound
collapsed_constraints
num_collapsed_constraints
partial_segments
update_integer
//L1の場合
penalty_sum=QUADRATIC_PENALTY(quadratic_bias,linear_bias,0);
FOR i=0,num_collapsed_constraints-1 DO
IF collapsed_constraints[i].value<lower_bound THEN
penalty_sum+=collapsed_constraints[i].right
ELSE
penalty_sum+=collapsed_constraints[i].left
END IF
END FOR
current_value=lower_bound
num_partial_segments=0
FOR i=0,num_collapsed_constraints-1 DO
IF collapsed_constraints[i].value<lower_bound THEN
CONTINUE
END IF
IF collapsed_constraints[i].value>lower_bound+update_integer THEN
BREAK
END IF
IF collapsed_constraints[i].rightが存在する THEN
IF current_value!=collapsed_constraints[i].value THEN
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum;
num_partial_segments++;
END IF
current_value=collapsed_constraints[i].value
penalty_sum+=collapsed_constraints[i].right
END IF
IF collapsed_constraints[i].leftが存在する THEN
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum;
current_value=constraints[i].value+update_integer;
penalty_sum-=constraints[i].left;
num_partial_segments++;
END IF
END FOR
partial_segments[num_partial_segments].lower_bound=current_value
partial_segments[num_partial_segments].quadratic_penalty=penalty_sum
num_partial_segments++
RETURN partial_segments,num_partial_segments
以下のサブルーチンは、上記のサブルーチンによって作成された部分セグメントの配列からセグメントを作成する。
サブルーチン5:
MAKE_SEGMENTS
入力:
partial_segments
num_partial_segments
lower_bound
upper_bound
segments
update_integer
num_segments=num_partial_segments-1;
segment_idx=0;
IF num_segments>0 THEN
FOR i=0,num_partial_segments-2 DO
IF partial_segments[i].lower_bound>=lower_bound THEN
segments[segment_idx].lower_bound=partial_segments[i].lower_bound
segments[segment_idx].upper_bound=partial_segments[i+1].lower_bound-update_integer
segments[segment_idx].quadratic_penalty=partial_segments[i].quadratic_penalty
segment_idx++
ELSE
num_segments-=1
END IF
END FOR
ELSE
#部分セグメントがない場合
num_segments++;
segments[0].lower_bound=partial_segments[0].lower_bound;
segments[0].upper_bound=partial_segments[0].lower_bound;
segments[0].quadratic_penalty=partial_segments[0].quadratic_penalty;
END IF
RETURN segments,num_segments
MAKE_SEGMENTS
入力:
partial_segments
num_partial_segments
lower_bound
upper_bound
segments
update_integer
num_segments=num_partial_segments-1;
segment_idx=0;
IF num_segments>0 THEN
FOR i=0,num_partial_segments-2 DO
IF partial_segments[i].lower_bound>=lower_bound THEN
segments[segment_idx].lower_bound=partial_segments[i].lower_bound
segments[segment_idx].upper_bound=partial_segments[i+1].lower_bound-update_integer
segments[segment_idx].quadratic_penalty=partial_segments[i].quadratic_penalty
segment_idx++
ELSE
num_segments-=1
END IF
END FOR
ELSE
#部分セグメントがない場合
num_segments++;
segments[0].lower_bound=partial_segments[0].lower_bound;
segments[0].upper_bound=partial_segments[0].lower_bound;
segments[0].quadratic_penalty=partial_segments[0].quadratic_penalty;
END IF
RETURN segments,num_segments
最後のサブルーチンはセグメントから値をサンプリングし、変数が整数(6a)か連続(6b)かに基づいて異なる。
サブルーチン6a:
SAMPLE_VALUE_FROM_SEGMENTS
入力:
beta
current_value
segments
num_segments
update_integer
FOR 各セグメント DO
IF update_integer THEN
セグメント分配関数を方程式(8)で計算する
ELSE
セグメント分配関数を方程式(9,10)で計算する
END IF
END FOR
SAMPLE その分配関数に比例した確率で1つのセグメントを
SAMPLE このセグメントに対する逆変換サンプリング方法を使用して新しい値を
RETURN 新しい値
SAMPLE_VALUE_FROM_SEGMENTS
入力:
beta
current_value
segments
num_segments
update_integer
FOR 各セグメント DO
IF update_integer THEN
セグメント分配関数を方程式(8)で計算する
ELSE
セグメント分配関数を方程式(9,10)で計算する
END IF
END FOR
SAMPLE その分配関数に比例した確率で1つのセグメントを
SAMPLE このセグメントに対する逆変換サンプリング方法を使用して新しい値を
RETURN 新しい値
サブルーチン6b:
SAMPLE_VALUE_FROM_SEGMENTS
入力:
beta
current_value
segments
num_segments
update_integer
current_valueを含むセグメントからlog f0を計算する
SAMPLE u=RAND(0,1)
FOR 各セグメント DO
P(x)>=f0となる下位領域を計算する
各下位領域の確率をそのサイズに比例して設定する
END FOR
SAMPLE それぞれの確率に従って1つの下位領域をランダムに
SAMPLE 選択された下位領域から新しい値を一様に
RETURN 新しい値
SAMPLE_VALUE_FROM_SEGMENTS
入力:
beta
current_value
segments
num_segments
update_integer
current_valueを含むセグメントからlog f0を計算する
SAMPLE u=RAND(0,1)
FOR 各セグメント DO
P(x)>=f0となる下位領域を計算する
各下位領域の確率をそのサイズに比例して設定する
END FOR
SAMPLE それぞれの確率に従って1つの下位領域をランダムに
SAMPLE 選択された下位領域から新しい値を一様に
RETURN 新しい値
代替的実装形態では、連続変数のサンプリングは、他の変数タイプ(即ち離散、整数、及び2値)の値を固定した状態で線形計画モデルから行うことができる。このことは、問題に複数の変数を追加することなく、連続変数を有するCQMを解くことを有益に可能にすることができ、他の問題変数の収束と同様の速度で連続変数が最適解に向けて収束することをもたらし得る。変数タイプが連続である最適化問題を解く場合、サンプリングは線形計画モデルに基づいて行うことができる。線形最適化とも呼ばれる線形計画法は、線形関係を有する変数の数学的モデルである。線形計画問題を解くための方法は当技術分野でよく知られている。
シミュレーテッドアニーリング等の最適化アルゴリズムの各掃引の後、整数変数、2値変数、及び離散変数の値をそれらの更新されたサンプル値に固定することにより、線形計画問題を作成することができる。次いで、問題全体の連続変数の更新値を定義するために線形計画問題の解を見つけることができる。線形問題の全般的な構造は最適化アルゴリズムの各ステージにおいて変化せず、従って各ステージで線形計画モデルを解くための低いオーバヘッドが有益にあり得る。とりわけ最適化アルゴリズムの収束に多数の反復が必要な場合、各ステージにおいて新たな線形計画モデルを構築することは大きいオーバヘッドを生じさせる可能性があるため、このことは連続変数を解く計算要件を有益に減らすことができる。
一実装形態では、最適化は問題内の任意の整数変数、2値変数、又は離散変数について、上記で論じたように様々な実装形態に従って進めることができる。2次相互作用を有する変数又は連続変数と他の変数タイプとの間の相互作用についても、上述のスライスサンプリング等によって更新値をサンプリングすることができる。これらの変数の更新値がサンプリングされると、残りの連続変数は、他の変数の値がその更新値に固定された状態で線形計画問題から値をサンプリングさせることができる。
以下で説明するような線形計画モデルは、連続変数間の2次相互作用、又は連続変数と他の変数タイプとの間の相互作用をサポートしないことが理解されよう。一部の実装形態では、上記で論じた条件付き確率分布からのサンプリングと、線形計画モデルからのサンプリングとの組み合わせが使用され得ることが更に理解されよう。例えば2次項又は他の変数タイプとの相互作用を有する連続変数は、スライスサンプリングによる条件付き確率分布からのサンプリングを使用して上記で論じたようにサンプリングすることができる。次いでこれらの連続変数は他の変数タイプと共に固定することができ、残りの連続変数は以下でより詳細に論じるように線形計画モデルからサンプリングされた値を有することができる。
図14は、制約付き2次モデルとして表現され得る制約付き問題若しくは他の問題の解を見つけるための、又は他のアルゴリズムへの入力として使用され得るサンプル解を生成するための計算システムの動作方法の一例の流れ図であり、問題は1つ又は複数の連続変数を有する。図14は、方法1400を示す。方法1400は、少なくとも1つのデジタル又は古典プロセッサと量子プロセッサとを含むハイブリッド計算システム、例えば図1のハイブリッド計算システム100上で実行されてもよく、又は少なくとも1つのデジタル若しくは古典プロセッサを含む古典計算システムによって実行され得る。
方法1400は行為1402~1444を含むが、図示の行為の数は一例であり、一部の実装形態では特定の行為を省略することができ、更なる行為を追加することができ、及び/又は行為の順序を変更することができることを当業者なら理解されよう。
方法1400は、例えば別のルーチンからの呼び出し若しくは呼びかけに応答して、又はユーザによる入力に応答して1402から開始する。
1402で、プロセッサは問題定義を受信する。問題定義は、変数集合、変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含み、制約関数のそれぞれは変数集合の少なくとも1つの変数によって定義される。問題定義は、ユーザから受信され(例えば入力デバイスによって入力され)、別のプロセッサから伝送され、メモリから取得され、又はプロセッサによって実行される別のプロセスの出力として提供され得る。目的関数は2次関数とすることができ、問題定義は2次最適化問題を定義し得る。変数集合は、連続変数、離散変数、2値変数、及び整数変数のうちの1つ又は複数を含み得る。制約関数は、1つ又は複数の2次等式又は不等式制約関数を含み得る。
一実装形態では、問題定義を
によって定義することができ、制約は
によって定義される。但し上記で論じたように、xiは(整数及び2値変数を含むことができ、
である)離散変数の集合であり、aiは離散変数の線形係数であり、bi,jは離散変数間の2次係数であり、
は制約mに関する離散変数の線形係数であり、
は離散変数m間の2次係数であり、cmは定数であり、ylは連続変数であり
、elは連続変数の線形バイアスであり、
は制約mに関する連続変数の線形係数であり、Emは制約mのエネルギである。
上記の問題定義は、連続変数と他の変数との間の2次相互作用を含まない。このモデルは、混合整数線形計画(MILP)問題並びに混合整数2次計画(MIQP)問題の一部のケースをモデル化するために有益に使用することができる。
1404で、プロセッサは目的関数のサンプル解を初期化する。サンプル解は目的関数に対するランダム解とすることができる。ランダム解は、変数空間全体からランダムに選択することができ、又は問題定義の既知の特性若しくは他の情報に基づいて変数空間の或る範囲内で選択され得る。サンプル解は、別のアルゴリズムによって生成されてもよく又はユーザによる入力として提供されてもよい。
1406で、プロセッサは進行パラメータを初期化する。進行パラメータは、最適化アルゴリズムを定義する増分的に変化する値の集合とすることができる。例えば進行パラメータは逆温度とすることができ、逆温度は初期の高温から最終的な低温までインクリメントすることができる。一部の実装形態では、逆温度はシミュレーテッドアニーリングアルゴリズムのための進行パラメータとして提供される。逆温度の選択は上記のように実行することができる。
1408で、プロセッサは任意でペナルティパラメータを初期化する。以下でより詳細に論じるように、一部の実装形態ではペナルティパラメータはラグランジュ乗数とすることができる。他の実装形態では、ペナルティパラメータは一定値又は1つ若しくは複数の他の変数に依存する値として選択され得る。
1410で、プロセッサは、行為1404で定義した変数の初期状態を使用して連続変数の線形計画問題を初期化する。
上述したように、ペナルティパラメータもモデルに含めることができ、次式が与えられる:
以下の制約を伴う:
但しLmは上述したようにペナルティパラメータとも呼ばれるラグランジュ乗数であり、vmは制約mに関する現在の違反の大きさである。モデルは最適化アルゴリズムの開始前に有益に構築することができ、最適化の各ステージ後の再構築を必要としない。全般的なモデル構造(モデルリムとも呼ぶ)は変化せず、モデルの迅速な更新及び解決を有益に可能にしている。変化するモデルの部分は、目的関数及び固定変数(上式の右辺)によって定義される部分であり、これらの変数の更新のたびに計算することができる。
1412で、プロセッサは任意でサンプル値における各制約関数の現在値を計算する。例えば制約関数は、与えられる制約に応じてΣAc,ixi+bc=0として又は不等式として与えることができる。
1414で、最適化アルゴリズムに進行パラメータを与えること等により、プロセッサが最適化アルゴリズムのステージをインクリメントする。最適化アルゴリズムは、シミュレーテッドアニーリング、パラレルテンパリング、マルコフ連鎖モンテカルロ技法、分枝限定アルゴリズム、及び貪欲アルゴリズムを含むことができ、これらは古典コンピュータによって実行され得る。最適化アルゴリズムは、量子アニーリング、量子近似最適化アルゴリズム(QAOA)又は他のノイズあり中規模量子(NISQ)アルゴリズム、量子実装耐障害最適化法、又は他の量子最適化アルゴリズム等、量子コンピュータによって実行されるアルゴリズムも含み得る。量子コンピュータは、量子アニーリングプロセッサ又はゲートモデルベースのプロセッサを含み得る。連続的な反復にわたり、インクリメントされた最適化アルゴリズムがサンプルを提供し得る。
最適化アルゴリズム(例えばシミュレーテッドアニーリング)の反復kにおいて、以下で論じるように及び上記でより詳細に論じたように各整数変数、2値変数、及び離散変数に対してサンプリングが実行され、連続変数の値が前の反復(k-1)から固定された状態で問題が検討される:
次式を伴う:
xi∈Z及びyl∈R、yl≧0
1416で、プロセッサは変数集合の第1の変数集合からi番目の変数を選択する。第1の変数集合は任意の整数変数、2値変数、又は離散変数を含むことができ、第2の変数集合は任意の連続変数を含む。i番目の変数は、行為1404で初期化されたサンプルからの現在値を有する。
1418で、プロセッサは変数の変数タイプを決定する。変数タイプは、例えば2値、離散、及び整数のうちの1つであり得る。問題はこれらの変数タイプの混合、これらの変数タイプの1つだけ、及びその組み合わせを含み得ることが理解されよう。
1420で、プロセッサは変数タイプに基づいてサンプリング分布を選択する。変数タイプが2値である一部の実装形態では、選択されるサンプリング分布がベルヌーイ分布であり得る。変数タイプが離散である他の実装形態では、選択されるサンプリング分布がソフトマックス分布であり得る。或いは一部の実装形態では、ワンホット制約を使用して離散変数が2値変数として含まれてもよく、サンプリング分布がベルヌーイ分布であり得る。変数タイプが整数である他の実装形態では、サンプリングがギブスサンプリング、つまり現在の状態を所与とした条件付き確率に基づくサンプリングによって実行され得る。或いは、条件付き確率関数が変数タイプによって決定される状態で、ギブスサンプリングを全ての変数タイプに対して実行することができる。整数変数は2値変数に変換することもでき、ベルヌーイ分布からのサンプリングが実行され得る。整数変数及び連続変数に関するサンプリングは、上記のようにスライスサンプリングによって行うこともできる。
1422で、プロセッサは、他の変数の全ての現在値を所与として検討中の変数に作用する目的エネルギバイアスを決定する。上述したように、最適化問題はエネルギを定義する目的関数を用いて構造化することができ、最適化の間、プロセッサはこのエネルギを低減する目的で解を返す。検討中の変数が2値変数であるような一部の実装形態では、目的エネルギ変化
は、以前の解のエネルギ及び現在のサンプル値のエネルギに基づいて決定することができ、エネルギの減少は解の改善を示唆する。
1424で、プロセッサは、検討中の変数に作用する制約エネルギバイアスを他の変数の全ての現在値及びその変数を含む制約関数のそれぞれを所与として決定する。上記で論じたように、制約エネルギバイアスは2値変数ではΔE=Σc(|δc,1|n-|δc,0|n)で定義することができる。各制約に適用されるペナルティは違反の大きさによって決定され得る。一部の実装形態では、プロセッサは、目的エネルギ変化及び制約エネルギ変化に基づいて総エネルギ変化を決定する。制約を考慮したエネルギ項の追加により、プロセッサによって制約関数がこのエネルギに間接的に含められる。
1426で、プロセッサは、上記でより詳細に論じたように目的エネルギバイアス及び制約エネルギバイアス並びに進行パラメータに基づき、サンプリング分布から変数の更新値をサンプリングする。
1428で、プロセッサは第1の変数集合の変数の全てが検討されているかどうかを評価する。変数の全てが検討されていない場合、制御は行為1416に戻り、次の変数が選択される。変数の全てが検討されると、制御は行為1430に移る。一部の実装形態では、プロセッサは第1の変数集合の各変数を順番に増分的に検討し、第1の変数集合の最後の変数が検討されているときに第1の変数集合の変数の全てが検討されていると評価することができる。
1430で、プロセッサは第1の変数集合の値を上記の内容からのその更新値に基づいて固定する。
1432で、プロセッサは第2の変数集合の連続変数について線形計画問題を解き、連続変数の更新値をサンプリングする。線形計画問題は、内点法又はシンプレックスアルゴリズムを使用すること等、当技術分野で知られている任意の技法を使用して解くことができる。
連続変数を考慮する場合、整数変数、2値変数、及び離散変数の値が固定された状態でサンプリングを行う。つまり反復kにおける所与の整数/2値状態、つまり変数
を使用し、以下の線形計画問題が連続変数の値をサンプリングするために使用される:
上記の方程式ではqmは正の連続変数であり、umはラグランジュ乗数である。qmは線形計画問題における実行不可能性を回避するために各制約の左辺に加えられる。次いでqmはペナルティを課せられ、ラグランジュ乗数の現在値において目的関数に加えられる。線形計画ソルバーは、問題の連続変数と共にqmの値を単独で定義する。この緩和技法は実行不可能性を回避するが、ペナルティが課される。
最適化アルゴリズムの各ステージにおいて、線形計画問題の構造は変化しないが、制約の右辺及び変数qmの係数は更新される。
大規模な問題では、線形計画問題を複数の小さな線形計画問題(下位問題)に有益に分割することができ、連続変数が下位問題の1つにランダムに割り当てられる。異なる下位問題内の変数間の相互作用の数を減らすために、この割り当てを最適化することもできる。所与の下位問題内の変数についてサンプリングするとき、他の全ての下位問題の連続変数の値がその最新値に固定される。このことは、連続変数を他の変数と同じ速度で最適点近く又は大域的最適点に収束させることを有益に可能にし得る。
例えば連続変数集合としてのGを所与とし、等しいサイズGn={xi|i in Gn}のN個のグループに変数をランダムに分割することができる。各グループに対して変数及び制約を定義することができ、各変数及び制約グループに対して線形計画問題を構築することができる。各線形計画問題は、関係する変数を更新しながら逐次的に解くことができる。
1434で、プロセッサは、線形計画問題の結果に基づいて連続変数の状態を更新する。
1436で、プロセッサは、連続変数のサンプリング値に基づいて目的関数及び制約関数のエネルギバイアスを更新する。
1438で、プロセッサは進行パラメータ、例えばシミュレーテッドアニーリングの温度をインクリメントする。
1440で、任意で各制約のペナルティパラメータを調整することができる。一部の実装形態では、ペナルティパラメータはi番目の変数及び進行パラメータによって定義される制約関数のエネルギの変化に基づいて調整され得る。他の実装形態では、ペナルティパラメータは、以下でより詳細に論じる方法800及び900で説明するように調整することができる。
1442で、プロセッサは1つ又は複数の終了基準を評価する。一部の実装形態では、終了基準は進行パラメータの値であり得る。他の実装形態では、終了基準は、反復回数、時間量、更新間の平均エネルギ変化閾値、変数の現在値の品質の測度、又は当技術分野で知られている他の測定基準を含み得る。終了基準が満たされない場合、方法は行為1414を継続する。上述したように、目的関数に関する最適化アルゴリズムのステージをインクリメントすることは、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムをインクリメントすることを含み得る。他の実装形態では、最適化アルゴリズムがMCMCアルゴリズム又は貪欲アルゴリズムであり得る。
1つ又は複数の終了基準が満たされている場合、制御は1444に移り、そこで解が出力される。1444で、方法1400は例えば再び呼び出されるまで終了する。行為1444における解の出力は、量子アニーリングアルゴリズム等の他のアルゴリズムに渡すことができる。
一部の実装形態では、行為1444で解を出力した後、方法1400は、行為1404で初期化されている新しいサンプルを用いて再び開始することができる。一部の実装形態では、方法1400は、異なる初期化されたサンプル又はランダムに生成された一連のサンプルから開始して複数回並行して実行され得る。一部の実装形態では、解を対にすることができ、クロスボルツマン更新を用いて一連の解を評価するために2値問題を構築することができる。
上述した疑似コードと組み合わせることができる以下の疑似コードにおいて一実装例を記載する。
上記で説明した方法、プロセス、又は技法は、1つ又は複数の非一時的プロセッサ可読媒体上に記憶される一連のプロセッサ可読命令によって実装することができる。上記で説明した方法、プロセス、又は技法の方法の一部の例は、断熱量子コンピュータ、又は量子アニーラ、又は断熱量子コンピュータ若しくは量子アニーラの動作をプログラムし或いは制御するためのシステム、例えば少なくとも1つのデジタルプロセッサを含むコンピュータ等の専用デバイスによって部分的に実行される。上記で説明した方法、プロセス、又は技法は様々な行為を含むことができるが、代替例では特定の行為を省略することができ及び/又は追加の行為を加えることができることを当業者なら理解されよう。示した行為の順序は例示目的で示したに過ぎず、代替例では異なり得ることを当業者なら理解されよう。上記で説明した方法、プロセス、又は技法の例示的な行為又は操作の一部は反復的に実行される。上記で説明した方法、プロセス、又は技法の一部の行為はそれぞれの反復中に、複数の反復の後で、又は全ての反復の終わりに実行することができる。
要約の中で記載した内容を含む例示した実装形態についての上記の説明は、網羅的であることも、実装形態を開示した厳密な形態に限定することも意図しない。本明細書では特定の実装形態及び例を例示目的で記載したが、当業者によって理解されるように本開示の趣旨及び範囲から逸脱することなしに様々な等価の修正を加えることができる。本明細書で示した様々な実装形態の教示は、必ずしも上記で概して説明した量子計算のための例示的方法に限らず量子計算の他の方法に適用することができる。
上記で説明した様々な実装形態は、更なる実装形態をもたらすために組み合わせることができる。本明細書で言及した及び/又は出願データシートに列挙した同一出願人による米国特許出願公開公報、米国特許出願、外国特許、及び外国特許出願の全ては、これだけに限定されないが以下を含め参照によりその全体を本明細書に援用する:
米国仮特許出願第62/951,749号、
米国仮特許出願第63/174,097号、
米国仮特許出願第63/250,466号、
米国特許出願公開第2014/0344322号、及び同第2020/0234172号、並びに
米国特許第7,533,068号、同第8,008,942号、同第8,195,596号、同第8,190,548号、及び同第8,421,053号。
米国仮特許出願第62/951,749号、
米国仮特許出願第63/174,097号、
米国仮特許出願第63/250,466号、
米国特許出願公開第2014/0344322号、及び同第2020/0234172号、並びに
米国特許第7,533,068号、同第8,008,942号、同第8,195,596号、同第8,190,548号、及び同第8,421,053号。
上記で詳述した説明に照らして、これらの及び他の変更を実装形態に加えることができる。概して、添付の特許請求の範囲において使用する用語は、本明細書及び特許請求の範囲の中で開示する特定の実装形態に特許請求の範囲を限定するように解釈すべきでなく、かかる特許請求の範囲の権利が与えられる等価物の全範囲と共に、あり得る全ての実装形態を含むように解釈すべきである。従って、特許請求の範囲が本開示によって限定されることはない。
Claims (41)
- 実行可能性への収束を改善するために最適化アルゴリズム内のサンプルを更新する計算システムの動作方法であって、前記方法はプロセッサによって実行され、
変数集合、前記変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、前記制約関数のそれぞれは前記変数集合の少なくとも1つの変数によって定義される、受信すること、
前記変数集合のサンプル値及び進行パラメータの値を受信すること、
前記変数集合の変数ごとに、
前記変数の変数タイプを決定すること、
前記変数タイプに基づいてサンプリング分布を選択すること、
前記変数の前記サンプル値及び前記変数を含む前記目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、
前記変数の前記サンプル値及び前記変数によって定義される前記制約関数の各々に基づいて1つ又は複数の制約エネルギバイアスを決定すること、並びに
前記目的エネルギバイアス、前記1つ又は複数の制約エネルギバイアス、及び前記進行パラメータに基づいて前記サンプリング分布から前記変数の更新値をサンプリングすること、及び
更新されたサンプルを返すことであって、前記更新されたサンプルは前記変数集合の各変数の前記更新値を含む、返すこと
を含む、方法。 - ペナルティパラメータの値を受信することを更に含み、前記サンプリング分布から前記変数の更新値をサンプリングすることが、前記ペナルティパラメータの値に基づいて前記サンプリング分布から前記変数の更新値をサンプリングすることを更に含む、請求項1に記載の方法。
- 前記ペナルティパラメータの値を受信することが、前記進行パラメータの前記値に依存するラグランジュパラメータの値を受信することを含む、請求項2に記載の方法。
- 前記変数の前記変数タイプを決定することは、前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することを含む、請求項1乃至3の何れか一項に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが2値であると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することがベルヌーイ分布を選択することを含む、請求項4に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが離散であると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することがソフトマックス分布を選択することを含む、請求項4に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが整数又は連続のうちの1つであると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することが条件付き確率分布を選択することを含む、請求項4に記載の方法。
- 前記サンプリング分布から前記変数の更新値をサンプリングすることが、前記条件付き確率分布からスライスサンプリングすることを含む、請求項7に記載の方法。
- 前記進行パラメータの前記値を受信することが逆温度を受信することを含む、請求項1乃至8の何れか一項に記載の方法。
- 最適化アルゴリズムにおいてサンプルを更新するためのシステムであって、
プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
前記最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、前記プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して請求項1乃至9の何れか一項に記載の方法を実行する、少なくとも1つのプロセッサと
を含む、システム。 - 計算システムの動作方法であって、前記計算システムは1つ又は複数のプロセッサを含み、前記方法は前記1つ又は複数のプロセッサの少なくとも1つによって実行され、
変数集合、前記変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、前記制約関数のそれぞれは前記変数集合の少なくとも1つの変数によって定義される、受信すること、
前記目的関数に対するサンプル解及び進行パラメータを初期化すること、
終了基準が満たされるまで反復的に、
最適化アルゴリズムのステージをインクリメントすること、
前記変数集合内の変数ごとに、
前記変数集合からi番目の変数を選択することであって、前記i番目の変数は現在値を有する、選択すること、
前記i番目の変数の前記現在値に基づいて前記目的関数の目的エネルギバイアスを計算すること、
前記i番目の変数の前記現在値に基づいて前記i番目の変数によって定義される各制約関数の制約エネルギバイアスを計算すること、並びに
前記目的エネルギバイアス及び前記制約エネルギバイアスに基づいて前記i番目の変数の更新値をサンプリングすることであって、前記更新値は前記現在値を置換する、サンプリングすること、
進行パラメータをインクリメントすること、
終了基準を評価すること、及び
前記変数集合の前記現在値を含む解を出力すること
を含む、方法。 - 前記変数集合からi番目の変数を選択することが2値変数を選択することを含み、前記2値変数は現在値及び代替値を有し、
前記i番目の変数の前記現在値に基づいて前記目的関数の目的エネルギバイアスを計算することが、前記2値変数の前記現在値と前記代替値との間の前記目的関数のエネルギの差を計算することを含み、
前記i番目の変数の前記現在値に基づく前記i番目の変数によって定義される各制約関数に基づいて制約エネルギバイアスを計算することが、前記2値変数の前記現在値と前記2値変数の前記代替値との間で前記2値変数によって定義される各制約関数のエネルギの差を計算することを含み、
前記目的エネルギバイアス及び前記制約エネルギバイアスに基づいて前記i番目の変数の更新値をサンプリングすることが、前記i番目の変数によって定義される前記目的関数及び各制約関数のエネルギ値の前記差に基づいて前記i番目の変数の更新値をサンプリングすることを含む、
請求項11に記載の方法。 - ペナルティパラメータを初期化すること、並びに
前記i番目の変数によって定義される前記制約関数のエネルギの前記差及び前記進行パラメータに基づいて各制約関数の前記ペナルティパラメータを調整すること
を更に含み、
前記i番目の変数によって定義される各制約関数のエネルギの前記差を計算することが、前記ペナルティパラメータによって各制約関数にペナルティを課すことを含む、
請求項12に記載の方法。 - 前記目的関数に関する最適化アルゴリズムのステージをインクリメントすることが、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムのうちの1つをインクリメントすることを含む、請求項11乃至13の何れか一項に記載の方法。
- 目的関数及び1つ又は複数の制約関数を含む問題定義を受信することが、2次目的関数及び1つ又は複数の2次等式又は不等式制約関数を含む問題定義を受信することを含む、請求項11乃至14の何れか一項に記載の方法。
- 変数集合を含む問題定義を受信することが、2値変数、整数変数、又は離散変数のうちの1つ又は複数の集合を含む問題定義を受信することを含む、請求項11、14、及び15の何れか一項に記載の方法。
- 変数集合を含む問題定義を受信することが1つ又は複数の整数変数を含む問題定義を受信することを含み、前記i番目の変数の更新値をサンプリングすることが条件付き確率分布からサンプリングを実行することを含み、前記i番目の変数が前記1つ又は複数の整数変数からの整数変数を含む、請求項16に記載の方法。
- 前記終了基準が反復回数、時間量、値限界の平均変化量、又は前記進行パラメータの値のうちの1つを含む、請求項11乃至17の何れか一項に記載の方法。
- 最適化に使用するためのシステムであって、
プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
前記最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、前記プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して請求項11乃至18の何れか一項に記載の方法を実行する、少なくとも1つのプロセッサと
を含む、システム。 - システムが量子プロセッサを更に含み、請求項11乃至18の何れか一項に記載の前記方法を実行した後、前記少なくとも1つのプロセッサが出力解に基づいて量子アニーリングを実行するように前記量子プロセッサに指示する、請求項19に記載の方法。
- ハイブリッド計算システムの動作方法が提供され、前記ハイブリッド計算システムは量子プロセッサと古典プロセッサとを含み、前記方法は前記古典プロセッサによって実行され、
制約付き2次最適化問題を受信することであって、前記制約付き2次最適化問題は変数集合、前記変数集合にわたって定義される目的関数、1つ又は複数の制約関数であって、前記制約関数のそれぞれは前記変数集合の少なくとも1つの変数によって定義される、1つ又は複数の制約関数、及び前記最適化のための進行パラメータであって、初期値と最終値との間でインクリメントする値の集合を含む、進行パラメータを含む、受信すること、
前記進行パラメータの前記最終値に到達するまで反復的に、
最適化アルゴリズムから前記変数集合の値のサンプル集合をサンプリングすること、
更新アルゴリズムを用いて前記値のサンプル集合を更新することであって、
前記変数集合の変数ごとに、
前記変数の変数タイプを決定すること、
前記変数タイプに基づいてサンプリング分布を選択すること、
前記値のサンプル集合からの前記変数のサンプル値及び前記変数を含む前記目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、
前記変数のサンプル値及び前記変数によって定義される前記制約関数のそれぞれに基づいて1つ又は複数の制約エネルギバイアスを決定すること、及び
前記目的エネルギバイアス、前記1つ又は複数の制約エネルギバイアス、及び前記進行パラメータに基づいて前記サンプリング分布から前記変数の更新値をサンプリングすること、
を含む、前記値のサンプル集合を更新すること、並びに
更新されたサンプルを返すことであって、前記更新されたサンプルは前記変数集合の各変数の前記更新値を含む、返すこと、
前記進行パラメータをインクリメントすること、
1つ又は複数の最終サンプルを量子プロセッサに伝送すること、
前記サンプルを洗練させるように前記量子プロセッサに指示すること、及び
解を出力すること
を含む、方法。 - 1つ又は複数の最終サンプルを量子プロセッサに伝送することがサンプルの対を前記量子プロセッサに伝送することを含み、前記サンプルを洗練させるように前記量子プロセッサに指示することが、前記サンプル間の選択を行うために量子アニーリングを実行するように前記量子プロセッサに指示することを含む、請求項21に記載の方法。
- 前記最適化アルゴリズムへの入力として前記変数集合の値のサンプル集合として前記出力解を返すことを更に含む、請求項21又は22に記載の方法。
- 量子プロセッサ及び古典プロセッサと、
プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
前記最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、前記プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して請求項21乃至23の何れか一項に記載の方法を実行する、少なくとも1つのプロセッサと
を含む、ハイブリッド計算システム。 - 計算システムの性能を改善するために探索空間を実行可能性に導く計算システムの動作方法であって、前記計算システムは1つ又は複数のプロセッサを含み、前記方法は前記1つ又は複数のプロセッサの少なくとも1つによって実行され、
最適化からサンプルを受信すること、
1つ又は複数の制約関数のエネルギ値を決定すること、
前記サンプルの実行可能性を評価すること、
前記サンプルが実行可能でない場合はペナルティ値を増加させること、
前記サンプルが実行可能である場合はペナルティ値を減少させること、及び
ペナルティ値を最適化アルゴリズムに返すこと
を含む、方法。 - 以前のサンプルと比較して違反が低減しているかどうかを判定し、前記違反が低減していない場合は初期アジャスタ値を増加することを更に含む、請求項25に記載の方法。
- 以前のサンプルと比較して現在の最良解が改善されているかどうかを判定し、前記現在の最良解が改善されていない場合は初期アジャスタ値を増加することを更に含む、請求項25又は26に記載の方法。
- 計算システムの動作方法であって、前記計算システムは1つ又は複数のプロセッサを含み、前記方法は1つ又は複数のプロセッサの少なくとも1つによって実行され、
変数集合、前記変数集合にわたって定義される目的関数、及び1つ又は複数の制約関数を含む問題定義を受信することであって、前記制約関数の各々は前記変数集合の少なくとも1つの変数によって定義され、前記変数集合は2値、整数、離散、又は連続のうちの1つである少なくとも1つの変数を有する変数の第1の部分集合、及び連続である少なくとも1つの変数を有する変数の第2の部分集合を含む、受信すること、
前記目的関数に対するサンプル解及び進行パラメータを初期化すること、
前記変数の第2の部分集合にわたって定義される連続問題を初期化することであって、前記連続問題は線形計画モデルを含む、初期化すること、
終了基準が満たされるまで反復的に、
最適化アルゴリズムのステージをインクリメントすること、
前記変数の第1の部分集合内の変数ごとに、
前記変数の変数タイプを決定すること、
前記変数タイプに基づいてサンプリング分布を選択すること、
前記変数の前記サンプル値及び前記変数を含む前記目的関数の1つ又は複数の項に基づいて目的エネルギバイアスを決定すること、
前記変数の前記サンプル値及び前記変数によって定義される前記制約関数の各々に基づいて1つ又は複数の制約エネルギバイアスを決定すること、
前記目的エネルギバイアス、前記1つ又は複数の制約エネルギバイアス、及び前記進行パラメータに基づいて前記サンプリング分布から前記変数の更新値をサンプリングすること、及び
更新されたサンプルを返すことであって、前記更新されたサンプルは前記変数集合の各変数の前記更新値を含む、返すこと、
前記変数の第1の部分集合内の各変数の前記値を前記更新値に固定した状態で、前記変数の第2の部分集合について前記線形計画モデルを解くこと、
前記解かれた線形計画モデルに基づいて前記変数の第2の部分集合内の各変数の更新値をサンプリングすることであって、前記更新値は現在値を置換する、サンプリングすること、
前記変数の第2の部分集合の前記更新値に基づいて前記目的エネルギバイアス及び前記1つ又は複数の制約エネルギバイアスを更新すること、
前記進行パラメータをインクリメントすること、
終了基準を評価すること、及び
前記変数集合の前記更新値を含む解を出力すること
を含む、方法。 - 1つ又は複数のペナルティパラメータを初期化すること
を更に含み、
前記サンプリング分布から前記変数の更新値をサンプリングすることが、前記1つ又は複数のペナルティパラメータの少なくとも1つの値に基づいて前記サンプリング分布から前記変数の更新値をサンプリングすることを更に含み、
前記変数の第2の部分集合内の各変数の更新値をサンプリングすることが、前記解かれた線形計画モデル及び前記1つ又は複数のペナルティパラメータの少なくとも1つの値に基づいて前記変数の第2の部分集合内の各変数の更新値をサンプリングすることを含む、
請求項28に記載の方法。 - 1つ又は複数のペナルティパラメータを初期化することが、前記進行パラメータの前記値に依存する少なくとも1つのラグランジュパラメータを初期化することを含む、請求項29に記載の方法。
- 前記変数の前記変数タイプを決定することは、前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することを含む、請求項28乃至30の何れか一項に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが2値であると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することがベルヌーイ分布を選択することを含む、請求項31に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが離散であると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することがソフトマックス分布を選択することを含む、請求項31に記載の方法。
- 前記変数タイプが2値、離散、整数、又は連続のうちの1つであると決定することは、前記変数タイプが整数又は連続のうちの1つであると決定することを含み、前記変数タイプに基づいてサンプリング分布を選択することが条件付き確率分布を選択することを含む、請求項31に記載の方法。
- 前記サンプリング分布から前記変数の更新値をサンプリングすることが、前記条件付き確率分布からスライスサンプリングすることを含む、請求項34に記載の方法。
- 前記進行パラメータの前記値を受信することが逆温度を受信することを含む、請求項28乃至35の何れか一項に記載の方法。
- 前記目的関数に関する最適化アルゴリズムのステージをインクリメントすることが、シミュレーテッドアニーリングアルゴリズム又はパラレルテンパリングアルゴリズムのうちの1つをインクリメントすることを含む、請求項28乃至36の何れか一項に記載の方法。
- 目的関数及び1つ又は複数の制約関数を含む問題定義を受信することが、2次目的関数及び1つ又は複数の2次等式又は不等式制約関数を含む問題定義を受信することを含む、請求項28乃至37の何れか一項に記載の方法。
- 前記終了基準が反復回数、時間量、値限界の平均変化量、又は前記進行パラメータの値のうちの1つを含む、請求項28乃至38の何れか一項に記載の方法。
- 最適化に使用するためのシステムであって、
プロセッサ実行可能命令及びデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
前記最も少ない1つの非一時的プロセッサ可読媒体に通信可能に結合される少なくとも1つのプロセッサであって、前記プロセッサ実行可能命令及びデータのうちの少なくとも1つを実行することに応答して請求項28乃至39の何れか一項に記載の方法を実行する、少なくとも1つのプロセッサと
を含む、システム。 - 量子プロセッサを更に含み、請求項28乃至39の何れか一項に記載の前記方法を実行した後、前記少なくとも1つのプロセッサが出力解に基づいて量子アニーリングを実行するように前記量子プロセッサに指示する、請求項40に記載のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163174097P | 2021-04-13 | 2021-04-13 | |
US63/174,097 | 2021-04-13 | ||
US202163250466P | 2021-09-30 | 2021-09-30 | |
US63/250,466 | 2021-09-30 | ||
PCT/IB2022/000201 WO2022219399A1 (en) | 2021-04-13 | 2022-03-30 | Systems and methods for improving computational efficiency of processor-based devices in solving constrained quadratic models |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024513576A true JP2024513576A (ja) | 2024-03-26 |
Family
ID=83639699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023562516A Pending JP2024513576A (ja) | 2021-04-13 | 2022-03-30 | 制約付き2次モデルを解く際のプロセッサベースのデバイスの計算効率を改善するためのシステム及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240248947A1 (ja) |
EP (1) | EP4309096A1 (ja) |
JP (1) | JP2024513576A (ja) |
CA (1) | CA3215170A1 (ja) |
WO (1) | WO2022219399A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599988B2 (en) | 2016-03-02 | 2020-03-24 | D-Wave Systems Inc. | Systems and methods for analog processing of problem graphs having arbitrary size and/or connectivity |
US11537926B2 (en) | 2019-01-17 | 2022-12-27 | D-Wave Systems Inc. | Systems and methods for hybrid algorithms using cluster contraction |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2524039A (en) * | 2014-03-12 | 2015-09-16 | Nokia Technologies Oy | Method and apparatus for adiabatic quantum annealing |
US10592816B1 (en) * | 2018-12-03 | 2020-03-17 | Accenture Global Solutions Limited | Quantum computation for optimization in exchange systems |
US11537926B2 (en) * | 2019-01-17 | 2022-12-27 | D-Wave Systems Inc. | Systems and methods for hybrid algorithms using cluster contraction |
US11620534B2 (en) * | 2019-03-18 | 2023-04-04 | International Business Machines Corporation | Automatic generation of Ising Hamiltonians for solving optimization problems in quantum computing |
-
2022
- 2022-03-30 EP EP22787694.3A patent/EP4309096A1/en active Pending
- 2022-03-30 WO PCT/IB2022/000201 patent/WO2022219399A1/en active Application Filing
- 2022-03-30 US US18/286,624 patent/US20240248947A1/en active Pending
- 2022-03-30 JP JP2023562516A patent/JP2024513576A/ja active Pending
- 2022-03-30 CA CA3215170A patent/CA3215170A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240248947A1 (en) | 2024-07-25 |
EP4309096A1 (en) | 2024-01-24 |
WO2022219399A1 (en) | 2022-10-20 |
CA3215170A1 (en) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhu et al. | Hybrid and enhanced PSO: Novel first order reliability method-based hybrid intelligent approaches | |
US20230143652A1 (en) | Automated Synthesizing of Quantum Programs | |
JP2024513576A (ja) | 制約付き2次モデルを解く際のプロセッサベースのデバイスの計算効率を改善するためのシステム及び方法 | |
García-Ripoll | Time evolution of matrix product states | |
Agullo et al. | Detailed analysis of the predictions of loop quantum cosmology for the primordial power spectra | |
US10885457B2 (en) | Quantum optimization system | |
US20210200521A1 (en) | Compiler-level general matrix multiplication configuration optimization | |
Sozykin et al. | TTOpt: A maximum volume quantized tensor train-based optimization and its application to reinforcement learning | |
Cekmez et al. | Adapting the GA approach to solve Traveling Salesman Problems on CUDA architecture | |
CN115630704B (zh) | 多体问题的求解方法及量子计算系统 | |
Bouzenada et al. | Statistical properties of the two dimensional Feshbach–Villars oscillator (FVO) in the rotating cosmic string space–time | |
Korondi et al. | Multi-fidelity design optimisation strategy under uncertainty with limited computational budget | |
Yang et al. | Applications of neural networks to dynamics simulation of Landau-Zener transitions | |
Sun et al. | Revisiting sampling for combinatorial optimization | |
Huang et al. | Comparative empirical study on constraint handling in offline data-driven evolutionary optimization | |
Roch et al. | Cross entropy hyperparameter optimization for constrained problem Hamiltonians applied to QAOA | |
Ding et al. | Random coordinate descent: a simple alternative for optimizing parameterized quantum circuits | |
Roy et al. | Trust-region based multi-objective optimization for low budget scenarios | |
Gupta et al. | A quantum approach for stochastic constrained binary optimization | |
US20240028938A1 (en) | Systems and methods for improving efficiency of calibration of quantum devices | |
Huang et al. | An empirical study of optimizers for quantum machine learning | |
Zhang et al. | Multi-objective cuckoo algorithm for mobile devices network architecture search | |
Korotin et al. | Mixing past predictions | |
Frejinger et al. | A language processing algorithm for predicting tactical solutions to an operational planning problem under uncertainty | |
Khodak et al. | Learning to Relax: Setting Solver Parameters Across a Sequence of Linear System Instances |