JP7844397B2 - 情報処理装置、情報処理方法、プログラムおよび回路情報 - Google Patents

情報処理装置、情報処理方法、プログラムおよび回路情報

Info

Publication number
JP7844397B2
JP7844397B2 JP2023116823A JP2023116823A JP7844397B2 JP 7844397 B2 JP7844397 B2 JP 7844397B2 JP 2023116823 A JP2023116823 A JP 2023116823A JP 2023116823 A JP2023116823 A JP 2023116823A JP 7844397 B2 JP7844397 B2 JP 7844397B2
Authority
JP
Japan
Prior art keywords
weight values
information processing
memory
circuit
aforementioned
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.)
Active
Application number
JP2023116823A
Other languages
English (en)
Other versions
JP2025014338A (ja
Inventor
亮 日高
光介 辰村
雅也 山崎
純 中山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2023116823A priority Critical patent/JP7844397B2/ja
Priority to EP24160262.2A priority patent/EP4495837A1/en
Priority to US18/590,232 priority patent/US20250028780A1/en
Publication of JP2025014338A publication Critical patent/JP2025014338A/ja
Application granted granted Critical
Publication of JP7844397B2 publication Critical patent/JP7844397B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、情報処理装置、情報処理方法、プログラムおよび回路情報に関する。
制御、金融、通信、物流、化学などの様々な応用分野における系の最適化は、多くの場合、組合せ最適化問題へ数学的に帰着される。組合せ最適化問題を解くことによって、認識、判断および計画等の様々な情報処理機能を実現およびこのような機能の効率化をする情報処理システムが提案されている。
組合せ最適化問題とは、最適化の対象となる系の状態を表す複数の決定変数(例えば離散変数)を引数とするコスト関数を定義し、定義したコスト関数を最小化する複数の決定変数の値の組合せを求解する問題である。複数の決定変数により表される系の状態は、解と呼ばれる。組合せ最適化問題は、決定変数の数が増えるほど、解として取り得る状態の数が指数関数的に増大する。解として取り得る状態の数が増大することを、組み合わせ爆発と呼ぶ。全ての解の候補から最適な一つの解を選ぶという組み合わせ最適化は計算困難な問題として知られている。大規模な組み合わせ最適化を短時間に実行することは、いまだチャレンジングな課題である。
近年、イジングマシンと呼ばれる、イジングスピンモデルの基底状態を探索する特定目的装置が注目されている。イジングスピンモデルの基底状態を探索する問題を、イジング問題と呼ぶ。イジング問題は、二値変数の一つであるイジングスピンの二次関数で与えられたコスト関数を最小化する組合せ最適化問題である。イジング問題において、コスト関数は、イジングエネルギーと呼ばれる。多くの実用的な組み合わせ最適化問題は、イジング問題に変換することが可能である。イジングマシンは、イジング問題を高速に解くことが可能である。従って、多くの実用的な組み合わせ最適化問題は、イジングマシンを用いて、高速に解くことが可能である。
ところで、時々刻々と状況が変化する場合において、状況の変化に応じて新たな組合せ最適化問題を生成して求解をし、得られた解に基づき処理をすることがある。例えば、金融取引市場において株式を電子的に取引する取引装置に組合せ最適化問題を適用する場合、株式の価格変動に応じて、新たな組合せ最適化問題を生成し、得られた解に基づき取引をする。また、周辺風景を撮像した画像に基づき移動体を制御する制御システムに組合せ最適化問題を適用する場合、画像の変化に応じて、新たな組合せ最適化問題を生成し、得られた解に基づき移動体を制御する。
このようなシステムでは、状況が変化する毎に、組合せ最適化問題を生成し、生成した組合せ最適化問題をソルバ装置に与える。例えば、組合せ最適化問題がNサイズのイジング問題である場合には、N×N個の2次係数およびN個の1次係数を生成して、ソルバ装置に与えなければならない。このため、このようなシステムでは、状況が変化してから、解に基づき処理をするまでの時間までの応答性を良くするためには、組合せ最適化問題を高速に生成して、ソルバ装置に与えることができることが好ましい。
特許第6629864号公報 特開2021-060864号公報 特開2019-145010号公報 特開2019-159566号公報 特開2021-043667号公報 特開2021-043589号公報
Hayato Goto, Kosuke Tatsumura and Alexander R. Dixon, "Combinatorial optimization by simulating adiabatic bifurcations in nonlinear Hamiltonian systems," Science Advances 5, eaav2372, 2019 Hayato Goto, Kotaro Endo, Masaru Suzuki, Yoshisato Sakai, Taro Kanao, Yohei Hamakawa, Ryo Hidaka, Masaya Yamasaki and Kosuke Tatsumura, "High-performance combinatorial optimization based on classical mechanics", Science Advances 7, eabe7953, 2021
本発明が解決しようとする課題は、組合せ最適化問題を高速に生成することである。
実施形態に係る情報処理装置は、データに対して処理を実行する。前記情報処理装置は、組合せ最適化問題を求解するソルバ装置と、情報処理回路と、を備える。前記情報処理回路は、前記データを取得する。前記情報処理回路は、前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させる。前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含む。前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表される。前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一である。前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含む。前記情報処理回路は、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込む。前記情報処理回路は、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与える。前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する。
イジング問題のモデルを示す図。 シミュレーテッド分岐アルゴリズムにより用いられる内部変数を示す図。 シミュレーテッド分岐マシンの処理の流れを示すフローチャート。 イジングマシンを備える情報処理システムの構成を示す図。 シミュレーテッド分岐マシンを備える情報処理システムの構成を示す図。 市場システムの構成図。 第1実施形態に係る情報処理装置の構成図。 情報処理装置の処理タイミングを示す図。 Q行列を生成するための疑似コードを示す図。 複数の重み値の一例を示す図。 M個の部分領域、K個のパターンおよびパターン情報を示す図。 第2実施形態に係るソルバ装置の構成図。 第3実施形態に係るソルバ装置の構成図。 演算回路の構成図。 作用演算回路の構成図。 行列(J)を示す図。 第3実施形態に係る行列演算回路の構成図。 第4実施形態に係る行列演算回路の構成図。 制御システムの構成の一例を示す図。 情報処理装置のハードウェア構成図。
(前提)
まず、実施形態の説明の前提となる用語および技術について説明する。
組合せ最適化問題とは、最適化の対象となる系の状態を表す複数の決定変数(例えば離散変数)を引数とするコスト関数を定義し、定義したコスト関数を最小化する複数の決定変数の値の組合せを求解する問題である。コスト関数は、系の状態を表す複数の決定変数を引数として含み、複数の決定変数の1次以上の関数である。例えば、コスト関数は、複数の決定変数の一次関数または二次関数により表される。コスト関数は、複数の決定変数の3次以上の関数であってもよい。換言すると、コスト関数は、複数の項を総和する関数である。複数の項のそれぞれは、複数の決定変数のうちの1個以上の所定個以下の決定変数と、係数とを乗算する関数である。また、複数の項のそれぞれにおける係数は、実数であり、重み値とも呼ぶ。すなわち、コスト関数を構成する複数の項のそれぞれは、複数の決定変数のうちの1以上の決定変数と、複数の重み値のうちの何れか1つの重み値との乗算により表される。
複数の決定変数により表される系の状態は、解と呼ばれる。系の状態が取り得る複数の解の全体集合は、解空間と呼ばれる。コスト関数の最小値を与える解は、厳密解と呼ばれる。コスト関数の最小値に近い値を与える解は、良解と呼ばれる。
厳密解法とは、組合せ最適化問題に対して、コスト関数の最小値を与える厳密解を求解する解法であって、解が厳密解であることが保証される方法である。
ヒューリスティクスな解法とは、組合せ最適化問題に対して、コスト関数の最小値を与える厳密解またはコスト関数の最小値に近い値を与える良解を求解する解法である。ヒューリスティクスな解法は、発見的解法とも呼ばれる。ヒューリスティクスな解法は、解の精度、すなわち、コスト関数の最小値にどの程度近い値を与える解かを表す指標の保証はない。ヒューリスティクスな解法は、厳密解法よりも短い求解時間で実用上有意な精度の解を出力することができる。
組合せ最適化問題の解法の計算量は、解を得るまでに必要な演算の量、例えば積和演算などの回数である。組合せ最適化問題の解を得るまでに必要な求解時間は、計算量だけでなく、演算を処理する計算機の構成にも依存する。例えば、求解時間は、計算機の計算並列度および動作周波数が高いほど短くなる。
QUBO(Quadratic Unconstrained Binary Optimization)問題は、決定変数が二値である、制約無し二次最適化問題である。QUBO問題は、コスト関数に含まれる複数の項のそれぞれが、決定変数の一次式または二次式により表される。狭義の定義のQUBO問題は、決定変数が0または1の二値変数である。本実施形態において、QUBO問題は、決定変数が0または1である狭義の定義の問題を表す。狭義の定義のQUBO問題では、決定変数をビット変数と呼ぶ場合もある。
QUBO問題のコスト関数は、式(1)のHtotal_QUBOにより表される。
Nは、2以上の整数であり、決定変数の数を表す。i,jは、1以上、N以下の任意の整数を表す。bは、0または1であり、N個の決定変数のうちのi番目の決定変数を表す。bは、0または1であり、N個の決定変数のうちのj番目の決定変数を表す。Qijは、N×Nの係数行列(Q)に含まれるi行、j列の係数を表す。なお、Qij=Qjiである。Qiiは、係数行列(Q)のi行、i列に含まれる係数であって、i番目の決定変数の1次項に乗算される係数である。Qiiは、バイアス係数と呼ばれる。
図1は、イジング問題のモデルを示す図である。イジング問題は、イジングモデルの基底状態を探索する問題である。イジング問題は、QUBO問題の一つである。イジング問題の決定変数は、-1または+1の離散変数を表す。
イジング問題のコスト関数は、式(2)のHtotal_Isingにより表される。
Nは、2以上の整数であり、決定変数の数を表す。i,jは、1以上、N以下の任意の整数を表す。sは、-1または+1であり、N個の決定変数のうちのi番目の決定変数を表す。sは、-1または+1であり、N個の決定変数のうちのj番目の決定変数を表す。Jijは、N×Nの係数行列(J)に含まれるi行、j列の係数を表す。なお、Jij=Jjiである。hは、i番目の決定変数の1次項に乗算される係数である。hは、バイアス係数と呼ばれる。
決定変数がsであるQUBO問題は、統計力学における磁性体モデルの一つであるイジング模型の基底状態探索の問題に対応する。このため、sは、スピン変数と呼ばれる場合もある。また、決定変数の数であるNは、スピン数と呼ばれる場合もある。また、Htotal_Isingは、ジングエネルギーと呼ばれる場合もある。Htotal_Isingが最小値となるN個のsにより表されるベクトルは、基底状態(基底スピン配置)と呼ばれる場合もある。
QUBO問題のコスト関数とイジング問題のコスト関数とは、定数の値のみが異なる。このため、QUBO問題とイジング問題とは、組合せ最適化問題として同一である。すなわち、QUBO問題とイジング問題とは、相互に変換することができる。例えば、イジング問題とQUBO問題とは、式(3-1)、式(3-2)、式(3-3)および式(3-4)により相互に変換される。
QUBOおよびイジング問題は、NP完全であることが知られている。すなわち、多くのNP困難問題は、多項式時間でQUBO問題またはイジング問題に変換することができる。従って、実用的な多くの組合せ最適化問題は、QUBO問題またはイジング問題に変換することができる。
イジングマシンは、イジング問題を解く装置である。イジングマシンの多くは、ヒューリスティクスな解法によりイジング問題を解く。電子工学、光学、量子力学、統計力学などに基づく様々な原理のイジングマシンが提案されている。多くのイジングマシンは、短時間で厳密解または良解を出力することができる。
シミュレーテッド分岐アルゴリズムは、組合せ最適化問題を解くためのアルゴリズムである。シミュレーテッド分岐アルゴリズムは、ヒューリスティクスな解法のアルゴリズムである。
シミュレーテッド分岐アルゴリズムは、例えば、非特許文献1~2、特許文献2~6に示されている。シミュレーテッド分岐アルゴリズムは、量子断熱定理に基づく量子力学的最適化手法から着想を得て発見されたため、量子インスパイアドアルゴリズムとも呼ばれる。シミュレーテッド分岐アルゴリズムは、コスト関数が複数の決定変数の二次関数である組合せ最適化問題を解くことができる。シミュレーテッド分岐アルゴリズムは、コスト関数が複数の決定変数の3次以上の関数である組合せ最適化問題、すなわち、HUBO(Higher Order Binary Optimization)問題も解くことができる。例えば、HUBO問題を解くシミュレーテッド分岐アルゴリズムは、特許文献5に示されている。また、シミュレーテッド分岐アルゴリズムは、複数の決定変数の一部または全部に連続値の変数を含む組合せ最適化問題を解くこともできる。複数の決定変数の一部または全部に連続値の変数を含む組合せ最適化問題を解くシミュレーテッド分岐アルゴリズムは、特許文献6に示されている。
シミュレーテッド分岐マシンは、シミュレーテッド分岐アルゴリズムに従った処理を実行する計算装置である。QUBO問題またはイジング問題を解くシミュレーテッド分岐マシンは、イジングマシンの一例である。本実施形態において、シミュレーテッド分岐マシンは、イジング問題を解く。
図2は、シミュレーテッド分岐アルゴリズムにより用いられる内部変数を示す図である。
シミュレーテッド分岐アルゴリズムは、N個の決定変数(s~s)を用いてコスト関数が表される組合せ最適化問題を解く場合、内部変数として、N個の位置変数(x~x)およびN個の運動量変数(y~y)を用いる。すなわち、シミュレーテッド分岐アルゴリズムは、2×N個の内部変数を用いる。
N個の位置変数(x)は、N個の決定変数(s)に一対一で対応する。すなわち、N個の位置変数のうちのi番目の位置変数(x)は、N個の決定変数のうちのi番目の決定変数(s)に対応する。また、N個の運動量変数(y)は、N個の決定変数(s)に一対一で対応する。すなわち、N個の運動量変数のうちのi番目の運動量変数(y)は、N個の決定変数のうちのi番目の決定変数(s)に対応する。
図3は、シミュレーテッド分岐マシンの処理の流れを示すフローチャートである。シミュレーテッド分岐マシンは、図3に示す流れで、シミュレーテッド分岐アルゴリズムに従った処理を実行する。
まず、S11において、シミュレーテッド分岐マシンは、イジング問題を取得する。具体的には、シミュレーテッド分岐マシンは、N×N個の係数を含む行列であるJおよびN個のバイアス係数を含むhを取得する。
続いて、S12において、シミュレーテッド分岐マシンは、2×N個の内部変数、すなわち、N個の位置変数(x~x)およびN個の運動量変数(y~y)を初期化する。シミュレーテッド分岐マシンは、N個の位置変数(x~x)の初期値およびN個の運動量変数(y~y)の初期値の両方または何れか一方を、外部から取得してもよい。また、シミュレーテッド分岐マシンは、N個の位置変数(x~x)の初期値およびN個の運動量変数(y~y)の初期値を乱数発生回路により発生された乱数により生成してもよいし、予め定められた値に設定してもよい。なお、シミュレーテッド分岐マシンは、ヒューリスティクスであるので、同一の問題であっても、N個の位置変数(x~x)の初期値およびN個の運動量変数(y~y)の初期値の少なくとも一方が異なると、異なる良解を出力する場合がある。
続いて、シミュレーテッド分岐マシンは、予め設定された回数、S14からS16の処理を繰り返す(S13とS17との間のループ処理)。S14からS16の処理は、N個の位置変数(x~x)とN行×N列の重み値を含む行列とを行列乗算する行列演算処理、および、N個の位置変数(x~x)およびN個の運動量変数(y~y)を時間発展させるための時間発展処理である。
S14において、シミュレーテッド分岐マシンは、N個の運動量変数(y~y)のそれぞれを更新するy更新処理を実行する。シミュレーテッド分岐マシンは、y更新処理におけるi番目の運動量変数(y)の更新処理において、N個の位置変数(x~x)と、N×N個の行列(J)のうちのi番目の位置変数(x)と他の(N-1)個の位置変数(x1~i-1,i+1~N)との間の相互作用を表すN個の係数(Ji,j)と、i番目のバイアス係数(h)とによって、i番目の運動量変数(y)を更新する。
続いて、S15において、シミュレーテッド分岐マシンは、N個の位置変数(x~x)のそれぞれを更新するx更新処理を実行する。シミュレーテッド分岐マシンは、x更新処理におけるi番目の位置変数(x)の更新処理において、i番目の運動量変数(y)によって、i番目の位置変数(x)を更新する。
なお、シミュレーテッド分岐マシンは、S14の処理とS15の処理とを順序を入れ替えて実行してもよい。
続いて、S16において、シミュレーテッド分岐マシンは、N個の位置変数(x~x)のうち、絶対値が1を超えている位置変数に対して壁処理を実行する。さらに、シミュレーテッド分岐マシンは、絶対値が1を超えている位置変数に対応する運動量変数に対しても壁処理を実行する。例えば、シミュレーテッド分岐マシンは、壁処理において、絶対値が1を超えている位置変数の値を、符号を同一とした状態で、絶対値を1または1より小さい値に変更する。また、例えば、シミュレーテッド分岐マシンは、壁処理において、絶対値が1を超えている位置変数に対応する運動量変数の値を0に変更する。
シミュレーテッド分岐アルゴリズムは、x更新処理、y更新処理および壁処理の演算にバリエーションがある。例えば、シミュレーテッド分岐アルゴリズムのバリエーションとして、断熱シミュレーテッド分岐(Adiabatic simulated bifurcation:aSB)アルゴリズム、弾道シミュレーテッド分岐(Ballistic simulated bifurcation:bSB)アルゴリズム、および、離散シミュレーテッド分岐(Discrete simulated bifurcation:dSB)アルゴリズムがある。
断熱シミュレーテッド分岐アルゴリズムに従った処理を実行する場合、シミュレーテッド分岐マシンは、y更新処理(S14)において式(4-1)を示す演算を実行し、x更新処理(S15)において式(4-2)を示す演算を実行する。なお、断熱シミュレーテッド分岐アルゴリズムに従った処理を実行する場合、シミュレーテッド分岐マシンは、壁処理(S15)を実行しない。
弾道シミュレーテッド分岐アルゴリズムに従った処理を実行する場合、シミュレーテッド分岐マシンは、y更新処理(S14)において式(5-1)を示す演算を実行し、x更新処理(S15)において式(5-2)を示す演算を実行し、壁処理(S16)において式(5-3)を示す演算を実行する。
離散シミュレーテッド分岐アルゴリズムに従った処理を実行する場合、シミュレーテッド分岐マシンは、y更新処理(S14)において式(6-1)を示す演算を実行し、x更新処理(S15)において式(6-2)を示す演算を実行し、壁処理(S16)において式(6-3)を示す演算を実行する。
なお、式(4-1)、式(4-2)、式(5-1)、式(5-2)、式(5-3)、式(6-1)、式(6-2)および式(6-3)において、tおよびtk+1は、時刻を表す。tk+1は、tに単位時間(Δt)を加算した時刻である。
(t)は、時刻(t)におけるi番目の位置変数(x)の値を示す。x(tk+1)は、時刻(tk+1)におけるi番目の位置変数(x)の値を示す。y(t)は、時刻(t)におけるi番目の運動量変数(y)の値を示す。y(tk+1)は、時刻(tk+1)におけるi番目の運動量変数(y)の値を示す。
K、a、ηおよびc、は、予め定められた定数である。a(t)は、時刻に応じて変化する関数である。a(t)は、例えば、a(t)=0で、時刻が増加するに従って増加する正の実数であって、終了時刻(T)においてaとなる関数である(a(T)=a)。また、sgn(x(t))は、時刻(t)におけるi番目の位置変数(x)の符号を出力する関数であり、x(t)が0以上であれば+1、x(t)が0未満であれば-1となる。
シミュレーテッド分岐マシンは、S14~S16の処理を予め定められた回数実行した場合、すなわち、時刻tが最終時刻Tとなるまで演算を実行した場合、S13とS17との間のループ処理を抜けて、処理をS18に進める。
S18において、シミュレーテッド分岐マシンは、最終時刻におけるN個の位置変数(x~x)、または、最終時刻におけるN個の位置変数(x~x)に基づき算出したN個の決定変数(s~s)を出力する。シミュレーテッド分岐マシンは、N個の決定変数(s~s)のうちのi番目の決定変数(s)を、sgn(x)に基づき算出する。
シミュレーテッド分岐マシンは、S18の処理を終了すると、シミュレーテッド分岐アルゴリズムに従った処理を終了する。
なお、時間発展処理(S13とS17との間のループ処理)の繰り返し回数は、用途に応じて事前に決定される。時間発展処理における1回の処理(S14~S16の1回の処理)に必要な計算量は、変動しない。このため、シミュレーテッド分岐マシンは、求解時間の変動を小さくすることができる。従って、シミュレーテッド分岐マシンは、決められた時間までに処理を完了しなければならないという時間的制約のあるリアルタイムシステムに適用しても、決められた時間までに確実に解を出力することができる。
また、例えば特許文献2に示されるように、シミュレーテッド分岐マシンは、多数の演算器を含む専用の並列処理回路を用いて構成することができる。これにより、シミュレーテッド分岐マシンは、時間発展処理における1回の処理の計算時間を極めて短くすることができる。また、専用のハードウェア回路に実装されたシミュレーテッド分岐マシンは、ソフトウェア処理の場合と異なり、あらゆる割込み処理が発生しないために、求解時間が厳密に固定される。例えば、専用のハードウェア回路に実装されたシミュレーテッド分岐マシンは、解が得られるまでの時間をクロックサイクル単位で固定することができる。従って、専用のハードウェア回路に実装されたシミュレーテッド分岐マシンは、リアルタイムシステムに適用した場合、時間的制約をより確実に守りながら解を出力することができる。
図4は、イジングマシンとホスト装置とを備える情報処理システムの構成を示す図である。組合せ最適化問題を解く機能を有する情報処理システムを、例えば、イジングマシンとホスト装置とにより構成することができる。ホスト装置は、イジングマシンにより実行される処理以外の処理を実行する。この場合、イジングマシンは、組合せ最適化問題の求解時間を短縮する目的で導入され、アクセラレータまたはオフローダーとみなされる。ホスト装置は、汎用プロセッサと、イジングマシン以外のオフローダー、メモリ、ストレージ、センサ、アクチュエータ、通信インタフェース等を備える。
ホスト装置は、少なくともQUBO問題を特定する情報(行列(Q))またはイジング問題を特定するための情報(行列(J)およびバイアス係数配列(h))を、イジングマシンへと与える。イジングマシンは、QUBO問題を特定する情報(行列(Q))を取得して、イジング問題を特定するための情報(行列(J)およびバイアス係数配列(h))に変換してもよい。そして、イジングマシンは、最適化処理後に、解としてN個の決定変数(s~s)を表す配置情報(sopt)をホスト装置へと返信する。
図5は、シミュレーテッド分岐マシンとホスト装置とを備える情報処理システムの構成を示す図である。
組合せ最適化問題を解く機能を有する情報処理システムは、イジングマシンとしてシミュレーテッド分岐マシンを備えてもよい。この場合、ホスト装置は、イジング問題を特定するための情報(行列(J)およびバイアス係数(h))を、シミュレーテッド分岐マシンへと与える。さらに、ホスト装置は、N個の位置変数(x~x)の初期値およびN個の運動量変数(y~y)の初期値を、シミュレーテッド分岐マシンへと与えてもよい。また、ホスト装置は、シミュレーテッド分岐アルゴリズムで用いられる各種の定数および関数(例えば、K、a、c0、a(t)およびΔt)等をシミュレーテッド分岐マシンへと与えてもよい。シミュレーテッド分岐マシンは、最適化処理後に、解として、N個の決定変数(s~s)を表す配置情報(sopt)に代えて、N個の位置変数(x~x)を表す配置情報(xopt)をホスト装置へと返信してもよい。
(第1実施形態)
つぎに、第1実施形態に係る市場システム10について説明する。
図6は、市場システム10の構成を示す図である。市場システム10は、複数の参加者による、複数の対象の電子的取引を実行する。より詳しくは、市場システム10は、複数の対象のそれぞれについて、複数の参加者のそれぞれから買い注文および売り注文を受け付け、受け付けた買い注文の価格および数量と売り注文の価格および数量とをマッチングさせ、電子的に取引を成立させる。
本実施形態において、市場システム10は、複数の対象の電子的取引として、複数の株式(複数銘柄の株式)の売買取引を実行する。なお、対象は、市場において取引可能であれば、株式に限らず、債券、株式投資信託、不動産投資信託等の有価証券およびこれらの先物であってもよいし、為替、金利および金利先物等の金融商品であってもよいし、金、原油および穀物等の商品およびこれらの商品先物等であってもよい。
市場システム10は、市場サーバ装置12と、複数のクライアント装置14とを備える。
市場サーバ装置12は、市場の管理者により用いられるコンピュータである。市場サーバ装置12は、ネットワークを介して複数のクライアント装置14に接続される。
複数のクライアント装置14のそれぞれは、市場の参加者により用いられる装置である。複数のクライアント装置14のそれぞれは、例えばコンピュータにより実現される。
複数のクライアント装置14のそれぞれは、複数の株式のうちの何れの株式の取引をするかを決定する。複数のクライアント装置14のそれぞれは、複数の株式のうち取引をすると決定した株式についての取引情報を含む発注パケットを生成して市場サーバ装置12に送信する。発注パケットは、取引情報として、例えば、複数の株式のうちの取引をする株式を識別する識別情報、識別情報により識別される株式に対する売り注文または買い注文を表す売買方向、価格(すなわち、株価)、および、数量(すなわち、株数)を含む。なお、価格は、特定の値に限らず、例えば、市場開始後の売買成立時の値であってもよいし、一定の幅を有する値であってもよい。
市場サーバ装置12は、複数の株式の取引を実行する。市場サーバ装置12は、受信部16と、マッチング部17と、配信部18とを含む。
受信部16は、複数のクライアント装置14のそれぞれから送信された発注パケットを受信する。受信部16は、受信した発注パケットの情報をマッチング部17に与える。
マッチング部17は、複数の株式のそれぞれ毎に、売り注文の価格および数量と、買い注文の価格および数量とのマッチングを行い、価格および数量が一致した売り注文と買い注文との取引を、受け付け順に成立させる。マッチング部17は、取引が成立した注文についての情報、および、取引が成立していない注文についての情報を配信部18に与える。
配信部18は、マッチング部17から取得した情報に基づき、株式の取引の状況を示す情報を含む市況パケットを、複数のクライアント装置14に一斉配信する。市況パケットは、例えば、複数の株式のそれぞれ毎に生成される。市況パケットは、株式を識別する識別情報、識別情報により識別される株式について取引が成立した最新の価格である取引価格を含む。
また、市況パケットは、複数の株式のそれぞれ毎の気配情報を含んでもよい。気配情報は、複数の株式のそれぞれ毎に、取引が成立していない買い注文の価格および数量を示す情報、および、取引が成立していない売り注文の価格および数量を示す情報である。
配信部18は、市況パケットを不定期に配信する。例えば、配信部18は、取引成立時に、取引が成立した株式について市況パケットを配信する。例えば、複数のクライアント装置14のそれぞれは、不定期に配信される市況パケットを取得し、取得した市況パケットに含まれる情報に基づき、複数の株式のうちの何れの株式の取引をするかを決定する。そして、複数のクライアント装置14のそれぞれは、決定した株式について発注パケットを生成して、市場サーバ装置12に送信する。
本実施形態に係る情報処理装置20は、市場システム10におけるクライアント装置14として機能する。情報処理装置20は、プロセッサおよびメモリ等を含むコンピュータにより実現されてもよいし、プロセッサおよびメモリ等に加えて、専用のハードウェア回路を含む構成であってもよい。
ここで、情報処理装置20は、不定期に取得する市況パケットに基づき組合せ最適化問題を生成し、生成した組合せ最適化問題を求解し、求解して得られた組合せ最適化問題の解に基づき、複数の株式のそれぞれについて取引するか否か決定する。
本実施形態において、情報処理装置20は、組合せ最適化問題におけるコスト関数として、式(7)に示す関数を用いる。
式(7)において、Nは、2以上の整数であり、市場サーバ装置12において取引がされる複数の株式の銘柄数を表す。iは、1以上、N以下の整数であり、複数の株式のそれぞれを識別するインデックスである。
式(7)のコスト関数は、N個の決定変数を含む。bは、0または1の二値であり、複数の株式のうちのi番目の株式を取引するか否かを表す決定変数である。本実施形態において、bは、取引する場合に1、取引しない場合に0を表す。
tは、1日における取引開始時刻から取引終了時刻までの間における任意の時刻を表す。tは、取引開始時刻において0であり、取引開始時刻から時間経過に従って増加する。本実施形態において、tは、整数であり、時刻をインデックス化して表す。
(t)は、i番目の株式における、時刻tの取引価格、すなわち、時刻tの株価である。p(0)は、i番目の株式における、取引開始時刻の取引価格、すなわち、取引開始時刻の株価である。αおよびβは、予め設定された定数である。
(t)/p(0)-1は、取引開始時刻の取引価格を基準とする騰落率を表す。p(t)/p(0)-1は、0より大きい場合、i番目の株式の価格が上昇していることを表し、0より小さい場合、i番目の株式の価格が下落していることを表す。
また、sgn(p(t)/p(0)-1)は、p(t)/p(0)-1が0以上の場合、+1、p(t)/p(0)-1が0より小さい場合に、-1となる符号関数である。
式(7)のコスト関数の右辺第1項は、複数の株式のそれぞれの騰落率と、予め設定されたαとの差分を評価する項である。従って、式(7)のコスト関数は、騰落率がαより大きい株式の取引をする場合、減少する。
また、情報処理装置20は、i番目の株式に対する売買方向、すなわち、売り注文とするか、買い注文とするかを、騰落率によって決定する。情報処理装置20は、例えば、上昇トレンドの場合に買い注文をする場合、すなわち、順張りをする場合、騰落率が正の場合に買い注文、騰落率が負の場合に売り注文をする。反対に、情報処理装置20は、例えば、上昇トレンドの場合に売り注文をする場合、すなわち、逆張りをする場合、騰落率が正の場合に売り注文、騰落率が負の場合に買い注文をする。本実施形態において、情報処理装置20は、騰落率が正の場合に売り注文、騰落率が負の場合に買い注文をする。
式(7)のコスト関数の右辺第2項は、売り注文をする株式の数と、買い注文をする株式の数の差を評価する項である。式(7)のコスト関数の右辺第2項は、売り注文をする株式の数と、買い注文をする株式の数の差が0である場合、0となり、差が大きくなる程、大きくなる。従って、式(7)のコスト関数は、例えば、騰落率の差の絶対値が大きい、すなわち、騰落率の相関性が小さい、売買方向が逆の2個の株式の組を取引する場合、減少する。また、式(7)のコスト関数は、例えば、売り注文をする株式の数と買い注文をする株式の数とが同数の複数の株式を含む株式群であって、互いの騰落率の差の絶対値が大きい、すなわち、互いに騰落率の相関性が小さい複数の株式を含む株式群を取引する場合、減少する。
以上から、式(7)のコスト関数を最小化する組合せ最適化問題は、騰落率が大きい株式を売買しつつ、売り注文をする株式の数と買い注文をする株式の数の差を小さくするようにリスク分散をした解を得ることができる。
情報処理装置20は、このようなコスト関数を最小化する組合せ最適化問題の解、すなわち、N個の決定変数の値を取得する。情報処理装置20は、N個の決定変数のうち値が1となっている決定変数に対応する株式の取引をすることを決定する。そして、情報処理装置20は、複数の株式のうち取引を実行すると決定した株式についての取引情報を含む発注パケットを生成し、市場サーバ装置12に送信する。
なお、情報処理装置20は、このような式(7)に示すコスト関数以外のコスト関数を最小化する組合せ最適化問題を求解してもよい。
図7は、第1実施形態に係る情報処理装置20の構成を示す図である。
情報処理装置20は、不定期に与えられるデータを取得し、取得したデータに基づき組合せ最適化問題を生成し、生成した組合せ最適化問題の解に基づき出力データを生成する。そして、情報処理装置20は、生成した出力データを、情報処理装置20とは異なる第1装置に出力する。本実施形態においては、情報処理装置20は、データとして、市場サーバ装置12から不定期に与えられる市況パケットを受信する。情報処理装置20は、受信した市況パケットに基づき組合せ最適化問題を生成し、生成した組合せ最適化問題の解に基づき、出力データとして発注パケットを生成する。そして、本実施形態においては、情報処理装置20は、生成した発注パケットを、第1装置の一例である市場サーバ装置12に送信する。
情報処理装置20は、入力メモリ32と、取得部36と、ソルバ装置40と、問題生成部42と、処理実行部46とを備える。
入力メモリ32は、組合せ最適化問題のコスト関数に含まれる複数の重み値の基となる複数の入力値を記憶する。本実施形態においては、入力メモリ32は、複数の入力値として、複数の取引価格に応じた値を記憶する。入力メモリ32に記憶される複数の取引価格に応じた値は、複数の株式に一対一に対応する。すなわち、入力メモリ32は、複数の株式のそれぞれ毎に、取引価格に応じた値を記憶する。取引価格に応じた値は、取引価格であってもよいし、取引価格に対して所定の処理または演算をした値であってもよい。例えば。取引価格に応じた値は、取引開始時刻の取引価格に対する最新の取引価格の割合を表す騰落率であってもよい。
取得部36は、不定期に繰り返して与えられるデータを取得する。取得部36が取得するデータは、複数の対象のうちの少なくとも1つの対象に関する入力情報を含む。そして、取得部36は、データを取得した場合、取得したデータに含まれる入力情報に基づいて、入力メモリ32に記憶される複数の入力値のうちの、取得したデータに含まれる入力情報に関する対象に対応する入力値を書き換える。
本実施形態において、取得部36は、不定期に繰り返して与えられるデータの一例である市況パケットを、市場サーバ装置12から取得する。市況パケットは、入力情報として、複数の株式のうちの少なくとも1つの株式の取引価格を含む。そして、取得部36は、市況パケットを取得した場合、取得した市況パケットに含まれる取引価格に基づいて、入力メモリ32に記憶された複数の株式のそれぞれ毎の取引価格に応じた値のうちの、取得した市況パケットに示される株式についての取引価格に応じた値を書き換える。
ソルバ装置40は、問題生成部42から組合せ最適化問題を受け付けて、受け付けた組合せ最適化問題を求解する。そして、ソルバ装置40は、受け付けた組合せ最適化問題の解を出力する。本実施形態において、ソルバ装置40は、イジングマシンの一つであるシミュレーテッド分岐マシンであり、専用のハードウェア回路に実装される。なお、ソルバ装置40は、シミュレーテッド分岐マシンでなく、他のアルゴリズムに基づき組合せ最適化問題を解いてもよい。
また、本実施形態において、ソルバ装置40は、重みメモリ50(第1メモリ)と、パターンメモリ52(第2メモリ)とを含む。重みメモリ50は、組合せ最適化問題のコスト関数に含まれる複数の重み値を記憶する。例えば、重みメモリ50は、式(7)に示したコスト関数に含まれる複数の重み値を表す行列(J)およびバイアス係数配列(h)を記憶する。パターンメモリ52は、重みメモリ50における複数の重み値のそれぞれの記憶位置を示すパターン情報(第1情報)を記憶する。
問題生成部42は、取得部36が取得したデータに基づき組合せ最適化問題を生成して、生成した組合せ最適化問題をソルバ装置40に求解させる。より具体的には、問題生成部42は、入力メモリ32に記憶される複数の入力値に基づき組合せ最適化問題におけるコスト関数に含まれる複数の重み値を生成して、生成した複数の重み値を重みメモリ50に書き込む。本実施形態においては、ソルバ装置40がイジングマシンであり、組合せ最適化問題がイジング問題である。従って、問題生成部42は、行列(J)およびバイアス係数配列(h)を生成し、生成した行列(J)およびバイアス係数配列(h)を重みメモリ50に書き込む。
本実施形態において、問題生成部42は、式(7)に示したコスト関数を最小化する組合せ最適化問題を生成する。より具体的には、問題生成部42は、入力メモリ32に記憶される複数の入力値に基づき、式(7)に示した組合せ最適化問題のコスト関数に含まれる複数の重み値を生成し、生成した複数の重み値を重みメモリ50に書き込む。より詳しくは、問題生成部42は、入力メモリ32に記憶された複数の株式の取引価格に応じた値に基づき、式(7)により得られる行列(J)およびバイアス係数配列(h)を生成し、生成した行列(J)およびバイアス係数配列(h)を重みメモリ50に書き込む。
さらに、問題生成部42は、重みメモリ50における複数の重み値のそれぞれの記憶位置を特定するためのパターン情報を生成する。そして、問題生成部42は、生成したパターン情報をパターンメモリ52に書き込む。
また、問題生成部42は、データを取得したことに応じて、または、予め設定された周期で、組合せ最適化問題を生成して、組合せ最適化問題をソルバ装置40に求解させる。本実施形態においては、問題生成部42は、取得部36が市況パケットを取得したことに応じて、または、予め設定された周期で、組合せ最適化問題を生成して、組合せ最適化問題をソルバ装置40に求解させる。
ただし、問題生成部42は、組合せ最適化問題の生成を開始してから、生成した組合せ最適化問題の解が出力されるまでの求解処理期間中においては、取得部36が新たな市況パケットを取得しても、新たな組合せ最適化問題を生成しない。また、予め設定された周期は、組合せ最適化問題の生成を開始してから、生成した組合せ最適化問題の解を出力するまでに要する時間よりも長い。また、予め設定された周期は、一定時間毎でなくてもよく、時間的な変動があってもよい。
処理実行部46は、ソルバ装置40から組合せ最適化問題の解を取得する。本実施形態においては、処理実行部46は、式(7)に含まれる複数の決定変数(b~b)の値(0または1)を解として取得する。処理実行部46は、ソルバ装置40から解を取得したことに応じて、取得した解に基づく処理を実行する。
例えば、処理実行部46は、ソルバ装置40から組合せ最適化問題の解を取得した場合、取得した解に基づき、複数の株式のうちの解により特定された少なくとも1つの株式に対して所定操作をすることを示す出力情報を含む出力データを生成する。そして、処理実行部46は、出力データを第1装置へ出力する。
本実施形態においては、処理実行部46は、ソルバ装置40から組合せ最適化問題の解を取得した場合、出力データの一例である発注パケットを生成する。発注パケットは、出力情報として、複数の決定変数(b~b)の値のうち取引をすることを示す値(1)となっている決定変数に対応する株式について、所定操作である買い注文または売り注文をすることを示す取引情報を含む。そして、処理実行部46は、生成した発注パケットを第1装置の一例である市場サーバ装置12に出力する。
ここで、本実施形態において、組合せ最適化問題におけるコスト関数に含まれる複数の重み値は、所定の第1領域における位置を表すインデックスにより識別される。例えば、式(7)の右辺第2項に含まれる複数の重み値は、N行×N列における行列(J)の行番号(i)および列番号(j)を表すインデックス(i,j)により識別される。
さらに、本実施形態において、複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一である。例えば、所定の第1領域における一部である第1部分領域に含まれる第1部分重み群は、所定の第1領域における他の一部である第2部分領域に含まれる第2部分重み群と同一である。例えば、N行×N列における行列(J)における第1行に含まれるN個の重み値は、行列(J)における第2行に含まれるN個の重み値と同一である。
本実施形態において、問題生成部42は、第1部分重み群および第2部分重み群を重みメモリ50における共通の領域に書き込む。そして、ソルバ装置40は、パターンメモリ52に記憶されたパターン情報に基づき、重みメモリ50から複数の重み値のそれぞれを読み出して、解を求解する。
図8は、情報処理装置20の処理タイミングを示すタイミングチャートである。情報処理装置20は、例えば図8に示す流れで処理を実行する。
取得部36は、市場サーバ装置12から市況パケットを取得した場合、入力メモリ32に記憶された複数の株式のそれぞれの取引価格に応じた値のうちの、市況パケットに含まれる取引価格に関する株式についての取引価格に応じた値を書き換える。これにより、入力メモリ32に記憶される複数の株式のそれぞれの取引価格に応じた値は、変更される(図8のt,t)。
問題生成部42は、入力メモリ32に記憶された複数の株式のそれぞれの取引価格に応じた値に基づき、組合せ最適化問題におけるコスト関数に含まれる複数の重み値を生成する。そして、問題生成部42は、生成した複数の重み値をソルバ装置40の重みメモリ50に書き込んで、ソルバ装置40に求解処理を実行させる(図8のt,t)。例えば、問題生成部42およびソルバ装置40は、市場サーバ装置12から市況パケットを取得する毎、または、予め定められた時間毎に、問題生成を実行する。
ソルバ装置40は、複数の重み値が重みメモリ50に書き込まれた後に、求解処理を開始する。ソルバ装置40は、求解処理を完了した場合、組合せ最適化問題の解を処理実行部46に与える(図8のt,t)。
処理実行部46は、ソルバ装置40から組合せ最適化問題の解を取得したことに応じて、発注パケットを生成する。そして、処理実行部46は、生成した発注パケットを市場サーバ装置12に出力する(図8のt,t)。
図9は、式(7)の右辺第2項からQUBOにおけるQ行列を生成するための疑似コード60を示す図である。
例えば、式(7)の右辺第2項に含まれる行列(J)におけるN個の行のそれぞれは、以下に説明するように、2個のパターンの何れかにより表される。
まず、式(7)の右辺第2項からQUBOにおけるN行×N列のQ行列を生成することを考える。式(7)の右辺第2項からQUBOにおけるN行×N列のQ行列を生成する場合、問題生成部42は、図9に示す疑似コード60を実行する。
なお、p_sgn(i)は、sgn(p(t)/p(0)-1)を表す。また、p_sgn(j)は、sgn(p(t)/p(0)-1)を表す。
Q行列の1行目に含まれるN個の重み値(Q1,1,Q1,2,…,Q1,N,)は、{β×p_sgn(1)×p_sgn(1),β×p_sgn(1)×p_sgn(2),…,β×p_sgn(1)×p_sgn(N)}となる。
p_sgn(i)およびp_sgn(j)は、+1または-1である。従って、Q行列の1行目に含まれるN個の重み値(Q1,1,Q1,2,…,Q1,N,)は、β×p_sgn(1)が+1である場合、{β×p_sgn(1),β×p_sgn(2),…,β×p_sgn(N)}となる。また、Q行列の1行目に含まれるN個の重み値(Q1,1,Q1,2,…,Q1,N,)は、β×p_sgn(1)が-1である場合、{-β×p_sgn(1),-β×p_sgn(2),…,-β×p_sgn(N)}となる。Q行列の1行目以外の他の行も、1行目と同様である。
すなわち、Q行列におけるN個の行のそれぞれは、{β×p_sgn(1),β×p_sgn(2),…,β×p_sgn(N)}または{-β×p_sgn(1),-β×p_sgn(2),…,-β×p_sgn(N)}の2個のパターンの何れか一方のパターンとなる。
Q行列をイジング問題における行列(J)に変換した場合も、同様に、N個の行のそれぞれは、2個のパターンの何れか一方のパターンとなる。
すなわち、行列(J)におけるN個の行のそれぞれは、{-0.5×β×p_sgn(1),-0.5×β×p_sgn(2),…,-0.5×β×p_sgn(N)}の第1パターンまたは{0.5×β×p_sgn(1),0.5×β×p_sgn(2),…,0.5×β×p_sgn(N)}の第2パターンの何れか一方のパターンとなる。
本実施形態において、問題生成部42は、式(7)の右辺第2項に含まれる行列(J)を生成する場合、N個の行の全てを生成することに代えて、第1パターンおよび第2パターンを生成する。そして、問題生成部42は、第1パターンおよび第2パターンの2個のパターン、すなわち、2×N個の重み値を重みメモリ50に書き込む。
例えば、重みメモリ50は、第1記憶領域と、第2記憶領域とを含む。この場合、問題生成部42は、第1パターンのN個の重み値を第1記憶領域に書き込み、第2パターンのN個の重み値を第2記憶領域に書き込む。
さらに、問題生成部42は、式(7)の右辺第2項に含まれる行列(J)におけるN個の行のそれぞれが、第1パターンであるか、第2パターンであるかを示すパターン情報を生成する。例えば、問題生成部42は、1行目からN行目のそれぞれについて、β×p_sgn(i)を算出する。続いて、問題生成部42は、1行目からN行目のそれぞれについて、β×p_sgn(i)の値(+1または-1)を示すパターン情報を生成する。そして、問題生成部42は、生成したパターン情報をパターンメモリ52に書き込む。
ソルバ装置40は、組合せ最適化問題の求解中に、行列(J)に含まれるN×N個の重み値を重みメモリ50から読み出す場合、パターンメモリ52に記憶されたパターン情報を参照して、読み出し対象となる対象重み値の行が第1パターンであるか、第2パターンであるかを判断する。そして、ソルバ装置40は、対象重み値の行が第1パターンである場合、重みメモリ50における第1記憶領域に記憶されたN個の重み値のうちの対象重み値の列に対応する重み値を読み出す。また、ソルバ装置40は、対象重み値の行が第2パターンである場合、重みメモリ50における第2記憶領域に記憶されたN個の重み値のうちの対象重み値の列に対応する重み値を読み出す。これにより、ソルバ装置40は、第1パターンのN個の重み値、第2パターンのN個の重み値およびパターン情報に基づき、N×N個の重み値のそれぞれを読み出すことができる。
以上のように、第1実施形態に係る情報処理装置20は、組合せ最適化問題におけるコスト関数に含まれる複数の重み値のうち、パターンが同一の第1部分重み群および第2重み群を重みメモリ50の共通の領域に記憶させる。これにより、情報処理装置20は、複数の重み値の全てを生成するのではなく、複数の重み値の一部分を生成すればよいので、複数の重み値の全てを生成する場合の生成時間と比較して、短い時間で組合せ最適化問題を生成することができる。従って、情報処理装置20は、組合せ最適化問題を高速に生成して、ソルバ装置40に早期に求解を開始させることができる。
さらに、ソルバ装置40は、複数の重み値の全てを記憶せずに、複数の重み値の一部分を記憶すればよいので、重みメモリ50のサイズを小さくすることができる。これにより、本実施形態に係る情報処理装置20は、ソルバ装置40の構成を小さくすることができる。
(第2実施形態)
つぎに、第2実施形態に係る市場システム10について説明する。第2実施形態に係る市場システム10は、第1実施形態と略同一の機能および構成を有するので、略同一の機能および構成を有する要素については同一の符号を付けて、相違点を除き詳細な説明を省略する。第3実施形態以降も同様である。
図10は、第2実施形態に係る組合せ最適化問題におけるコスト関数に含まれる複数の重み値の一例を示す図である。
例えば、複数の重み値のそれぞれは、所定の第1領域における位置を表すインデックスにより識別される。例えば、複数の重み値が行列により表される場合、複数の重み値のそれぞれは、行列における行番号と列番号との組により表されるインデックスにより識別される。本実施形態において、行列における任意の行の番号は、iと表される。また、行列における任意の列の番号は、jと表される。
本実施形態において、所定の第1領域は、行列を用いて表される2次元空間である。しかし、所定の第1領域は、配列により表される1次元空間であってもよいし、テンソルにより表される3次元空間および4次元空間等の多次元空間であってもよい。
図11は、M個の部分領域、K個のパターン、パターン情報、領域変換情報、および、部分アドレス変換情報の一例を示す図である。
本実施形態において、複数の重み値が配置される所定の第1領域は、同一の形状を有するM個の領域に分割される。なお、Mは、3以上の整数である。
図11の例においては、所定の第1領域は、行方向に4個の部分領域に分割され、列方向に4個の部分領域に分割されている。すなわち、図11の例においては、所定の第1領域は、同一形状の16個の部分領域に分割される。なお、所定の第1領域が4次元空間等の多次元空間である場合、M個の部分領域のそれぞれは、多次元の空間であってよい。
また、M個の部分領域のそれぞれは、ブロック番号(B_N)により識別される。例えば、図11においては、16個の部分領域のそれぞれは、1から16のブロック番号(B_N)により識別される。
M個の部分領域のそれぞれは、複数の重み値の一部である部分重み群が配置される。そして、M個の部分領域のそれぞれに配置される部分重み群は、K個のパターン(Kは、2以上、Mより小さい整数)のうちの何れのパターンにより表される。すなわち、M個の部分領域のうち同一のパターンを含む2以上の部分領域は、同一の部分重み群を含む。
また、パターン情報は、M個の部分領域のそれぞれが、K個のパターンうちの何れのパターンの部分重み群を含むかを示す。例えば、パターン情報は、ブロック番号(B_N)をインデックスとして、パターンを識別する情報(Pk)を含む。
また、領域変換情報は、所定の第1領域における対象重み値の位置を表すインデックスを、M個の部分領域のうちの対象重み値が含まれる部分領域を識別するブロック番号(B_N)に変換するための情報である。例えば、領域変換情報は、行番号(i)および列番号(j)の組を、ブロック番号(B_N)に変換する関数{f(i,j)}である。
また、部分アドレス変換情報は、所定の第1領域における対象重み値の位置を表すインデックスを、部分領域内における対象重み値の位置を表す部分アドレス(i´,j´)に変換するための情報である。例えば、部分アドレス変換情報は、行番号(i)および列番号(j)の組を、部分アドレス(i´,j´)に変換する関数{g(i,j)}であってもよい。
本実施形態において、問題生成部42は、組合せ最適化問題の生成において、このようなK個のパターン、パターン情報、領域変換情報および部分アドレス変換情報を生成する。そして、問題生成部42は、生成したK個のパターン、パターン情報、領域変換情報および部分アドレス変換情報をソルバ装置40に与える。
なお、所定の第1領域に対するM個の部分領域の分割位置が固定されている場合、問題生成部42は、領域変換情報および部分アドレス変換情報を生成しなくてもよい。この場合、ソルバ装置40は、領域変換情報および部分アドレス変換情報が予め設定されている。
図12は、第2実施形態に係るソルバ装置40の構成を示す図である。
第2実施形態に係るソルバ装置40は、探索回路62と、部分領域特定回路64と、部分アドレス特定回路66と、重みメモリ50と、パターンメモリ52と、セレクタ68とを含む。
探索回路62は、重みメモリ50に記憶された複数の重み値のそれぞれを読み出して、コスト関数を最小化する解を探索する。複数の重み値のうちの対象重み値(Ji,j)を読み出す場合、探索回路62は、対象重み値(Ji,j)の所定の第1領域における位置を表すインデックスを指定する。例えば、探索回路62は、インデックスとして、対象重み値(Ji,j)の行番号(i)および列番号(j)を指定する。
部分領域特定回路64は、問題生成部42から、領域変換情報(f(i,j))を受け取る。所定の第1領域に対するM個の部分領域の分割位置が固定されている場合には、部分領域特定回路64は、領域変換情報(f(i,j))が予め設定されていてもよい。
部分領域特定回路64は、探索回路62が対象重み値(Ji,j)を読み出す場合、対象重み値(Ji,j)の行番号(i)および列番号(j)をインデックスとして取得する。そして、部分領域特定回路64は、領域変換情報(f(i,j))および対象重み値(Ji,j)のインデックスに基づき、M個の部分領域のうち、対象重み値(Ji,j)が含まれる対象部分領域を識別するブロック番号(B_N)を出力する。
部分アドレス特定回路66は、問題生成部42から、部分アドレス変換情報(g(i,j))を受け取る。所定の第1領域に対するM個の部分領域の分割位置が固定されている場合には、部分アドレス特定回路66は、部分アドレス変換情報(g(i,j))が予め設定されていてもよい。
部分アドレス特定回路66は、探索回路62が対象重み値(Ji,j)を読み出す場合、対象重み値(Ji,j)の行番号(i)および列番号(j)を取得する。そして、部分アドレス特定回路66は、部分アドレス変換情報(g(i,j))および対象重み値(Ji,j)のインデックスに基づき、対象部分領域内における対象重み値(Ji,j)の位置を表す対象部分アドレス(i´,j´)を出力する。
パターンメモリ52は、問題生成部42からパターン情報が書き込まれる。パターンメモリ52は、部分領域特定回路64からブロック番号(B_N)を受け取る。パターンメモリ52は、ブロック番号(B_N)を受け取った場合、記憶しているパターン情報における、受け取ったブロック番号(B_N)により識別されるパターンを示す情報(Pk)を出力する。
重みメモリ50は、K個の部分メモリ70-1~70-Kを含む。K個の部分メモリ70-1~70-Kは、K個のパターンに一対一で対応する。すなわち、K個の部分メモリ70-1~70-Kのうちのk番目の部分メモリ70-k(kは、1以上、K以下の整数)は、K個のパターンのうちのk番目のパターンに対応する。K個の部分メモリ70-1~70-Kのそれぞれは、K個のパターンのうちの対応するパターンの部分重み群が、問題生成部42により書き込まれる。すなわち、k番目の部分メモリ70-kは、k番目のパターンの部分重み群が書き込まれる。
K個の部分メモリ70-1~70-Kのそれぞれは、部分アドレス特定回路66から対象部分アドレス(i´,j´)を受け取る。K個の部分メモリ70-1~70-Kのそれぞれは、対象部分アドレス(i´,j´)を受け取った場合、記憶している部分重み群のうちの対象部分アドレス(i´,j´)により識別される重み値を出力する。
セレクタ68は、パターンメモリ52から、ブロック番号(B_N)により識別されるパターンを示す情報(Pk)を受け取る。セレクタ68は、パターンを示す情報(Pk)を受け取った場合、K個の部分メモリ70-1~70-Kのうち、受け取ったパターン示す情報(Pk)により指定される1個の部分メモリ70を選択する。そして、セレクタ68は、パターンメモリ52から、選択した部分メモリ70から出力される重み値を、対象重み値(Ji,j)として探索回路62に与える。
このようにソルバ装置40は、複数の重み値のうちの対象重み値を読み出す場合、M個の部分領域のうち、対象重み値が含まれる対象部分領域を特定する。続いて、ソルバ装置40は、パターン情報に基づき、K個のパターンのうちの、対象部分領域における対象パターンを特定する。続いて、ソルバ装置40は、対象部分領域における対象重み値の位置を表す対象部分アドレスを特定する。そして、ソルバ装置40は、重みメモリ50から、対象パターンの部分重み群における、対象部分アドレスにより特定される重み値を、対象重み値として読み出す。これにより、ソルバ装置40は、K個のパターンから、対象重み値(Ji,j)を読み出すことができる。
以上のように、第2実施形態に係る情報処理装置20は、K個のパターンの部分重み群を重みメモリ50に記憶させる。これにより、情報処理装置20は、複数の重み値の全てを生成するのではなく、K個のパターンの部分重み群を生成すればよいので、複数の重み値の全てを生成する場合の生成時間と比較して、短い時間で組合せ最適化問題を生成することができる。従って、情報処理装置20は、組合せ最適化問題を高速に生成して、ソルバ装置40に早期に求解を開始させることができる。
さらに、ソルバ装置40は、複数の重み値の全てを記憶せずに、K個のパターンの部分重み群を記憶すればよいので、重みメモリ50のサイズを小さくすることができる。これにより、本実施形態に係る情報処理装置20は、ソルバ装置40の構成を小さくすることができる。
(第3実施形態)
つぎに、第3実施形態に係る市場システム10について説明する。
図13は、第3実施形態に係るソルバ装置40の構成を示す図である。第3実施形態に係る情報処理装置20は、シミュレーテッド分岐アルゴリズムを実行するソルバ装置40を備える。
ソルバ装置40は、演算回路71と、入力回路72と、出力回路73と、設定回路74とを備える。
演算回路71は、時刻を表すパラメータであるtを、初期時刻(例えば0)から終了時刻まで、単位時間(Δt)ずつ増加させる。演算回路71は、N個の仮想点(仮想的な粒子)のそれぞれに対応付けられた、第1変数(x)および第2変数(y)を算出する。N個の仮想点は、イジングモデルにおけるN個のスピンに対応する。N個の仮想点のうちのi番目の仮想点は、イジングモデルにおけるN個のスピンのうちのi番目のスピンに対応する。
第1変数(x)は、対応する仮想点の位置を表す位置変数である。第2変数(y)は、対応する仮想点の運動量を表す運動量変数である。
演算回路71は、初期時刻から終了時刻まで単位時間毎に、N個の第1変数(x)のそれぞれおよびN個の第2変数(y)のそれぞれを、単位時間毎に順次に且つ第1変数(x)と第2変数(y)とを交互に算出する。より具体的には、演算回路71は、初期時刻から終了時刻まで単位時間毎に、式(4-1)および式(4-2)のアルゴリズムで示された演算を実行する。なお、演算回路71は、式(5-1)、式(5-2)および式(5-3)のアルゴリズムで示された演算を実行してもよいし、式(6-1)、式(6-2)および式(6-3)のアルゴリズムで示された演算を実行してもよい。そして、演算回路71は、終了時刻におけるN個の第1変数(x)のそれぞれの値(すなわち、N個の仮想点のそれぞれの位置)を2値化することにより、組合せ最適化問題の解を算出する。
入力回路72は、演算回路71による演算処理に先だって、初期時刻におけるN個の第1変数(x)およびN個の第2変数(y)のそれぞれの初期値を取得して、演算回路71に与える。出力回路73は、演算回路71による演算処理の終了後に、組合せ最適化問題の解を演算回路71から取得する。そして、出力回路73は、取得した解を出力する。設定回路74は、演算回路71による演算処理に先だって、各パラメータを演算回路71に対して設定する。
図14は、演算回路71のブロック構成を示す図である。図14の説明において、対象時刻(第2時刻)は、初期時刻から終了時刻までの時間を単位時間毎に区切った場合における何れかの時刻である。図14の説明において、直前時刻(第1時刻)は、tと表される。また、対象時刻(第2時刻)は、tと表される。
演算回路71は、Xメモリ81と、Yメモリ82と、作用演算回路83と、時間発展回路84(第1回路)と、制御回路85とを備える。
Xメモリ81は、直前時刻(t)におけるN個の第1変数(x(t))を記憶する。Xメモリ81は、時刻の更新に伴って、記憶している直前時刻(t)におけるN個の第1変数(x(t))が書き換えられる。すなわち、Xメモリ81は、対象時刻(t)におけるN個の第1変数(x(t))が算出された場合、算出された対象時刻(t)におけるN個の第1変数(x(t))が、新たな直前時刻(t)におけるN個の第1変数(x(t))として書き込まれる。設定回路74は、演算に先だって、初期時刻におけるN個の第1変数xをXメモリ81に書き込む。
Yメモリ82は、直前時刻(t)におけるN個の第2変数(y(t))を記憶する。Yメモリ82は、時刻の更新に伴って、記憶している直前時刻(t)におけるN個の第2変数(y(t))が書き換えられる。すなわち、Yメモリ82は、対象時刻(t)におけるN個の第2変数(y(t))が算出された場合、算出された対象時刻(t)におけるN個の第2変数(y(t))が、新たな直前時刻(t)におけるN個の第2変数(y(t))として書き込まれる。設定回路74は、演算に先だって、初期時刻におけるN個の第2変数yをYメモリ82に書き込む。
作用演算回路83は、直前時刻(t)におけるN個の第1変数(x(t))をXメモリ81から取得する。そして、作用演算回路83は、N個の仮想点のそれぞれについて、直前時刻(t)における更新値(z(t))を算出する。
時間発展回路84は、N個の仮想点のそれぞれについて、直前時刻(t)における更新値(z(t))を作用演算回路83から取得する。さらに、時間発展回路84は、N個の仮想点のそれぞれについて、直前時刻(t)における第1変数(x(t))をXメモリ81から取得し、直前時刻(t)における第2変数(y(t))をYメモリ82から取得する。そして、時間発展回路84は、N個の仮想点のそれぞれについて、対象時刻(t)における第1変数(x(t))を算出し、Xメモリ81に記憶されている直前時刻(t)における第1変数(x(t))を書き換える。これとともに、時間発展回路84は、N個の仮想点のそれぞれについて、対象時刻(t)における第2変数(y(t))を算出し、Yメモリ82に記憶されている直前時刻(t)における第2変数(y(t))を書き換える。
制御回路85は、対象時刻(t)を単位時間(Δt)毎に順次に更新することにより、作用演算回路83および時間発展回路84に対して単位時間(Δt)毎の第1変数(x(t))および第2変数(y(t))を順次に算出させる。
さらに、制御回路85は、単位時刻毎に、1からNまでのインクリメントすることにより、N個の仮想点を識別するインデックス(i)を発生する。制御回路85は、作用演算回路83および時間発展回路84に対してインデックス(i)を与えて、N個の仮想点のそれぞれに対応する、対象時刻(t)における第1変数(x(t))および対象時刻(t)における第2変数(y(t))をインデックス順に算出させる。なお、作用演算回路83および時間発展回路84は、複数個のインデックスに対応する複数個の第1変数(x(t))および複数個の第2変数(y(t))を並列に算出してもよい。
図15は、作用演算回路83の構成を示す図である。作用演算回路83は、重みメモリ50と、行列演算回路93と、α関数回路94と、第1加算回路95とを有する。重みメモリ50は、Jメモリ91と、Hメモリ92とを含む。
Jメモリ91は、(N×N)個の重み値を含むN×Nの行列(J)を発生するためのパターンを記憶する。Jは、行列に含まれるi行j列の重み値を表す。Jは、イジングモデルにおけるi番目のスピンとj番目のスピンとの結合係数に相当する。設定回路74は、演算に先だって、問題生成部42により生成された行列(J)を発生するためのパターンをJメモリ91に書き込む。
Hメモリ92は、N個のバイアス係数を含む配列を記憶する。hは、配列に含まれるi番目のバイアス係数を表す。hは、イジングモデルにおける、i番目のスピンに作用する局所磁場係数に相当する。設定回路74は、演算に先だって、問題生成部42により生成された、N個のバイアス係数を含む配列をHメモリ92に書き込む。
行列演算回路93は、Xメモリ81から、直前時刻(t)におけるN個の第1変数(x(t))を取得する。行列演算回路93は、N個の仮想点のそれぞれについて、Jメモリ91から対象の行に含まれるN個の重み値Ji,jを取得する。そして、行列演算回路93は、N個の仮想点のそれぞれについて、直前時刻(t)におけるN個の第1変数(x(t))と、対象の行に含まれるN個の重み値Ji,jとの積和演算を実行する。
α関数回路94は、N個の仮想点のそれぞれについて、Hメモリ92から対象のバイアス係数hを取得する。α関数回路94は、N個の仮想点のそれぞれについて、{-hα(t)}の演算を実行する。α(t)は、予め設定された関数である。
第1加算回路95は、N個の仮想点のそれぞれについて、行列演算回路93による積和演算結果と、α関数回路94による演算結果とを加算する。この演算により、第1加算回路95は、N個の仮想点のそれぞれについて、式(8)で表される直前時刻(t)における更新値(z(t))を出力する。
図16は、行列(J)の一例を示す図である。第3実施形態において、N×N個の重み値を含む行列(J)は、N個の行のそれぞれに含まれるN個の重み値が、第1パターン{J1(J1,1,J1,2,…,J1,N)}または第2パターン{J2(J2,1,J2,2,…,J2,N)}の何れかである。
第3実施形態に係る問題生成部42は、行列(J)として第1パターンおよび第2パターンを生成して、Jメモリ91に記憶させる。また、問題生成部42は、行列(J)におけるN個の行のそれぞれが第1パターンであるか第2パターンであるかを示すパターン情報を生成し、行列演算回路93に与える。
図17は、第3実施形態に係る行列演算回路93の構成を、Jメモリ91およびXメモリ81とともに示す図である。
Jメモリ91は、第1部分メモリ111と、第2部分メモリ112とを含む。
第1部分メモリ111は、第1パターンのN個の重み値{J1(J1,1,J1,2,…,J1,N)}を記憶する。第1部分メモリ111は、クロックが与えられる毎に、N個の重み値のうちの1列目から順に、1個ずつ重み値を出力する。そして、第1部分メモリ111は、N列目の重み値を出力した後、1列目に戻り、再度、1列目からクロック毎に重み値を出力する。すなわち、第1部分メモリ111は、Nクロック毎に、1列目から重み値の出力を開始する。
第2部分メモリ112は、第2パターンのN個の重み値{J2(J2,1,J2,2,…,J2,N)}を記憶する。第2部分メモリ112は、クロックが与えられる毎に、N個の重み値のうちの1列目から順に、1個ずつ重み値を出力する。そして、第2部分メモリ112は、N列目の重み値を出力した後、1列目に戻り、再度、1列目からクロック毎に重み値を出力する。すなわち、第2部分メモリ112は、Nクロック毎に、1列目から重み値の出力を開始する。
Xメモリ81は、直前時刻におけるN個の第1変数(x(t))(第1時刻におけるN個の第1中間変数の一例)を記憶する。Xメモリ81は、クロック毎に、N個の第1変数(x(t))を、1番目の第1変数(x(t))から順に、N番目の第1変数(x(t))まで出力する。Xメモリ81は、N番目の第1変数(x(t))を出力した後、次のクロックにおいて1番目の第1変数(x(t))を出力する。Xメモリ81は、インデックス(i)が更新されたクロックにおいて、1番目の第1変数(x(t))を出力する。
行列演算回路93は、パターンメモリ52と、パターンセレクタ113(第1セレクタ)と、乗算回路115と、累積加算回路116とを含む。
パターンメモリ52は、問題生成部42により生成されたパターン情報を記憶する。パターンメモリ52は、制御回路85から発生される1~Nの何れかを表すインデックス(i)を取得する。インデックス(i)は、Nクロック毎にインクリメントされる。インデックス(i)がインクリメントされるタイミングと、第1部分メモリ111および第2部分メモリ112から1列目の重み値が出力されるタイミングとは、同期している。パターンメモリ52は、インデックス(i)に対応する行が第1パターンであるか第2パターンであるかを示す選択値(0または1)を出力する。本例において、選択値は、0の場合、第1パターンを示し、1の場合、第2パターンを示す。
パターンセレクタ113は、パターンメモリ52から、0または1を表す選択値を受け取る。パターンセレクタ113は、第1部分メモリ111または第2部分メモリ112のうち、選択値により指定される一方から出力された重み値を選択して出力する。
乗算回路115は、パターンセレクタ113から出力された重み値と、Xメモリ81から出力された第1変数(x(t))とを乗算し、乗算結果を出力する。
累積加算回路116は、加算器121と、リセットセレクタ122と、第2ラッチ回路123とを含む。加算器121は、乗算回路115から出力された乗算結果と、第2ラッチ回路123が記憶する値とを加算する。リセットセレクタ122は、加算器121から出力される値を、第2ラッチ回路123に与える。さらに、リセットセレクタ122は、Nクロック毎に、すなわち、インデックス(i)の更新に同期して、加算器121から出力される値に代えて、0を第2ラッチ回路123に与える。第2ラッチ回路123は、クロック毎に、リセットセレクタ122から出力された値を取り込んで記憶する。
このような累積加算回路116は、クロック毎に、乗算回路115から出力された乗算結果を累積加算した累積加算値を算出する。累積加算回路116は、Nクロック毎に、すなわち、インデックス(i)の更新に同期して、累積加算値を0にリセットする。また、累積加算回路116は、累積加算値を0にリセットする直前のサイクルにおいて、累積加算値を、行列(J)におけるインデックス(i)に対応する行に含まれるN個の重み値(Ji,1~Ji,N)と、第1変数(x(t))との積和演算結果として出力する。
このような行列演算回路93は、式(9)により表される積和演算結果(Z´(t))(N個の第2中間変数のうちのi番目の第2中間変数の一例)を算出することができる。
以上のように、第3実施形態に係る情報処理装置20は、第1パターンのN個の重み値{J1(J1,1,J1,2,…,J1,N)}および第2パターンのN個の重み値{J2(J2,1,J2,2,…,J2,N)}を重みメモリ50に記憶させる。これにより、情報処理装置20は、N×N個の重み値の全てを生成するのではなく、2×N個の重み値を生成すればよいので、複数の重み値の全てを生成する場合の生成時間と比較して、短い時間で組合せ最適化問題を生成することができる。従って、情報処理装置20は、組合せ最適化問題を高速に生成して、ソルバ装置40に早期に求解を開始させることができる。
さらに、ソルバ装置40は、N×N個の重み値の全てを記憶せずに、2×N個の重み値を記憶すればよいので、重みメモリ50のサイズを小さくすることができる。これにより、本実施形態に係る情報処理装置20は、ソルバ装置40の構成を小さくすることができる。
なお、本実施形態においては、行列(J)のi行に含まれるN個の重み値は、第1パターンまたは第2パターンの何れかであった。しかし、行列(J)のi行に含まれるN個の重み値は、K個のパターンのうちの何れかのパターンであってもよい。この場合、重みメモリ50は、K個の部分メモリ70-1~70-Kを含む。そして、K個の部分メモリ70-1~70-Kのうちのk番目の部分メモリ70-k(kは、1以上、K以下の整数)は、K個のパターンのk番目のパターンのN個の重み値を記憶する。K個の部分メモリ70-1~70-Kのそれぞれは、第1部分メモリ111および第2部分メモリ112と同様にN個の重み値が読み出される。また、パターン情報は、行列(J)に含まれるN個の行のそれぞれが、K個のパターンのうちの何れのパターンであるかを示す。
また、重みメモリ50がK個の部分メモリ70-1~70-Kを含む場合、パターンセレクタ113は、K個の部分メモリ70-1~70-Kのうち、パターン情報に示されるi行目のパターンに対応する部分メモリ70から出力されるN個の重み値を選択して出力する。累積加算回路116は、パターンセレクタ113から出力されるN個の重み値のそれぞれとxとを乗算した結果を累積加算する。そして、累積加算回路116は、累積加算して得られる累積加算結果を、式(9)により表される積和演算結果(Z´(t))として出力する。
(第4実施形態)
つぎに、第4実施形態に係る市場システム10について説明する。第4実施形態に係る市場システム10は、行列演算回路93を除き、第3実施形態と同一である。以下、第4実施形態に係る行列演算回路93について説明をし、第3実施形態と同一の構成については詳細な説明を省略する。
図18は、第4実施形態に係る行列演算回路93の構成を、Jメモリ91およびXメモリ81とともに示す図である。
行列演算回路93は、パターンメモリ52と、第1乗算回路131と、第2乗算回路132と、第1累積加算回路133と、第2累積加算回路134と、出力セレクタ137とを含む。
第1乗算回路131は、第1部分メモリ111からクロック毎に出力される重み値と、Xメモリ81から出力された第1変数(x(t))とを乗算し、第1乗算結果を出力する。
第2乗算回路132は、第2部分メモリ112からクロック毎に出力される重み値と、Xメモリ81から出力された第1変数(x(t))とを乗算し、第2乗算結果を出力する。
第1累積加算回路133は、第3実施形態に係る累積加算回路116と同一構成である。第1累積加算回路133は、クロック毎に、第1乗算回路131から出力された第1乗算結果を累積加算した第1累積加算値を算出する。第1累積加算回路133は、Nクロック毎に、すなわち、インデックス(i)の更新に同期して、第1累積加算値を0にリセットする。また、第1累積加算回路133は、第1累積加算値を0にリセットする直前のサイクルにおいて、第1累積加算値を出力する。
第2累積加算回路134は、第3実施形態に係る累積加算回路116と同一構成である。第2累積加算回路134は、クロック毎に、第2乗算回路132から出力された第2乗算結果を累積加算した第2累積加算値を算出する。第2累積加算回路134は、Nクロック毎に、すなわち、インデックス(i)の更新に同期して、第2累積加算値を0にリセットする。また、第2累積加算回路134は、第2累積加算値を0にリセットする直前のサイクルにおいて、第2累積加算値を出力する。
出力セレクタ137は、パターンメモリ52から、0または1を表す選択値を受け取る。出力セレクタ137は、第1累積加算回路133または第2累積加算回路134のうち、選択値により指定される一方から出力された累積加算値を選択する。そして、出力セレクタ137は、選択した累積加算値を、行列(J)におけるインデックス(i)に対応する行に含まれるN個の重み値(Ji,1~Ji,N)と、第1変数(x(t))との積和演算結果として出力する。
以上のように、第4実施形態に係る情報処理装置20は、第1パターンのN個の重み値{J1(J1,1,J1,2,…,J1,N)}および第2パターンのN個の重み値{J2(J2,1,J2,2,…,J2,N)}を重みメモリ50に記憶させる。これにより、情報処理装置20は、N×N個の重み値の全てを生成するのではなく、2×N個の重み値を生成すればよいので、複数の重み値の全てを生成する場合の生成時間と比較して、短い時間で組合せ最適化問題を生成することができる。従って、情報処理装置20は、組合せ最適化問題を高速に生成して、ソルバ装置40に早期に求解を開始させることができる。
さらに、ソルバ装置40は、N×N個の重み値の全てを記憶せずに、2×N個の重み値を記憶すればよいので、重みメモリ50のサイズを小さくすることができる。これにより、本実施形態に係る情報処理装置20は、ソルバ装置40の構成を小さくすることができる。
なお、行列(J)のi行に含まれるN個の重み値は、K個のパターンのうちの何れかのパターンであってもよい。この場合、重みメモリ50は、K個の部分メモリ70-1~70-Kを含む。そして、K個の部分メモリ70-1~70-Kのうちのk番目の部分メモリ70-kは、K個のパターンのk番目のパターンのN個の重み値を記憶する。K個の部分メモリ70-1~70-Kのそれぞれは、第1部分メモリ111および第2部分メモリ112と同様にN個の重み値が読み出される。また、パターン情報は、行列(J)に含まれるN個の行のそれぞれが、K個のパターンのうちの何れのパターンであるかを示す。
また、第4実施形態において、重みメモリ50がK個の部分メモリ70-1~70-Kを含む場合、行列演算回路93は、K個の乗算回路と、K個の累積加算回路とを含む。K個の乗算回路のうちのk番目の乗算回路は、K個の部分メモリ70-1~70-Kのうちのk番目の部分メモリ70-kから出力されるN個の重み値のそれぞれと、xとを乗算した結果を出力する。K個の累積加算回路のそれぞれは、第1累積加算回路133および第2累積加算回路134と同一構成である。K個の累積加算回路のうちのk番目の累積加算回路は、k番目の乗算回路から出力された乗算結果をNサイクル分加算する。すなわち、k番目の累積加算回路は、k番目の部分メモリ70-kから出力されるN個の重み値のそれぞれと、xとを乗算した結果を累積加算した累積加算結果を出力する。出力セレクタ137は、K個の累積加算回路のうち、パターン情報に示されるi行目のパターンに対応する累積加算回路から出力される累積加算結果を、式(9)により表される積和演算結果(Z´(t))として出力する。
(第5実施形態)
つぎに、第5実施形態に係る制御システム210について説明する。
第1実施形態から第4実施形態においては、情報処理装置20を市場システム10に適用する例について説明した。情報処理装置20は、市場システム10に限らず、時間経過に従って変化するデータに対して組合せ最適化問題を用いて処理を実行するシステムであれば、他のシステムに適用することもできる。例えば、情報処理装置20は、移動体における移動動作を制御する制御システム210に適用することもできる。
図19は、第5実施形態に係る制御システム210の構成の一例を示す図である。制御システム210は、例えば、自動運転自動車、ドローンまたはロボット等の自律的に移動をする移動体を制御する。
制御システム210は、物体検出装置212と、情報処理装置20と、制御装置214とを備える。
物体検出装置212は、例えば、制御対象の移動体の周囲を撮像するカメラから画像データを取得する。物体検出装置212は、画像データに加えて、他のセンサ装置からセンサデータを取得してもよい。物体検出装置212は、取得した画像データおよびセンサデータ等に基づき、移動体の周囲の1または複数の物体のそれぞれについて、三次元座標を表す座標データを検出する。さらに、物体検出装置212は、制御対象の移動体自身の三次元座標も検出してもよい。
物体検出装置212は、1または複数の物体のうちの何れか1つの物体を識別する識別情報、および、識別情報により識別される物体の座標を表す座標データ(入力情報)を含むデータを、不定期に繰り返して情報処理装置20に出力する。なお、入力情報は、座標データに加えて、識別情報により識別される物体の移動速度、加速度、移動方向および物体の種類等のその他の関連する情報を含んでもよい。
制御装置214は、情報処理装置20から、移動体を制御するために移動体に対して所定操作をすることを示す出力情報を含む出力データを取得する。制御装置214は、取得した出力データに基づき移動体を制御する。
また、出力情報は、移動体の周囲の1または複数の物体のうちの何れかの物体に対して所定操作をすることを示してもよい。例えば、出力情報は、移動体の周囲の1または複数の物体のうちの何れかの物体に対して、移動制御、所定指示または警告等を示す情報を与えること示す情報を含んでもよい。この場合、出力データは、1または複数の物体の何れかの物体を識別する識別情報と、出力情報とを含む。また、このような出力データを受け取った場合、制御装置214は、出力データに含まれる識別情報により識別される物体に対して、所定操作を実行する。
情報処理装置20は、第1実施形態から第4実施形態で説明をした構成と同様である。
情報処理装置20は、物体検出装置212から不定期に与えられたデータに基づき組合せ最適化問題を生成して、組合せ最適化問題をソルバ装置40に求解させる。そして、情報処理装置20は、ソルバ装置40から組合せ最適化問題の解を取得し、解を取得したことに応じて解に基づき出力データを生成し、生成した出力データを第1装置の一例である制御装置214へ出力する。
このような本実施形態に係る情報処理装置20は、組合せ最適化問題を高速に生成して、ソルバ装置40に早期に求解を開始させることができる。また、本実施形態に係る情報処理装置20は、ソルバ装置40の構成を小さくすることができる。
(ハードウェア構成)
図20は、情報処理装置20のハードウェア構成の一例を示す図である。情報処理装置20におけるソルバ装置40を含まない部分構成は、例えば図20に示すようなハードウェア構成のコンピュータにより実現される。情報処理装置20は、CPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、ROM(Read Only Memory)303と、記憶装置304と、通信インタフェース装置305とを備える。そして、これらの各部は、バスにより接続される。
CPU301は、プログラムに従って演算処理および制御処理等を実行する1つ以上のプロセッサである。CPU301は、RAM302の所定領域を作業領域として、ROM303および記憶装置304等に記憶されたプログラムとの協働により各種処理を実行する。
RAM302は、SDRAM(Synchronous Dynamic Random Access Memory)等のメモリである。RAM302は、CPU301の作業領域として機能する。ROM303は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
記憶装置304は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置304は、CPU301からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信インタフェース装置305は、CPU301からの制御に応じて外部の機器とネットワークを介して通信する。
コンピュータで実行されるプログラムは、コンピュータを、情報処理装置20として機能させる。このプログラムは、CPU301(プロセッサ)によりRAM302上に展開して実行される。
また、コンピュータで実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、CD-ROM、フレキシブルディスク、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、このプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、情報処理装置20で実行されるプログラムを、ROM303等に予め組み込んで提供するように構成してもよい。
コンピュータを情報処理装置20として機能させるためのプログラムは、例えば、取得モジュールと、ソルバモジュールと、問題生成モジュールと、処理実行モジュールとを含むモジュール構成となっている。このプログラムは、CPU301により実行されることにより各モジュールがRAM302にロードされ、CPU301を、取得部36、ソルバ装置40、問題生成部42および処理実行部46として機能させる。CPU301が複数のプロセッサの場合、これらの部を複数のプロセッサに分けて担わせてもよい。また、このプログラムは、RAM302および記憶装置304を入力メモリ32として機能させる。なお、これらの構成は、一部または全部がハードウェアにより構成されていてもよい。
また、ソルバ装置40は、例えばFPGA(Field-Programmable Gate Array)等の1つ以上の再構成可能な半導体装置により実現されてもよい。また、ソルバ装置40は、1つ以上のCPU、マイクロプロセッサ、GPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)、または、これらの回路等を含む電子回路によって実現されてもよい。
なお、ソルバ装置40は、情報処理装置20に組み込まれてもよい。例えば、ソルバ装置40は、情報処理装置20の一部にアクセラレータとして組み込まれてもよい。また、ソルバ装置40は、情報処理装置20の一部の機能、例えば問題生成部42を含んでもよい。
また、情報処理装置20がFPGA等の再構成可能な半導体装置により実現される場合、再構成可能な半導体装置を情報処理装置20として動作させるために再構成可能な半導体装置に書き込まれる回路情報(コンフィグレーションデータ)を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、再構成可能な半導体装置を情報処理装置20として動作させるために再構成可能な半導体装置に書き込まれる回路情報(コンフィグレーションデータ)を、コンピュータで読み取り可能な記録媒体に記録されて提供するように構成してもよい。
また、情報処理装置20がASIC等の半導体装置により実現される場合、情報処理装置20の設計および製造に用いられる、ハードウェア記述言語により記述された回路の構成を表す回路情報を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、情報処理装置20の設計および製造に用いられる、ハードウェア記述言語により記述された回路の構成を表す回路情報を、コンピュータで読み取り可能な記録媒体に記録されて提供するように構成してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
(付記)
なお、上記の実施形態を、以下の技術案にまとめることができる。
[技術案1]
データに対して処理を実行する情報処理装置であって、
組合せ最適化問題を求解するソルバ装置と、
情報処理回路と、
を備え、
前記情報処理回路は、
前記データを取得し、
前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
前記情報処理回路は、
前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
情報処理装置。
[技術案2]
前記情報処理回路は、さらに、前記ソルバ装置から前記組合せ最適化問題の解を取得し、前記解に基づく処理を実行する
技術案1に記載の情報処理装置。
[技術案3]
前記複数の重み値のうちの第1重み値は、所定の第1領域における位置を表すインデックスにより識別され、
前記所定の第1領域は、同一の形状を有するM個の部分領域(Mは、3以上の整数)に分割され、
前記M個の部分領域のうちの第1部分領域は、前記複数の重み値の一部である部分重み群を含み、
前記M個の部分領域のそれぞれに配置される前記部分重み群は、K個のパターン(Kは、2以上、Mより小さい整数)のうちの何れかのパターンにより表され、
前記第1メモリは、前記K個のパターンを記憶し、
前記第1情報は、前記M個の部分領域のそれぞれが前記K個のパターンのうちの何れのパターンの前記部分重み群を含むかを示す
技術案1または2に記載の情報処理装置。
[技術案4]
前記ソルバ装置は、前記第1情報を記憶する第2メモリをさらに含み、
前記情報処理回路は、前記組合せ最適化問題の生成において、
前記データに基づき前記K個のパターンの前記部分重み群を生成して前記第1メモリに書き込み、
前記データに基づき前記第1情報を生成して前記第2メモリに書き込む
技術案3に記載の情報処理装置。
[技術案5]
前記複数の重み値のうちの前記第1重み値を読み出す場合、前記ソルバ装置は、
前記M個の部分領域のうち、前記第1重み値が含まれる部分領域を特定し、
前記第1情報に基づき、前記K個のパターンのうちの、前記第1重み値が含まれる前記部分領域におけるパターンを特定し、
前記第1重み値が含まれる前記部分領域における前記第1重み値の位置を表す第1アドレスを特定し、
前記第1メモリから、特定した前記パターンの前記部分重み群における、前記第1アドレスにより特定される重み値を、前記第1重み値として読み出す
技術案4に記載の情報処理装置。
[技術案6]
前記コスト関数は、前記複数の決定変数として、N個の決定変数(Nは2以上の整数)を含み、前記複数の重み値として、N行×N列の重み値を含む行列を含み、
前記コスト関数は、前記N個の決定変数の二次関数により表される
技術案3から5の何れか1つに記載の情報処理装置。
[技術案7]
前記複数の決定変数のそれぞれは、二値の離散変数である
技術案6に記載の情報処理装置。
[技術案8]
前記組合せ最適化問題は、QUBO(Quadratic Unconstrained Binary Optimization)問題である
技術案7に記載の情報処理装置。
[技術案9]
前記ソルバ装置は、前記QUBO問題を、イジングモデルを最小化するイジング問題に帰着させて解く
技術案8に記載の情報処理装置。
[技術案10]
前記ソルバ装置は、シミュレーテッド分岐アルゴリズムにより前記イジング問題を解く
技術案9に記載の情報処理装置。
[技術案11]
前記コスト関数は、前記複数の決定変数の三次以上の関数であり、
前記組合せ最適化問題は、HUBO(Higher Order Binary Optimization)問題である
技術案7に記載の情報処理装置。
[技術案12]
前記ソルバ装置は、
第1時刻におけるN個の第1中間変数と、前記行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列演算回路と、
前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻の後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出する第1回路と、
開始時刻から終了時刻まで処理を前記行列演算回路および前記第1回路に実行させる制御回路と、
前記終了時刻における前記N個の第1変数に基づき、前記解を生成して出力する出力回路と、
を備え、
前記イジングモデルにおけるN個のスピンのうちのi番目のスピン(iは、1以上、N以下の整数)は、N個の点のうちのi番目の点に対応し、
前記N個の第1変数のうちのi番目の第1変数は、前記i番目のスピンに対応し、
前記N個の第2変数のうちのi番目の第2変数は、前記i番目のスピンに対応し、
前記i番目の第1変数は、前記i番目のスピンに対応する点の位置を表し、
前記i番目の第2変数は、前記i番目のスピンに対応する点の運動量を表し、
前記N個の第1中間変数のうちのi番目の第1中間変数は、前記i番目の第1変数に対応し、
前記i番目の第1中間変数は、前記i番目の第1変数または前記i番目の第1変数に予め設定された係数を乗じた値であり、
前記N個の第2中間変数のうちのi番目の第2中間変数は、前記i番目の第2変数に対応する
技術案10に記載の情報処理装置。
[技術案13]
前記行列に含まれる前記N行×N列の重み値のそれぞれは、Ji,jにより表され、
前記iは、前記行列の行番号を表し、
前記jは、前記行列の列番号を表し、1以上、N以下の整数であり、
前記行列のi行に含まれるN個の重み値は、前記K個のパターンのうちの何れかのパターンであり、
前記第1情報は、前記行列に含まれるN個の行のそれぞれが、前記K個のパターンのうちの何れのパターンであるかを示し、
前記第1メモリは、K個の部分メモリを含み、
前記K個の部分メモリのうちのk番目の部分メモリ(kは、1以上、K以下の整数)は、前記K個のパターンのk番目のパターンを記憶する
技術案12に記載の情報処理装置。
[技術案14]
前記行列演算回路は、
前記K個の部分メモリのうち、前記第1情報に示されるi行目のパターンに対応する部分メモリから出力される前記N個の重み値を選択して出力する第1セレクタと、
前記第1セレクタから出力される前記N個の重み値のそれぞれと、前記N個の第1中間変数のうちのj番目の第1中間変数とを乗算した結果を累積加算した累積加算結果を、前記N個の第2中間変数のうちのi番目の第2中間変数として出力する累積加算回路と、
を含む技術案13に記載の情報処理装置。
[技術案15]
前記行列演算回路は、
K個の累積加算回路と、
出力セレクタと、
を含み、
前記K個の累積加算回路のうちのk番目の累積加算回路は、前記K個の部分メモリのうちのk番目の部分メモリから出力される前記N個の重み値のそれぞれと、前記N個の第1中間変数のうちのj番目の第1中間変数とを乗算して結果を累積加算した累積加算結果を出力し、
前記出力セレクタは、前記K個の累積加算回路のうち、前記第1情報に示されるi行目のパターンに対応する累積加算回路から出力される累積加算結果を、前記N個の第2中間変数のうちのi番目の第2中間変数として出力する
技術案13に記載の情報処理装置。
[技術案16]
前記情報処理回路は、前記データの取得において、前記データとして、N個の対象(Nは2以上の整数)の取引をする市場サーバ装置から市況パケットを取得し、
前記市況パケットは、前記N個の対象のうちの少なくとも1つの対象についての取引価格を含み、
前記コスト関数は、前記複数の決定変数としてN個の決定変数を含み、
前記N個の決定変数のうちのn番目の決定変数(nは、1以上、N以下の整数)は、前記N個の対象のうちのn番目の対象を取引するか否かを表す
技術案1から15の何れか1つに記載の情報処理装置。
[技術案17]
前記データは、少なくとも1つの物体の座標を表す座標データを含む
技術案1から15の何れか1つに記載の情報処理装置。
[技術案18]
情報処理装置により、データに対して処理を実行する情報処理方法であって、
前記情報処理装置は、
組合せ最適化問題を求解するソルバ装置と、
情報処理回路と、
を備え、
前記情報処理回路が、
前記データを取得し、
前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
前記コスト関数を構成する複数の項のそれぞれは、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
前記情報処理回路が、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
前記情報処理回路が、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
前記ソルバ装置が、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
情報処理方法。
[技術案19]
組合せ最適化問題を求解するソルバ装置と、情報処理回路とを備える情報処理装置における、前記情報処理回路として、コンピュータを機能させるためのプログラムであって、
前記情報処理装置は、データに対して処理を実行し、
前記コンピュータを、
前記データを取得し、
前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させる
ように機能させ、
前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
前記コンピュータが、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
前記コンピュータが、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
前記ソルバ装置が、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
プログラム。
[技術案20]
ハードウェア記述言語により記載された、回路の構成を表す回路情報であって、
前記回路を、データに対して処理を実行する情報処理装置として機能させ、
前記情報処理装置は、
組合せ最適化問題を求解するソルバ装置と、
情報処理回路と、
を備え、
前記情報処理回路は、
前記データを取得し、
前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
前記情報処理回路は、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
前記情報処理回路は、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
回路情報。
[技術案21]
再構成可能な半導体装置を動作させるために、前記再構成可能な半導体装置に書き込まれる回路情報であって、
前記再構成可能な半導体装置を、データに対して処理を実行する情報処理装置として機能させ、
前記情報処理装置は、
組合せ最適化問題を求解するソルバ装置と、
情報処理回路と、
を備え、
前記情報処理回路は、
前記データを取得し、
前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
前記情報処理回路は、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
前記情報処理回路は、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
回路情報。
10 市場システム
12 市場サーバ装置
14 クライアント装置
16 受信部
17 マッチング部
18 配信部
20 情報処理装置
32 入力メモリ
36 取得部
40 ソルバ装置
42 問題生成部
46 処理実行部
50 重みメモリ
52 パターンメモリ
60 疑似コード
62 探索回路
64 部分領域特定回路
66 部分アドレス特定回路
68 セレクタ
70 部分メモリ
71 演算回路
72 入力回路
73 出力回路
74 設定回路
81 Xメモリ
82 Yメモリ
83 作用演算回路
84 時間発展回路
85 制御回路
91 Jメモリ
92 Hメモリ
93 行列演算回路
94 α関数回路
95 第1加算回路
111 第1部分メモリ
112 第2部分メモリ
113 パターンセレクタ
115 乗算回路
116 累積加算回路
121 加算器
122 リセットセレクタ
123 第2ラッチ回路
131 第1乗算回路
132 第2乗算回路
133 第1累積加算回路
134 第2累積加算回路
137 出力セレクタ
210 制御システム
212 物体検出装置
214 制御装置

Claims (21)

  1. データに対して処理を実行する情報処理装置であって、
    組合せ最適化問題を求解するソルバ装置と、
    情報処理回路と、
    を備え、
    前記情報処理回路は、
    前記データを取得し、
    前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
    前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
    前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
    前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
    前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
    前記情報処理回路は、
    前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
    前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
    前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
    情報処理装置。
  2. 前記情報処理回路は、さらに、前記ソルバ装置から前記組合せ最適化問題の解を取得し、前記解に基づく処理を実行する
    請求項1に記載の情報処理装置。
  3. 前記複数の重み値のうちの第1重み値は、所定の第1領域における位置を表すインデックスにより識別され、
    前記所定の第1領域は、同一の形状を有するM個の部分領域(Mは、3以上の整数)に分割され、
    前記M個の部分領域のうちの第1部分領域は、前記複数の重み値の一部である部分重み群を含み、
    前記M個の部分領域のそれぞれに配置される前記部分重み群は、K個のパターン(Kは、2以上、Mより小さい整数)のうちの何れかのパターンにより表され、
    前記第1メモリは、前記K個のパターンを記憶し、
    前記第1情報は、前記M個の部分領域のそれぞれが前記K個のパターンのうちの何れのパターンの前記部分重み群を含むかを示す
    請求項1に記載の情報処理装置。
  4. 前記ソルバ装置は、前記第1情報を記憶する第2メモリをさらに含み、
    前記情報処理回路は、前記組合せ最適化問題の生成において、
    前記データに基づき前記K個のパターンの前記部分重み群を生成して前記第1メモリに書き込み、
    前記データに基づき前記第1情報を生成して前記第2メモリに書き込む
    請求項3に記載の情報処理装置。
  5. 前記複数の重み値のうちの前記第1重み値を読み出す場合、前記ソルバ装置は、
    前記M個の部分領域のうち、前記第1重み値が含まれる部分領域を特定し、
    前記第1情報に基づき、前記K個のパターンのうちの、前記第1重み値が含まれる前記部分領域におけるパターンを特定し、
    前記第1重み値が含まれる前記部分領域における前記第1重み値の位置を表す第1アドレスを特定し、
    前記第1メモリから、特定した前記パターンの前記部分重み群における、前記第1アドレスにより特定される重み値を、前記第1重み値として読み出す
    請求項4に記載の情報処理装置。
  6. 前記コスト関数は、前記複数の決定変数として、N個の決定変数(Nは2以上の整数)を含み、前記複数の重み値として、N行×N列の重み値を含む行列を含み、
    前記コスト関数は、前記N個の決定変数の二次関数により表される
    請求項3に記載の情報処理装置。
  7. 前記複数の決定変数のそれぞれは、二値の離散変数である
    請求項6に記載の情報処理装置。
  8. 前記組合せ最適化問題は、QUBO(Quadratic Unconstrained Binary Optimization)問題である
    請求項7に記載の情報処理装置。
  9. 前記ソルバ装置は、前記QUBO問題を、イジングモデルを最小化するイジング問題に帰着させて解く
    請求項8に記載の情報処理装置。
  10. 前記ソルバ装置は、シミュレーテッド分岐アルゴリズムにより前記イジング問題を解く
    請求項9に記載の情報処理装置。
  11. 前記コスト関数は、前記複数の決定変数の三次以上の関数であり、
    前記組合せ最適化問題は、HUBO(Higher Order Binary Optimization)問題である
    請求項7に記載の情報処理装置。
  12. 前記ソルバ装置は、
    第1時刻におけるN個の第1中間変数と、前記行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列演算回路と、
    前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻の後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出する第1回路と、
    開始時刻から終了時刻まで処理を前記行列演算回路および前記第1回路に実行させる制御回路と、
    前記終了時刻における前記N個の第1変数に基づき、前記解を生成して出力する出力回路と、
    を備え、
    前記イジングモデルにおけるN個のスピンのうちのi番目のスピン(iは、1以上、N以下の整数)は、N個の点のうちのi番目の点に対応し、
    前記N個の第1変数のうちのi番目の第1変数は、前記i番目のスピンに対応し、
    前記N個の第2変数のうちのi番目の第2変数は、前記i番目のスピンに対応し、
    前記i番目の第1変数は、前記i番目のスピンに対応する点の位置を表し、
    前記i番目の第2変数は、前記i番目のスピンに対応する点の運動量を表し、
    前記N個の第1中間変数のうちのi番目の第1中間変数は、前記i番目の第1変数に対応し、
    前記i番目の第1中間変数は、前記i番目の第1変数または前記i番目の第1変数に予め設定された係数を乗じた値であり、
    前記N個の第2中間変数のうちのi番目の第2中間変数は、前記i番目の第2変数に対応する
    請求項10に記載の情報処理装置。
  13. 前記行列に含まれる前記N行×N列の重み値のそれぞれは、Ji,jにより表され、
    前記iは、前記行列の行番号を表し、
    前記jは、前記行列の列番号を表し、1以上、N以下の整数であり、
    前記行列のi行に含まれるN個の重み値は、前記K個のパターンのうちの何れかのパターンであり、
    前記第1情報は、前記行列に含まれるN個の行のそれぞれが、前記K個のパターンのうちの何れのパターンであるかを示し、
    前記第1メモリは、K個の部分メモリを含み、
    前記K個の部分メモリのうちのk番目の部分メモリ(kは、1以上、K以下の整数)は、前記K個のパターンのk番目のパターンを記憶する
    請求項12に記載の情報処理装置。
  14. 前記行列演算回路は、
    前記K個の部分メモリのうち、前記第1情報に示されるi行目のパターンに対応する部分メモリから出力される前記N個の重み値を選択して出力する第1セレクタと、
    前記第1セレクタから出力される前記N個の重み値のそれぞれと、前記N個の第1中間変数のうちのj番目の第1中間変数とを乗算した結果を累積加算した累積加算結果を、前記N個の第2中間変数のうちのi番目の第2中間変数として出力する累積加算回路と、
    を含む請求項13に記載の情報処理装置。
  15. 前記行列演算回路は、
    K個の累積加算回路と、
    出力セレクタと、
    を含み、
    前記K個の累積加算回路のうちのk番目の累積加算回路は、前記K個の部分メモリのうちのk番目の部分メモリから出力される前記N個の重み値のそれぞれと、前記N個の第1中間変数のうちのj番目の第1中間変数とを乗算して結果を累積加算した累積加算結果を出力し、
    前記出力セレクタは、前記K個の累積加算回路のうち、前記第1情報に示されるi行目のパターンに対応する累積加算回路から出力される累積加算結果を、前記N個の第2中間変数のうちのi番目の第2中間変数として出力する
    請求項13に記載の情報処理装置。
  16. 前記情報処理回路は、前記データの取得において、前記データとして、N個の対象(Nは2以上の整数)の取引をする市場サーバ装置から市況パケットを取得し、
    前記市況パケットは、前記N個の対象のうちの少なくとも1つの対象についての取引価格を含み、
    前記コスト関数は、前記複数の決定変数としてN個の決定変数を含み、
    前記N個の決定変数のうちのn番目の決定変数(nは、1以上、N以下の整数)は、前記N個の対象のうちのn番目の対象を取引するか否かを表す
    請求項1から15の何れか1項に記載の情報処理装置。
  17. 前記データは、少なくとも1つの物体の座標を表す座標データを含む
    請求項1から15の何れか1項に記載の情報処理装置。
  18. 情報処理装置により、データに対して処理を実行する情報処理方法であって、
    前記情報処理装置は、
    組合せ最適化問題を求解するソルバ装置と、
    情報処理回路と、
    を備え、
    前記情報処理回路が、
    前記データを取得し、
    前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
    前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
    前記コスト関数を構成する複数の項のそれぞれは、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
    前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
    前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
    前記情報処理回路が、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
    前記情報処理回路が、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
    前記ソルバ装置が、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
    情報処理方法。
  19. 組合せ最適化問題を求解するソルバ装置と、情報処理回路とを備える情報処理装置における、前記情報処理回路として、コンピュータを機能させるためのプログラムであって、
    前記情報処理装置は、データに対して処理を実行し、
    前記コンピュータを、
    前記データを取得し、
    前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させる
    ように機能させ、
    前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
    前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
    前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
    前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
    前記コンピュータが、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
    前記コンピュータが、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
    前記ソルバ装置が、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
    プログラム。
  20. ハードウェア記述言語により記載された、回路の構成を表す回路情報であって、
    前記回路を、データに対して処理を実行する情報処理装置として機能させ、
    前記情報処理装置は、
    組合せ最適化問題を求解するソルバ装置と、
    情報処理回路と、
    を備え、
    前記情報処理回路は、
    前記データを取得し、
    前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
    前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
    前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
    前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
    前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
    前記情報処理回路は、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
    前記情報処理回路は、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
    前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
    回路情報。
  21. 再構成可能な半導体装置を動作させるために、前記再構成可能な半導体装置に書き込まれる回路情報であって、
    前記再構成可能な半導体装置を、データに対して処理を実行する情報処理装置として機能させ、
    前記情報処理装置は、
    組合せ最適化問題を求解するソルバ装置と、
    情報処理回路と、
    を備え、
    前記情報処理回路は、
    前記データを取得し、
    前記データに基づき前記組合せ最適化問題を生成して、前記組合せ最適化問題を前記ソルバ装置に求解させ、
    前記組合せ最適化問題におけるコスト関数は、複数の決定変数および複数の重み値を含み、
    前記コスト関数に含まれる項は、前記複数の決定変数のうちの1以上の決定変数と、前記複数の重み値のうちの何れか1つの重み値との乗算により表され、
    前記複数の重み値のうちの一部分である第1部分重み群は、他の一部分である第2部分重み群と同一であり、
    前記ソルバ装置は、前記複数の重み値を記憶する第1メモリを含み、
    前記情報処理回路は、前記組合せ最適化問題の生成において、前記データに基づき前記複数の重み値を生成し、前記複数の重み値を前記第1メモリに書き込み、
    前記情報処理回路は、前記複数の重み値の書き込みにおいて、前記第1部分重み群および前記第2部分重み群を前記第1メモリにおける共通の領域に書き込み、前記第1メモリにおける前記複数の重み値のそれぞれの記憶位置を示す第1情報を前記ソルバ装置に与え、
    前記ソルバ装置は、前記第1情報に基づき、前記第1メモリから前記複数の重み値を読み出して、解を求解する
    回路情報。
JP2023116823A 2023-07-18 2023-07-18 情報処理装置、情報処理方法、プログラムおよび回路情報 Active JP7844397B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2023116823A JP7844397B2 (ja) 2023-07-18 2023-07-18 情報処理装置、情報処理方法、プログラムおよび回路情報
EP24160262.2A EP4495837A1 (en) 2023-07-18 2024-02-28 Information processing device, information processing method, computer program, and circuit information
US18/590,232 US20250028780A1 (en) 2023-07-18 2024-02-28 Information processing device, information processing method, computer program product, and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023116823A JP7844397B2 (ja) 2023-07-18 2023-07-18 情報処理装置、情報処理方法、プログラムおよび回路情報

Publications (2)

Publication Number Publication Date
JP2025014338A JP2025014338A (ja) 2025-01-30
JP7844397B2 true JP7844397B2 (ja) 2026-04-13

Family

ID=90104997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023116823A Active JP7844397B2 (ja) 2023-07-18 2023-07-18 情報処理装置、情報処理方法、プログラムおよび回路情報

Country Status (3)

Country Link
US (1) US20250028780A1 (ja)
EP (1) EP4495837A1 (ja)
JP (1) JP7844397B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7228425B2 (ja) * 2019-03-19 2023-02-24 株式会社東芝 計算装置、表示装置およびプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023037176A (ja) 2021-09-03 2023-03-15 株式会社東芝 計算装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6836529B2 (ja) 2018-02-23 2021-03-03 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP6820875B2 (ja) 2018-03-09 2021-01-27 株式会社東芝 計算装置
JP7051771B2 (ja) 2019-09-09 2022-04-11 株式会社東芝 計算装置、計算方法およびプログラム
JP7421291B2 (ja) 2019-09-10 2024-01-24 株式会社東芝 情報処理装置、プログラム、情報処理方法、および電子回路
JP7314014B2 (ja) 2019-10-08 2023-07-25 株式会社東芝 探索装置、探索方法、プログラム、探索システムおよび裁定取引システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023037176A (ja) 2021-09-03 2023-03-15 株式会社東芝 計算装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TATSUMURA, Kosuke et al.,Real-time Trading System based on Selections of Potentially Profitable, Uncorrelated, and Balanced Stocks by NP-hard Combinatorial Optimization,arXiv [online],2023年07月12日,pp.1-12,[retrieved on 2026.02.18],Retrieved from <https://arxiv.prg/abs/2307.06339>

Also Published As

Publication number Publication date
JP2025014338A (ja) 2025-01-30
EP4495837A1 (en) 2025-01-22
US20250028780A1 (en) 2025-01-23

Similar Documents

Publication Publication Date Title
CN114450699B (zh) 由处理单元实现的方法、可读存储介质和处理单元
CN114556260B (zh) 用于执行神经网络的装置和系统
JP7844397B2 (ja) 情報処理装置、情報処理方法、プログラムおよび回路情報
JP7840909B2 (ja) 情報処理装置、情報処理方法、プログラムおよび回路情報
Ravikumar et al. Acceleration of image processing and computer vision algorithms
Wu et al. Functional autoencoder for smoothing and representation learning
US20250251973A1 (en) Task manager, processing device, and method for checking task dependencies thereof
CN113487027B (zh) 基于时序对齐预测的序列距离度量方法、存储介质及芯片
US20020040428A1 (en) Computer system and method of controlling computation
US20250036711A1 (en) Information processing device, information processing method, computer program product, and device
EP4498291A1 (en) Information processing device, information processing method, computer program, and circuit information
KR20240125688A (ko) 주기적 데이터를 이용한 기계 학습
JP2025042315A (ja) 情報処理システム、情報処理装置、情報処理方法、プログラムおよび回路情報
US20250094526A1 (en) Information processing system, solver device, information processing method, computer program product, and device
Avatavului et al. Can neural networks enhance physics simulations?
US20250190813A1 (en) Fine-tuning of neural networks
JP7628638B1 (ja) 情報処理方法、情報処理装置、および、非一時的コンピュータ可読媒体
US20250252076A1 (en) Systolic array, processing circuit including systolic array, and electronic device
KR20200132306A (ko) 영상 처리 장치 및 그 동작방법
JP7785620B2 (ja) 情報処理システムおよび情報処理方法
Alia-Martinez et al. A straightforward implementation of a gpu-accelerated ELM in R with NVIDIA graphic cards
JP2023118378A (ja) 計算装置および情報処理システム
Lopez et al. A Memory Layout for Dynamically Routed Capsule Layers
Saha et al. GPU Accelerated Parallel Implementation of Linear Programming Algorithms
Eddine et al. Matrix-Probabilistic Particle Swarm Optimization for Supply Chain Optimization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20250318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20260217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20260303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20260401

R150 Certificate of patent or registration of utility model

Ref document number: 7844397

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150