JP2020004387A - 最適化問題計算プログラム及び最適化問題計算システム - Google Patents

最適化問題計算プログラム及び最適化問題計算システム Download PDF

Info

Publication number
JP2020004387A
JP2020004387A JP2019074219A JP2019074219A JP2020004387A JP 2020004387 A JP2020004387 A JP 2020004387A JP 2019074219 A JP2019074219 A JP 2019074219A JP 2019074219 A JP2019074219 A JP 2019074219A JP 2020004387 A JP2020004387 A JP 2020004387A
Authority
JP
Japan
Prior art keywords
value
group
variable
variables
vertices
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
Application number
JP2019074219A
Other languages
English (en)
Inventor
稲垣 和久
Kazuhisa Inagaki
和久 稲垣
彬 酒井
Akira Sakai
彬 酒井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to US16/434,375 priority Critical patent/US20190391807A1/en
Publication of JP2020004387A publication Critical patent/JP2020004387A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】組合せ最適化問題を複数の部分問題に分割して計算する際の計算量の増加を抑制する。【解決手段】処理部11bは、目的関数に含まれる全変数に対応する複数の頂点を有し、各変数間の相互作用の有無を、複数の頂点の各頂点間を結ぶ辺の有無に置き換えたグラフ20を生成し、グラフ20において、複数の頂点のうち、辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、グラフ20を抽象化したグラフ22を生成し、グラフ22に含まれる複数の頂点の接続関係と取得した分割数とに基づいて、全変数を、複数の部分問題の各々で用いられる変数群の候補と、複数の部分問題の各々の解に基づいて組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、グラフ20に含まれる複数の頂点の接続関係に基づいて、変数群の候補と境界変数群の候補とから、変数群と境界変数群を決定する。【選択図】図1

Description

本発明は、最適化問題計算プログラム及び最適化問題計算システムに関する。
組合せ最適化問題は、現在の社会における様々な分野に存在する。たとえば、製造・流通、マーケティングなどの分野では、コストを最適化(最小化)する要素の組合せが探索される。しかし、組合せ最適化問題は、上記要素に対応する変数の数が増えるにつれて指数関数的に計算時間が増加するため、従来のノイマン型コンピュータでは解くことが困難である問題として知られている。
このようなノイマン型コンピュータが不得意とする多変数の組合せ最適化問題を解く計算装置として、イジング型の目的関数(エネルギー関数、評価関数などとも呼ばれる)を用いたイジングマシンがある。イジングマシンは、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデル(QUBO(Quadratic Unconstrained Binary Optimization)とも呼ばれる)に置き換えて計算する。
イジングマシンには、デジタル回路を用いてシミュレーテッドアニーリングを行うことで目的関数の値が最小となる変数の値の組合せを計算するものや、超伝導回路を用いて量子アニーリングを行うことで同様の計算を行うものなどがある。
特開2017−219948号公報
Michael Booth, Steven P. Reinhardt, and Aidan Roy, "Partitioning Optimization Problems for Hybrid Classical/Quantum Execution", 2017/10/18, D-Wave Technical Report Series, 2017
ところで、組合せ最適化問題の目的関数に含まれる変数の数が、イジングマシンが扱える変数の数よりも大きい場合、イジングマシンとは別の情報処理装置が、組合せ最適化問題を複数の部分問題に分割し、各部分問題をイジングマシンに計算させればよい。
しかしながら、部分問題への分割の仕方によっては、イジングマシンで計算された各部分問題の解に基づいて全体の解を求める計算(以下連携計算という場合もある)の量が多くなる可能性があった。
1つの側面では、本発明は、組合せ最適化問題を複数の部分問題に分割して計算する際の計算量の増加を抑制可能な最適化問題計算プログラム及び最適化問題計算システムを提供することを目的とする。
1つの実施態様では、組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群と、前記組合せ最適化問題を複数の部分問題に分割する際の分割数とを取得し、前記係数値群に基づいて、前記目的関数に含まれる全変数に対応する複数の第1の頂点を有し、前記各変数間の相互作用の有無を、前記複数の第1の頂点の各頂点間を結ぶ辺の有無に置き換えた第1のグラフを生成し、前記第1のグラフにおいて、前記複数の第1の頂点のうち、前記辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、前記第1のグラフを抽象化した第2のグラフを生成し、前記第2のグラフに含まれる複数の第2の頂点の接続関係と前記分割数とに基づいて、前記全変数を、前記複数の部分問題の各々で用いられる変数群の候補と、前記複数の部分問題の各々の解に基づいて前記組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、前記第1のグラフに含まれる前記複数の第1の頂点の接続関係に基づいて、前記変数群の候補と前記境界変数群の候補とから、前記変数群と前記境界変数群を決定し、前記境界変数群に固定値を設定し、前記固定値に基づいて計算された補正値を含み、前記変数群に属す各変数間の相互作用の大きさを示す部分係数値群を、前記複数の部分問題の各々について個別にイジングマシンに送信し、前記イジングマシンから、前記複数の部分問題の各々の解を示す前記変数群の値を受信し、前記変数群の値と、前記境界変数群に設定した前記固定値と、前記係数値群とに基づいて、前記目的関数の値を計算し、収束条件が満たされるまで、前記固定値の変更、前記部分係数値群の前記イジングマシンへの送信、前記変数群の値の受信、及び前記目的関数の値の計算を繰り返し、前記収束条件が満たされた時点で、前記目的関数を最小にする前記全変数の値を出力する、処理をコンピュータに実行させる最適化問題計算プログラムが提供される。
また、1つの実施態様では、組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群と、前記組合せ最適化問題を複数の部分問題に分割する際の分割数とを取得し、前記係数値群に基づいて、前記目的関数に含まれる全変数に対応する複数の第1の頂点を有し、前記各変数間の相互作用の有無を、前記複数の第1の頂点の各頂点間を結ぶ辺の有無に置き換えた第1のグラフを生成し、前記第1のグラフにおいて、前記複数の第1の頂点のうち、前記辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、前記第1のグラフを抽象化した第2のグラフを生成し、前記第2のグラフに含まれる複数の第2の頂点の接続関係と前記分割数とに基づいて、前記全変数を、前記複数の部分問題の各々で用いられる変数群の候補と、前記複数の部分問題の各々の解に基づいて前記組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、前記第1のグラフに含まれる前記複数の第1の頂点の接続関係に基づいて、前記変数群の候補と前記境界変数群の候補とから、前記変数群と前記境界変数群を決定し、前記境界変数群に、互いに異なるM(Mは2以上の自然数)パターンの固定値を設定し、前記Mパターンの固定値のそれぞれに基づいて計算された補正値を含み、前記変数群に属す各変数間の相互作用の大きさを示すMパターンの部分係数値群を、前記複数の部分問題の各々について個別にM個のイジングマシンに送信し、前記M個のイジングマシンのそれぞれから、前記複数の部分問題の各々の解を示す前記変数群の値を受信し、前記変数群の値と、前記境界変数群に設定した前記Mパターンの固定値と、前記係数値群とに基づいて、前記目的関数の値をMパターン計算し、収束条件が満たされるまで、新たなMパターンの固定値を生成する処理と、前記部分係数値群の前記M個のイジングマシンへの送信、前記変数群の値の受信、及び前記目的関数の値の計算を繰り返し、前記収束条件が満たされた時点で、前記目的関数を最小にする前記全変数の値を出力する、処理をコンピュータに実行させる最適化問題計算プログラムが提供される。
また、1つの実施態様では、最適化問題計算システムが提供される。
1つの側面では、本発明は、組合せ最適化問題を複数の部分問題に分割して計算する際の計算量の増加を抑制できる。
第1の実施の形態の最適化問題計算システムと、最適化問題計算プログラムによる処理の一例を示す図である。 部分問題で用いられる変数群と境界変数群の分類の仕方の比較例を示す図である。 第2の実施の形態の最適化問題計算システムのハードウェア例を示すブロック図である。 最適化問題計算システムに含まれる情報処理装置の機能例を示すブロック図である。 組合せ最適化問題の計算処理の手順の一例を示すフローチャートである。 QUBO係数行列Wを含む入力ファイルの一例を示す図である。 生成されたグラフの一例を示す図である。 2つの単独頂点を統合した例を示す図である。 全て複合頂点となったグラフの例を示す図である。 停止条件を満たしたグラフの例を示す図である。 番号giの割り当て例を示す図である。 番号giの変更例を示す図である。 最も粗いグラフの各頂点に割当てた番号giを、1段階、詳細なグラフの各頂点に引き継がせた例を示す図である。 番号giを最も詳細なグラフの各頂点に引き継がせた例を示す図である。 グループ分け完了時に各頂点に割当てられている番号giの例を示す図である。 生成されたサブQUBOの一例を示す図である。 サブQUBOのファイル形式の一例を示す図である。 タブーサーチを利用して目的関数f(x)の値を最小にする境界変数群xの値を探索するアルゴリズムを表す擬似コードの例である。 分類された変数群と境界変数群の例を示す図である。 QUBO係数行列WとサブQUBOの例を示す図である。 サブQUBOの更新処理の一例の流れを示す図である。 部分問題の更新例を示す図である。 第3の実施の形態の最適化問題計算システムによる処理例を示す図である。 第3の実施の形態の最適化問題計算システムのシステム構成例を示す図である。 第3の実施の形態の最適化問題計算システムによる計算処理の手順の一例を示すフローチャートである。 M=3としたときのMPI処理の例を示す図である。 Mパターンのビット列を生成する他の例を示す図である。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化問題計算システムと、最適化問題計算プログラムによる処理の一例を示す図である。
最適化問題計算システム10は、情報処理装置11とイジングマシン12を有する。
情報処理装置11は、記憶部11a、処理部11b、インタフェース(図1ではI/Fと表記されている)11cを有する。
記憶部11aは、RAM(Random Access Memory)などの揮発性の記憶装置、または、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)やHDD(Hard Disk Drive)などの不揮発性の記憶装置である。
記憶部11aは、計算対象の組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群11a1や、最適化問題計算プログラムなどを記憶する。
組合せ最適化問題のイジング型の目的関数は、たとえば、以下の式(1)のように表せる。
Figure 2020004387
式(1)の右辺の1項目は、全変数から選択可能な2つの変数σ,σ(0または1の2値変数)の全組合せについて、漏れと重複なく変数σ,σの値と変数σ,σの間の相互作用の大きさを示す係数値Jijとの積を積算し、−1を乗じた値である。式(1)の右辺の2項目は、変数σとそのバイアスhとの積を全変数について積算したものに−1を乗じた値である。なお、変数σ,σの間の相互作用がない場合には、係数値Jij=0である。また、バイアスhも0の場合がある。
式(1)は、H=σWσと表せる。σは、全変数を配列した行列であり、Wは、上記のJijとバイアスhとを含む行列(以下QUBO係数行列Wという)である。このようなQUBO係数行列Wが係数値群11a1に含まれる。
処理部11bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)などの演算処理装置としてのプロセッサである。ただし、処理部11bは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。処理部11bは、記憶部11aに記憶された、たとえば、最適化問題計算プログラムなどのプログラムを実行する。なお、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」ということがある。
インタフェース11cは、イジングマシン12に接続され、処理部11bとイジングマシン12との間でデータの送受信を行う。
イジングマシン12は、組合せ最適化問題を分割した複数の部分問題の各々に対応した係数値群11a1の一部を含む部分係数値群を受信し、部分係数値群に基づいて、複数の部分問題を計算する。なお、イジングマシン12は複数あってもよい。イジングマシン12が複数ある場合、複数の部分問題を並列に計算可能である。
なお、イジングマシン12は、デジタル回路を用いてシミュレーテッドアニーリングを行うことで目的関数の値が最小となる変数の値の組合せを計算するものでもよいし、超伝導回路を用いて量子アニーリングを行うことで同様の計算を行うものでもよい。
第1の実施の形態の最適化問題計算システム10において、処理部11bは、組合せ最適化問題を複数の部分問題に分割して計算する際の計算量の増加を抑制するために、以下のような処理を行う。
以下、処理部11bが最適化問題計算プログラムを実行することで行われる処理の例を説明する。
処理部11bは、たとえば、記憶部11aに記憶されている係数値群11a1と、たとえば、ユーザによる図示しない入力デバイスの操作により入力される組合せ最適化問題の分割数kを取得する。分割数kは、イジングマシン12が扱える変数の上限と、目的関数に含まれる変数の数との関係に基づいて決定される。
なお、処理部11bは、係数値群11a1を情報処理装置11の外部から取得してもよい。また、分割数kは、記憶部11aに記憶されていてもよい。
図1には、係数値群11a1に含まれるQUBO係数行列Wの一例が示されている。図1の例では、説明の簡略化のため、全変数の数(以下ビット数という)Nが12であるとしているが、ビット数Nは、組合せ最適化問題の規模に応じて多くなることは言うまでもない。なお、図1では、値が0の係数値Jij(1≦i,j≦12)や値が0のバイアスh(1≦i≦12)は、図示が省略されている。
係数値群11a1や分割数kの取得後、処理部11bは、全変数を、k個の部分問題の各々で用いられる変数群と、連携計算の際に用いられる境界変数群とに分類する。なお、k個の部分問題の各々で用いられる変数群に含まれる変数は、自身が属す変数群に含まれる他の変数または境界変数群に含まれる境界変数とだけ相互作用を有するものとする。また、境界変数群に含まれる変数は、異なる2つ以上の変数群に含まれる変数と相互作用を有するものとする。
各部分問題に対応した各変数群に含まれる変数の数は、イジングマシン12が扱える最大ビット数を上限とし、イジングマシン12における計算効率を高めるため、なるべく多くすることが望ましい。また、境界変数群に含まれる境界変数は、数が多くなると連携計算の量が増えるため、なるべく少なくすることが望ましい。
処理部11bは、以下のように、全変数を、複数の変数群と境界変数群とに分類する。
まず、処理部11bは、係数値群11a1に基づいて、目的関数に含まれる全変数に対応する複数の頂点を有し、各変数間の相互作用の有無を、複数の頂点の各頂点間を結ぶ辺の有無に置き換えたグラフを生成する。
図1には、12個の変数σ〜σ12の各々を頂点に置き換えたグラフ20の生成例が示されている。互いに相互作用がある2つの変数に対応した2つの頂点間は、辺で接続されている。
次に、処理部11bは、生成したグラフにおいて、辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、最初に生成したグラフを抽象化したグラフを生成する。処理部11bは、たとえば、頂点数<2kとなったときに頂点の統合を停止する。
頂点を統合する処理の際、たとえば、まず、接続している辺が最も少ない頂点が選択される。そして、その頂点に接続されている頂点のうち接続されている辺が最も少ない頂点が選択され、選択された両頂点が統合される。図1の例では、グラフ20において、変数σ,σに対応している2つの頂点が統合されている。同様に、変数σ,σ10に対応している2つの頂点が統合され、変数σ,σに対応している2つの頂点が統合され、変数σ,σに対応している2つの頂点が統合されている。さらに、変数σ,σに対応している2つの頂点が統合され、変数σ11,σ12に対応している2つの頂点が統合されている。これによって、6つの頂点をもつグラフ21が生成されている。
停止条件を頂点数<2kとした場合、分割数k=2であるとき、頂点数が4を下回れば停止条件が満たされる。グラフ21の例では、頂点数=6>4であるため、再度、同様の統合処理が行われる。図1の例では、変数σ,σに対応している頂点がさらに変数σ,σに対応している頂点と統合され、変数σ,σ10に対応している頂点がさらに変数σ,σに対応している頂点と統合されている。また、変数σ,σに対応している頂点がさらに変数σ11,σ12に対応している頂点と統合されている。これによって、6つの頂点をもつグラフ22が生成されている。グラフ22の頂点数=3<4であるため、停止条件が満たされる。
次に処理部11bは、抽象化したグラフの各頂点の接続関係と分割数kとに基づき、全変数を、複数の部分問題の各々で用いられる変数群の候補と、境界変数群の候補と、に分類する。
グラフ22では、2つの頂点が1つの頂点を介して接続されている。分割数k=2の場合、2つの頂点の間に接続されている頂点に対応した変数σ,σ,σ,σ10による変数群(グループA)の値を固定すれば、両端の頂点に対応した2つの変数群の間の関係を互いに素にできる(つまり、一方の値が他方の値に影響を与えない)。このため、変数σ,σ,σ,σによる変数群(グループB)と、変数σ,σ,σ11,σ12による変数群(グループC)は、各々独立の部分問題で扱うことができる。したがって、処理部11bは、グループAの変数σ,σ,σ,σ10を境界変数群の候補、グループBの変数σ,σ,σ,σとグループCの変数σ,σ,σ11,σ12を複数の部分問題の各々で用いられる変数群の候補とする。
さらに、処理部11bは、抽象化する前のグラフに含まれる各頂点の接続関係に基づいて、上記各候補から、境界変数群と複数の部分問題の各々で用いられる変数群と、を決定する。
図1のグラフ20では、グループAに属す変数σ,σ,σ10に対応した頂点は、グループAに属す他の変数に対応した頂点のほかに、グループB,Cの何れか一方に属す変数に対応した頂点に接続されている。このため、変数σ,σ,σ10の何れか1つを、その変数に対応する頂点に接続される頂点に対応する変数が属すグループに分類しても、互いに素な2つの変数群を設定できる。
たとえば、図1に示す例では、変数σがグループBに追加される。このため、境界変数は、変数σ,σ,σ10の3つとなり、境界変数の数が削減される。
次に処理部11bは、境界変数群に固定値を設定する。図1の例では、境界変数群は、3つの境界変数(変数σ,σ,σ10)からなり、各々に対して0または1の固定値が設定される。
そして、処理部11bは、固定値に基づいて計算された補正値を含み、各部分問題で用いられる変数群に属す変数間の相互作用の大きさを示す部分係数値群を、複数の部分問題の各々について個別に、インタフェース11cを介してイジングマシン12に送信する。以下、部分係数値群をサブQUBOという。
部分問題に対応するイジング型の目的関数は、以下の式(2)で表せる。
Figure 2020004387
式(2)において、Sは、部分問題で用いられる変数群に属す変数の番号の集合である。また、式(2)において、dが補正値であり、dは、以下の式(3)で表せる。
Figure 2020004387
式(3)において、σが境界変数であり、固定値をもつ。
図1の例では、前述のように変数σ,σ,σ10が境界変数となる。以下では、変数σ,σ,σ10の固定値を1とした場合の補正値の算出例を示す。
図1の例では、グループBの変数σは、境界変数である変数σ,σ10に対して相互作用(J3,6=J6,3=J3,10=J10,3=−1)をもつため、式(3)より、補正値d={(−1−1)×1}+{(−1−1)×1}=−4となる。また、グループCの変数σは、境界変数である変数σ,σに対して相互作用(J8,6=J6,8=J8,7=J7,8=−2)をもつため、式(3)より、補正値d=−8となる。同様にグループCの変数σは、境界変数である変数σ,σに対して相互作用(J9,6=J9,8=J9,7=J7,9=−2)をもつため、式(3)より、補正値d=−8となる。また、グループCの変数σ11は、境界変数である変数σ10に対して相互作用(J11,10=J10,11=−2)をもつため、式(3)より、補正値d11=−4となる。同様にグループCの変数σ12は、境界変数である変数σ10に対して相互作用(J12,10=J10,12=−2)をもつため、式(3)より、補正値d12=−4となる。
図1には、上記補正値を含むグループBとグループCについてのサブQUBOが示されている。なお、グループBまたはグループCに属する係数群と境界変数との間の相互作用の大きさを示す係数については図示が省略されている。各係数値群は、個別にイジングマシン12に送信される。
イジングマシン12は、各サブQUBOを受けて、各部分問題を計算する。イジングマシン12は、グループBについてのサブQUBOを受信した場合、12個の変数のうち変数σ〜σだけを含む目的関数の値を最小にする変数σ〜σの値(またはその近似値)を計算する。また、イジングマシン12は、グループCについてのサブQUBOを受信した場合、12個の変数のうち変数σ,σ,σ11,σ12だけを含む目的関数の値を最小にする変数σ,σ,σ11,σ12の値(またはその近似値)を計算する。
処理部11bは、イジングマシン12から、複数の部分問題の各々の解を示す変数群の値を受信し、変数群の値と、境界変数群に設定した固定値と、係数値群11a1とに基づいて、目的関数の値を計算する。
そして、処理部11bは、所定の収束条件が満たされるまで、上記の固定値の変更、サブQUBOのイジングマシン12への送信、変数群の値の受信、及び目的関数の値の計算を繰り返す。たとえば、処理部11bは、最小となる目的関数の値が、所定回数、連続して変わらない場合に、収束条件が満たされたと判定する。処理部11bは、収束条件が満たされた時点で、目的関数の値を最小にする全変数の値を、組合せ最適化問題の解として、たとえば、記憶部11aまたは図示しない表示装置などに出力する。
以上のような第1の実施の形態の最適化問題計算システム10では、情報処理装置11が、変数間の相互作用の有無を反映したグラフを抽象化したグラフに基づいて、各部分問題で用いられる(イジングマシン12が扱う)変数群と境界変数群とが分類される。抽象化したグラフを用いて分類を行うことで、どの変数群を境界変数群の候補とすれば適切であるか、情報処理装置11が容易に判別できる。これにより、適切な境界変数が得られ計算量を減らせる。
部分問題で用いられる変数群と境界変数群の分類の仕方が適切ではない場合、連携計算の量が多くなる可能性がある。
図2は、部分問題で用いられる変数群と境界変数群の分類の仕方の比較例を示す図である。
図2では、図1に示したQUBO係数行列Wにおいて、部分問題で用いられる変数群として変数σ,σ,σ,σ,σ,σ11が選択されたときの係数値と、補正値とが示されている。たとえば、変数σ,σ,σと、変数σ,σ,σ11が各々異なる部分問題で用いられる。なお、図2において、部分問題で用いられる変数群と境界変数群との間の相互作用の大きさを示す係数については図示が省略されている。
図2に示すような選択の仕方の場合、変数間の相互作用の有無を反映したグループ分けを行っていないため、元々の係数値がほとんど残らず、補正値(−4,−5など)の影響が支配的になっている。これにより、部分問題の解の精度が悪化し、全体の最適解を計算する連携計算の計算量が増加する。
また、図2の例では、境界変数の数が図1に示した分類の仕方よりも多くなるため、境界変数群に設定される固定値に基づいて補正値を計算する処理や、固定値を変更する処理が多く繰り返されることも、連携計算の計算量の増加の要因である。
第1の実施の形態の最適化問題計算システム10によれば、変数間の相互作用の有無を反映したグラフを抽象化したグラフに基づいて境界変数群の候補が決定されるため、元々の係数値を比較的多く残すことができる。また、境界変数の数がむやみに多くなることがない。このため、連携計算の量を抑えることができるため、最適化問題を複数の部分問題に分割して計算する際の計算量の増加を抑えることができる。
また、境界変数の数が多くなることを防げるため、逆に部分問題で用いられる変数の数を多くでき(イジングマシン12で扱えるビット数の上限を超えない程度に)、計算が効率化され、計算時間の短縮が期待できる。
(第2の実施の形態)
図3は、第2の実施の形態の最適化問題計算システムのハードウェア例を示すブロック図である。
最適化問題計算システム30は、情報処理装置31とイジングマシン32を有する。
情報処理装置31は、CPU31a、RAM31b、HDD31c、画像信号処理部31d、入力信号処理部31e、媒体リーダ31f、ネットワークインタフェース31g、インタフェース31hを有する。上記ユニットは、バスに接続されている。
CPU31aは、プログラムの命令を実行する演算回路を含むプロセッサである。CPU31aは、HDD31cに記憶されたプログラムやデータの少なくとも一部をRAM31bにロードし、プログラムを実行する。なお、CPU31aは複数のプロセッサコアを備えてもよく、情報処理装置31は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM31bは、CPU31aが実行するプログラムやCPU31aが演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置31は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD31cは、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、イジングマシン32を用いた最適化問題の計算処理を情報処理装置31に実行させる最適化問題計算プログラムが含まれる。なお、情報処理装置31は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部31dは、CPU31aからの命令にしたがって、情報処理装置31に接続されたディスプレイ31d1に画像を出力する。ディスプレイ31d1としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部31eは情報処理装置31に接続された入力デバイス31e1から入力信号を取得し、CPU31aに出力する。入力デバイス31e1としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置31に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ31fは、記録媒体31f1に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体31f1として、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ31fは、たとえば、記録媒体31f1から読み取ったプログラムやデータを、RAM31bやHDD31cなどの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU31aによって実行される。なお、記録媒体31f1は、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体31f1やHDD31cを、コンピュータ読み取り可能な記録媒体ということがある。
ネットワークインタフェース31gは、ネットワーク31g1に接続され、ネットワーク31g1を介して他の情報処理装置と通信を行うインタフェースである。ネットワークインタフェース31gは、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
インタフェース31hは、イジングマシン32に接続され、CPU31aとイジングマシン32との間でデータの送受信を行う。インタフェース31hは、たとえば、PCI(Peripheral Component Interconnect) Expressなどの有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
次に、最適化問題計算システム30の機能及び処理手順を説明する。
図4は、最適化問題計算システムに含まれる情報処理装置の機能例を示すブロック図である。
情報処理装置31は、QUBO記憶部40、グラフ生成部41、グラフ抽象化部42、分類処理部43、境界変数値設定部44、サブQUBO生成部45、サブQUBO送信部46、受信部47、最適解計算部48、出力部49を有する。
QUBO記憶部40は、たとえば、図3に示したRAM31bまたはHDD31cに確保した記憶領域を用いて実装できる。図4におけるその他の要素は、図3に示したCPU31aが実行するプログラムモジュールを用いて実装できる。
QUBO記憶部40は、QUBO係数行列W(図1参照)を記憶する。なお、情報処理装置31は、たとえば、図3に示したネットワーク31g1を経由して他の情報処理装置からQUBO係数行列Wを受信してもよいし、記録媒体31f1に格納されたQUBO係数行列Wを取得してもよい。また、情報処理装置31が、計算対象の組合せ最適化問題かをQUBO係数行列Wに変換してもよい。
グラフ生成部41は、QUBO記憶部40から、QUBO係数行列Wを取得し、目的関数に含まれる全変数に対応する複数の頂点を有し、各変数間の相互作用の有無を、複数の頂点の各頂点間を結ぶ辺の有無に置き換えたグラフを生成する。
グラフ抽象化部42は、たとえば、ユーザによる入力デバイス31e1の操作により入力される組合せ最適化問題の分割数kを取得する。そして、グラフ抽象化部42は、グラフ生成部41が生成したグラフにおいて、頂点数が上記の分割数kに基づいた停止条件を満たすまで、辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返す。これにより、グラフ抽象化部42は、グラフ生成部41が生成したグラフを抽象化したグラフを生成する。なお、統合する頂点の選択例などについては後述する。
分類処理部43は、抽象化したグラフの各頂点の接続関係と分割数kとに基づき、全変数を、複数の部分問題の各々で用いられる変数群の候補と、境界変数群の候補と、に分類する。さらに、分類処理部43は、抽象化する前のグラフに含まれる各頂点の接続関係に基づいて、上記各候補から、複数の部分問題の各々で用いられる変数群と境界変数群と、を決定する。より詳しい分類の仕方の例については後述する。
境界変数値設定部44は、境界変数群に固定値を設定する。固定値の決定の仕方の例については後述する。
サブQUBO生成部45は、固定値に基づいて計算された補正値を含み、各部分問題で用いられる変数群に属す変数間の相互作用の大きさを示すサブQUBOを生成する。補正値は、前述の式(3)により計算される。
サブQUBO送信部46は、各部分問題について生成されたサブQUBOを、イジングマシン32に送信する。
受信部47は、複数の部分問題の各々の解を示す変数群の値をイジングマシン32から受信する。
最適解計算部48は、受信した変数群の値と、境界変数群に設定した固定値と、QUBO係数行列Wとに基づいて、前述の式(1)を用いて目的関数の値を計算する。また、最適解計算部48は、計算した目的関数の値が、所定の収束条件を満たさない場合、境界変数値設定部44が境界変数群に設定する固定値を変更させる。たとえば、最適解計算部48は、最小となる目的関数の値が、所定回数、連続して変わらない場合に、収束条件が満たされたと判定する。
出力部49は、収束条件が満たされた時点で、目的関数の値を最小にする全変数の値を、組合せ最適化問題の解として、たとえば、ディスプレイ31d1に出力する。出力部49は、組合せ最適化問題の解を、HDD31cに記憶させてもよい。
図5は、組合せ最適化問題の計算処理の手順の一例を示すフローチャートである。
グラフ生成部41は、QUBO記憶部40からQUBO係数行列Wを取得する(読み出す)(ステップS1)。
図6は、QUBO係数行列Wを含む入力ファイルの一例を示す図である。
図6に示されている入力ファイル50では、図1に示したQUBO係数行列Wにおいて、i番目の変数σとj番目の変数σとの間の相互作用の大きさを示す係数値Jijが、(i,j,Jij)の形式で列挙されている。なお、値が0である係数値Jijについては、入力ファイル50には含まれていない。
次に、グラフ生成部41は、目的関数の全変数の各々を頂点に置き換えるとともに、各変数間の相互作用の有無を頂点間の辺の有無に置き換えたグラフを生成する(ステップS2)。
図7は、生成されたグラフの一例を示す図である。
グラフ51aは、図1に示したグラフ20と同じものであり、12個の頂点51a1,51a2,51a3,51a4,51a5,51a6,51a7,51a8,51a9,51a10,51a11,51a12を有する。図7において、各頂点の傍にその頂点に接続されている辺の数が示されている。
グラフ抽象化部42は、グラフの抽象化を行う(ステップS3)。ステップS3の処理では、グラフ抽象化部42は、たとえば、まず、ユーザによる入力デバイス31e1の操作により入力される組合せ最適化問題の分割数kを取得する。そして、グラフ抽象化部42は、グラフ生成部41が生成したグラフにおいて、以下の手順1、手順2のように頂点同士を統合していく。
(手順1)グラフ抽象化部42は、接続されている辺の数が少ない頂点同士を優先して統合し、たとえば、以下の手順1−1〜1−5により、現在のグラフよりも1段階粗いグラフを生成する。
(手順1−1)グラフ抽象化部42は、接続されている辺の数が最も少ない単独頂点(複数の頂点を統合したものではない頂点)を、対応する変数の番号が小さい順に1つ選択する。単独頂点がない場合、グラフ抽象化部42は、頂点を統合する処理を終了する。図7のグラフ51aの例では、まず、変数σに対応する単独頂点である頂点51a1が選択される。
(手順1−2)グラフ抽象化部42は、手順1−1で選択した単独頂点と接続する他の単独頂点のうち、接続する辺が最も少ない頂点を1つ選択する。手順1−1で選択した単独頂点と接続する他の単独頂点がない場合、グラフ抽象化部42は、手順1−1で選択した単独頂点を複合頂点とし、手順1−1の処理に戻る。上記のように、図7のグラフ51aにおいて、変数σに対応する単独頂点である頂点51a1が手順1−1の処理で選択された場合、手順1−2の処理では、変数σに対応する単独頂点である頂点51a2が選択される。
(手順1−3)グラフ抽象化部42は、手順1−1,1−2で選択した2つの単独頂点を統合して複合頂点とする。
(手順1−4)グラフ抽象化部42は、手順1−1,1−2で選択した2つの単独頂点から他の頂点に伸びる辺を、辺の数は変えずに、それらの単独頂点を統合した複合頂点に付け替える。また、グラフ抽象化部42は、手順1−1,1−2で選択した2つの単独頂点同士を接続する辺は削除する。
図8は、2つの単独頂点を統合した例を示す図である。
図8のグラフ51bでは、図7に示した2つの単独頂点である頂点51a1,51a2を統合して複合頂点51b1とした例が示されている。図7において頂点51a1,51a2から、変数σ,σに対応した各単独頂点である頂点51a3,51a4へ伸びる各辺が、図8に示すように、複合頂点51b1に付け替えられている。
(手順1−5)
グラフ抽象化部42は、複合頂点とした2つの単独頂点を削除して、手順1−1からの処理を繰り返す。
図9は、全て複合頂点となったグラフの例を示す図である。
図9に示すように、図7に示したグラフ51aに対して上記手順1−1〜1−5の処理が繰り返し行われることによって、グラフ51aに対して1段階粗いグラフ51cが得られる。グラフ51cは、6つの複合頂点51c1,51c2,51c3,51c4,51c5,51c6を有する。
(手順2)次にグラフ抽象化部42は、複合頂点を単独頂点とみなし、停止条件を満たすまで、上記の手順1−1〜1−5の処理を繰り返す。グラフ抽象化部42は、たとえば、頂点数<2kとなったときに頂点の統合を停止する。
図10は、停止条件を満たしたグラフの例を示す図である。
分割数k=2の場合、頂点数<4のときに、頂点の統合が停止される。図10のグラフ51dは、3つの複合頂点51d1,51d2,51d3からなるため、頂点の統合が停止される。
上記のようなグラフ抽象化部42による処理の終了後、分類処理部43は、全変数を、複数の部分問題の各々で用いられる変数群と、境界変数群とに分類する(ステップS4)。ステップS4の処理は、たとえば、以下の手順3,4,5により行われる。
(手順3)分類処理部43は、最も粗いグラフ(もっとも抽象化したグラフ)に含まれる頂点を、たとえば、以下の手順3−1〜3−6により、k個のグループに分類する。
(手順3−1)分類処理部43は、最も粗いグラフにおいて、1つのグループに割当てる頂点の数(以下割当て数という)を決める。割当て数は、最も粗いグラフの頂点数を分割数kで割った値である。
(手順3−2)分類処理部43は、グループを示す番号gi=1とする。
(手順3−3)分類処理部43は、番号giが割当てられていない頂点の中から、最も辺の少ない頂点を1つ選び、番号giを割当てる。
(手順3−4)分類処理部43は、同じ番号giに割当てられた頂点の数が、上記割当て数に達していない場合、番号giが割当てられた頂点に隣接する頂点の中で、接続されている辺の最も少ない頂点を選び、番号giを割当てる。
(手順3−5)分類処理部43は、同じ番号giに割当てられた頂点の数が、上記割当て数に達した場合、番号giを1増やし、割当て数に達していない場合には、手順3−4の処理を繰り返す。
(手順3−6)分類処理部43は、gi>kであれば、番号giが割当てられていない頂点に対して(複数ある場合には1つずつ)、番号giを1から順に割当てた後、手順4の処理に進み、gi>kでなければ、手順3−3の処理に戻る。
図11は、番号giの割り当て例を示す図である。
分割数k=2である場合、グラフ51dでは、頂点(複合頂点)の数が3であるため、手順3−1で決定される割当て数は3/2=1となる。また、グラフ51dでは、複合頂点51d1に接続されている辺が最も少ないため、手順3−3の処理では、複合頂点51d1にgi=1が割当てられる。また、割当て数が1となるため、手順3−4はスキップされる。手順3−5において、番号gi=2となると、手順3−6では、gi>2ではないため、再度手順3−3の処理が行われる。2回目の手順3−3の処理では、複合頂点51d3が選択され、複合頂点51d3に、gi=2が割当てられる。手順3−4は再びスキップされ、手順3−5において、gi=3になると、手順3−6では、gi>2となる。このため、分類処理部43は、複合頂点51d2に、1番小さいgi=1を割当てる。
上記のような手順3の処理により、異なるグループに属す頂点が、同じグループに属す頂点の間に接続されることがなくなる。
(手順4)分類処理部43は、各グループが空にならないように、境界変数群の候補に対応する頂点群を、たとえば、以下の手順4−1〜4−5により決定する。
(手順4−1)分類処理部43は、gi=1以上の他のグループと辺を共有する頂点のリストを作成する。たとえば、図11に示したように複合頂点51d1〜51d3に番号giが割当てられている場合、gi=1が割当てられている複合頂点51d2と、複合頂点51d2と辺を共有し、gi=2が割当てられている複合頂点51d3がリストに含まれる。
(手順4−2)分類処理部43は、リストが空である場合には、手順4の処理を終了する。
(手順4−3)分類処理部43は、リストから、所属する頂点数が最も多いグループに属す頂点を1つ選び、その頂点に割当てられている番号giを0に変える。gi=0が割当てられた頂点(複合頂点)に統合された各頂点に対応する変数群が、境界変数群の候補となる。
図12は、番号giの変更例を示す図である。
リストに含まれている複合頂点51d2,51d3のうち、複合頂点51d2は、所属する頂点数が2つであるgi=1のグループに属する。一方、複合頂点51d3は、所属する頂点数が1つであるgi=2のグループに属する。よって、手順4−3の処理では、複合頂点51d2に割当てられている番号giが1から0に変更される。
これにより、番号gi=0が割当てられた複合頂点51d2に統合された各頂点に対応する変数σ,σ,σ,σ10が境界変数群の候補となる。また、変数σ,σ,σ,σによる変数群と、変数σ,σ,σ11,σ12による変数群が、2つの部分問題で用いられる変数群の候補となる。変数σ,σ,σ,σ10の値を固定値とすることで、変数σ,σ,σ,σによる変数群と、変数σ,σ,σ11,σ12による変数群との関係を互いに素にできることはグラフ51dから明らかであろう。
(手順4−4)分類処理部43は、所属する頂点のないグループが発生した場合、1段階、詳細なグラフの各頂点に、その頂点が統合されていた複合頂点の番号giを引き継がせ、手順4−1からの処理を実行する。
(手順4−5)分類処理部43は、所属する頂点のないグループが発生していない場合、手順4−1からの処理を繰り返す。
(手順5)分類処理部43は、以下の手順5−1〜5−3により、複数の部分問題で用いられる変数群と、境界変数群を決定する。
(手順5−1)分類処理部43は、粗いグラフの各頂点に割当てた番号giを、1段階、詳細なグラフの各頂点に引き継がせる。分類処理部43は、現在扱っているグラフが、最も詳細なグラフ(抽象化する前の元のグラフ)である場合には、手順5の処理を終了する。これによりグループ分けが完了する。
図13は、最も粗いグラフの各頂点に割当てた番号giを、1段階、詳細なグラフの各頂点に引き継がせた例を示す図である。
図12のグラフ51dの複合頂点51d1に割当てられたgi=1は、図13のグラフ51cにおいて、複合頂点51d1に統合された複合頂点51c1,51c2に引き継がれる。また、図12のグラフ51dの複合頂点51d2に割当てられたgi=0は、図13のグラフ51cにおいて、複合頂点51d2に統合された複合頂点51c3,51c4に引き継がれる。さらに、図12のグラフ51dの複合頂点51d3に割当てられたgi=2は、図13のグラフ51cにおいて、複合頂点51d3に統合された複合頂点51c5,51c6に引き継がれる。
(手順5−2)分類処理部43は、gi=0が割当てられている頂点の中で、接続先の頂点に割当てられている番号giが0か、1以上の1つの値の2通りしかない頂点を探索する。そのような頂点がない場合には、手順5−1の処理が繰り返される。
図13の例では、gi=0が割当てられている複合頂点51c3は、gi=0が割当てられている複合頂点51c4、gi=1が割当てられている複合頂点51c1,51c2、及びgi=2が割当てられている複合頂点51c6に接続されている。また、gi=0が割当てられている複合頂点51c4は、gi=0が割当てられている複合頂点51c3、gi=1が割当てられている複合頂点51c2、及びgi=2が割当てられている複合頂点51c5に接続されている。したがって、グラフ51cには手順5−2における探索対象の頂点がない。このため、手順5−1の処理が繰り返される。
図14は、番号giを最も詳細なグラフの各頂点に引き継がせた例を示す図である。
図13のグラフ51cの複合頂点51c1,51c2に割当てられたgi=1は、図14のグラフ51aにおいて、複合頂点51c1,51c2に統合された頂点51a1,51a2,51a4,51a5に引き継がれる。また、図13のグラフ51cの複合頂点51c3,51c4に割当てられたgi=0は、図14のグラフ51aにおいて、複合頂点51c3,51c4に統合された頂点51a3,51a6,51a7,51a10に引き継がれる。さらに、図13のグラフ51cの複合頂点51c5,51c6に割当てられたgi=2は、図14のグラフ51aにおいて、複合頂点51c5,51c6に統合された頂点51a8,51a9,51a11,51a12に引き継がれる。
図14の例では、gi=0が割当てられている頂点51a3は、gi=0が割当てられている頂点51a6,51a10及び、gi=1が割当てられている頂点51a1,51a2,51a4に接続されている。また、gi=0が割当てられている頂点51a6は、gi=0が割当てられている頂点51a3,51a7、gi=2が割当てられている頂点51a8,51a9に接続されている。さらに、gi=0が割当てられている頂点51a10は、gi=0が割当てられている頂点51a3、gi=2が割当てられている頂点51a11,51a12に接続されている。
したがって、これら3つの頂点51a3,51a6,51a10は、手順5−2での探索対象となる。
(手順5−3)分類処理部43は、手順5−2の処理で探索できた頂点に割当てられているgi=0を、その頂点に接続されている頂点に割当てられている番号gi(1以上の値)に変更し、手順5−1の処理に戻る。上記の例のように、条件に合う頂点が複数探索できた場合、分類処理部43は、そのうちの1つ(たとえば、対応する変数の番号が一番小さい頂点)について番号giの変更を行い、手順5−2の処理を再度行う。
図15は、グループ分け完了時に各頂点に割当てられている番号giの例を示す図である。
手順5−3において、gi=0が割当てられていた頂点51a3に割当てられている番号giが0から1に変更された後、グループ分けが完了した例が示されている。
図15の例では、頂点51a1〜51a5にgi=1、頂点51a6,51a7,51a10にgi=0、頂点51a8,51a9,51a11,51a12にgi=2が、それぞれ割当てられている。これにより、頂点51a6,51a7,51a10に対応する変数σ,σ,σ10が境界変数群に分類される。頂点51a1〜51a5に対応する変数σ〜σと、頂点51a8,51a9,51a11,51a12に対応する変数σ,σ,σ11,σ12が、それぞれ異なる2つの部分問題で用いられる変数群に分類される。
以上で、分類処理部43の処理が終わる。
次に、境界変数値設定部44は、境界変数群に固定値を設定する(ステップS5)。なお、境界変数値設定部44は、後述の収束条件が満たされなかった場合に、境界変数群の固定値(ビット列)を1ビットずつ変更する。境界変数値設定部44は、たとえば、まず、境界変数群の各ビットの値をそれぞれランダムに決定した初期ビット列を生成する。再度ステップS5の処理が行われる場合、境界変数値設定部44は、生成した初期ビット列の何れか1つのビットの値を反転した、ビット列を生成する。なお、反転したビットを示すインデックスはタブーリストの先頭に追加され、次回からはタブーリストに含まれているインデックスで示されるビット以外のビットが反転される。タブーリストは、たとえば、RAM31bに記憶される。タブーリストに追加されたインデックスによるデータ量がタブーリストのサイズ(許容データ量)を超えた場合に、タブーリストの末尾のインデックスが優先的に削除される。
なお、境界変数群に対する固定値の設定方法についてのより詳細なアルゴリズムの例については後述する。
ステップS5の処理後、サブQUBO生成部45は、固定値に基づいて計算された補正値を含み、各部分問題で用いられる変数群に属す変数間の相互作用の大きさを示すサブQUBOを、生成する(ステップS6)。補正値は、前述の式(3)により計算される。
図16は、生成されたサブQUBOの一例を示す図である。
サブQUBO52aは、変数σ〜σの間での相互作用の大きさを示す係数値と、補正値dとを含む。サブQUBO52bは、変数σ,σ,σ11,σ12の間での相互作用の大きさを示す係数値と、補正値d,d,d11,d12とを含む。
生成されたサブQUBO52a,52bは、たとえば、以下に示すようなファイル形式で、HDD31cなどの記憶領域に記憶される。
図17は、サブQUBOのファイル形式の一例を示す図である。
サブQUBOファイル53aは、図16に示したサブQUBO52aにおいて、i番目の変数σとj番目の変数σとの間の相互作用の大きさを示す係数値Jijが、(i,j,Jij)の形式で列挙したものである。また、係数値Jij(i=j)で値があるもの(たとえば、係数値J3,3)は、補正値を示している(ただし、バイアスh=0としている)。
同様に、サブQUBOファイル53bは、図16に示したサブQUBO52bにおいて、i番目の変数σとj番目の変数σとの間の相互作用の大きさを示す係数値Jijが、(i,j,Jij)の形式で列挙したものである。
ステップS6の処理後、サブQUBO送信部46は、各部分問題について生成されたサブQUBOを、イジングマシン32に各々個別に送信する(ステップS7)。サブQUBO送信部46は、たとえば、図17に示したようなファイル形式で、サブQUBOをイジングマシン32に送信してもよい。
イジングマシン32は、各サブQUBOを受けて、各部分問題を解く。
たとえば、イジングマシン32は、図16に示したサブQUBO52aを受信した場合、12個の変数のうち変数σ〜σだけを含む目的関数の値を最小にする変数σ〜σの値(または近似値)を計算する。また、イジングマシン32は、図16に示したサブQUBO52bを受信した場合、12個の変数のうち変数σ,σ,σ11,σ12だけを含む目的関数の値を最小にする変数σ,σ,σ11,σ12の値(または近似値)を計算する。
受信部47は、イジングマシン32から、複数の部分問題の各々の解を示す変数群の値を受信する(ステップS8)。
最適解計算部48は、受信した変数群の値と、境界変数群に設定した固定値と、全変数間の相互作用の大きさを示す係数値群の値とに基づいて、目的関数の値を計算する(ステップS9)。そして、最適解計算部48は、更新処理を行う(ステップS10)。ステップS5〜S10の処理は、所定の収束条件が満たされるまで繰り返される。ステップS10の処理では、最適解計算部48は、今回算出した目的関数の値が、これまで算出した目的関数の最小値よりも小さい場合に、今回算出した目的関数の値を、最小値として更新する。また、その場合、最適解計算部48は、今回目的関数の値を算出するために用いた全変数の値の組合せを最適化問題の解の候補として更新する。
最適解計算部48は、所定の収束条件が満たされているか否かを判定する(ステップS11)。たとえば、最適解計算部48は、最小となる目的関数の値が、所定回数(または所定時間)、連続して変わらない場合に、収束条件が満たされたと判定する。収束条件が満たされない場合、ステップS5からの処理が繰り返される。
収束条件が満たされた場合、出力部49は、収束条件が満たされた時点で、目的関数の値を最小にする全変数の値を、組合せ最適化問題の解(計算結果)として、たとえば、ディスプレイ31d1に出力する(ステップS12)。出力部49は、組合せ最適化問題の解を、HDD31cに記憶させてもよい。
以下、目的関数の最小値(またはその近似値)を得るための、境界変数群の値の探索方法の例について、より詳細に説明する。
組合せ最適化問題を2つの部分問題に分割する場合(分割数k=2である場合)、目的関数は、以下の式(4)で表せる。
Figure 2020004387
式(4)において、xは境界変数群、x,xはそれぞれ、各部分問題で用いられる変数群を表す。W00は、境界変数群xに属す変数間の相互作用の大きさを表す係数値群を表し、W11は、変数群xに属す変数間の相互作用の大きさを表す係数値群を表し、W22は、変数群xに属す変数間の相互作用の大きさを表す係数値群を表す。また、W01は、境界変数群xに属す変数と、変数群xに属す変数との間の相互作用の大きさを表す係数値群を表し、W02は、境界変数群xに属す変数と、変数群xに属す変数との間の相互作用の大きさを表す係数値群を表す。
式(4)において、右辺の2項目の最小値(またはその近似値)は、イジングマシン32の処理により得られる。情報処理装置31は、以下の式(5)に示す目的関数f(x)の値を最小にする境界変数群xの値の探索を行う。
Figure 2020004387
図18は、タブーサーチを利用して目的関数f(x)の値を最小にする境界変数群xの値を探索するアルゴリズムを表す擬似コードの例である。
擬似コード54には、入力を表す“Require”として、QUBO係数行列Wと、最大ビット反転数Nmaxbfと、タブーサイズnTabuが定義されている。最大ビット反転数Nmaxbfは、境界変数群xのビットを反転させる回数の最大数を示す。タブーサイズnTabuは、タブーリストのサイズである。また、擬似コード54には、出力を表す“Ensure”として、目的関数の値を最小化する全変数xの値(の近似値)が定義されている。
擬似コード54の行番号1の行には、グラフ生成、抽象化、変数群の分類処理のアルゴリズムが記載されている(詳細なアルゴリズムは前述の通り)。さらに、行番号2の行には、初期値設定として、境界変数群xの値と、ビット反転数Nbfと、反転させるビットのインデックスjを0にすることが示されている。
行番号3の行には、境界変数群xの値を、変数x0bに代入する処理が記載されている。変数x0bは、これまでの計算で目的関数f(x)を最小にする境界変数群xの値を示す。行番号4の行には、上記の初期設定により境界変数群xの値を0としたときに、イジングマシン32を用いて計算される初期の目的関数f(x)の値を、変数Ebestに代入する処理が記載されている。行番号5の行には、タブーリストTを空にする(初期化する)処理が示されている。
行番号6から行番号35の行には、while文により、Nbf≦Nmaxbfである間に行われる処理が定義されている。行番号7の行には、変数Enbに値LNを代入する処理が示されている。変数Enbは、目的関数f(x)の最小値に最も近い値(以下近傍ベストという)を設定するための変数である。値LNは、十分大きな数である。
行番号8から行番号29の行には、境界変数群xの値を更新するループ処理が記載されている。
行番号9から行番号29の行には、for文により、カウンタ変数iが、1から境界変数群xの長さlen(x)の間に行われる処理が定義されている。
行番号10では、j<len(x)の場合には、インデックスjを1増やし、j=len(x)の場合には、j=1とする処理が示されている。
行番号11から行番号14の行には、インデックスjがタブーリストTに含まれていなければビット反転数Nbfを1増やし、境界変数群xのうち、i番目のビットx0,iの値を反転させる処理が示されている。さらに、ビットx0,iの値が反転することによって更新された境界変数群xの値を用いて目的関数f(x)の値を更新し、その値を変数Etmpに代入する処理が示されている。境界変数群xの値が更新された場合、前述のサブQUBOに含まれる補正値が変わる。そのため、補正値を更新したサブQUBOが再度生成され、イジングマシン32に送信される。情報処理装置31は、イジングマシン32から各部分問題の解(式(5)の右辺の2項目に相当する)を受信し、目的関数f(x)を再度計算し、その値を変数Etmpに代入する。
行番号16から行番号21の行には、Etmp<Ebestの場合、変数x0bを、現在の境界変数群xの値で更新し、変数Ebestを変数Etmpに更新し、インデックスjをタブーリストTに追加し、その後、for文によるループから抜ける処理が示されている。なお、タブーリストTに含まれるインデックスによるデータ量がタブーサイズnTabuを超える場合は、古い値(タブーリストTの末尾のインデックス)から優先的に削除される。
行番号22から行番号26の行には、Etmp<Enbの場合、変数x0nbを、現在の境界変数群xの値で更新し、変数Enbを変数Etmpに更新し、インデックスjnbを現在指定されているインデックスjで更新する処理が示されている。
行番号27の行には、境界変数群xにおいて、ビットx0,iの値を反転させる(元に戻す)処理が示されている。
行番号30から行番号33の行には、境界変数群xの更新ループが回りきった場合に、境界変数群xを近傍ベストにおける値を示す変数x0nbに遷移させ、インデックスjnbをタブーリストTに追加する処理が示されている。なお、タブーリストTに含まれるインデックスによるデータ量がタブーサイズnTabuを超える場合は、古い値(タブーリストTの末尾のインデックス)から優先的に削除される。
行番号30から行番号33の処理により、変数Etmpが変数Ebestよりも小さくならない場合(たとえば、目的関数f(x)の値が増加する場合)でも、境界変数群xの値が近傍ベスト値における値(変数x0nb)に遷移するようになる。
以上説明してきた、第2の実施の形態の最適化問題計算システム30によれば、第1の実施の形態の最適化問題計算システム10と同様の効果が得られる。すなわち、変数間の相互作用の有無を反映したグラフを抽象化したグラフに基づいて、各部分問題で用いられる変数群と境界変数群とが分類される、適切な境界変数が得られ計算量を減らせる。
また、接続されている辺の数が少ない2つの頂点を優先的に1つの頂点に統合していくことで、元のグラフの各頂点の接続関係を比較的よく残したまま、グラフの抽象化が行える。このように抽象化されたグラフを用いることで、変数群の候補と境界変数群の候補との分類をより適切に行うことができる。
なお、上記の説明では、部分問題への分割数kが2である場合を例に説明したが、これに限定されず、3以上であってもよいことは言うまでもない。
ところで、分類された変数群の中には、境界変数群に設定される値によっては、目的関数の値を小さくする値が他の変数の値によらずに決定できる変数が含まれる場合がある。
図19は、分類された変数群と境界変数群の例を示す図である。
図19では、図4に示したような情報処理装置31が、変数σ,σ,σ,σを境界変数として分類し、変数σ,σ,σに0、変数σに1を設定した例が示されている。組合せ最適化問題の1つである最大カット問題では、図19に示すようなグラフにおいて、値の異なる変数に対応付けられた頂点間の辺が多いほど(またはそのような辺に対応する係数値の値が大きいほど)、目的関数の値が小さくなる。図19のように境界変数群の値が設定されている場合、変数σは、変数σの値によらず、1であるほうが、0である場合よりも目的関数の値を小さくできる。
また、最適化問題には、ある変数群のうち、値が1となる変数の数を1つのみとする制約(1−hot制約)をもつものがある。たとえば、図19に示したような変数σ〜σのうち、値が1となる変数の数が1つのみであるという制約がある場合、変数σ〜σのうち、値が1となる変数の数が複数ある場合には目的関数の値が大きくなる。図19の例では、境界変数である変数σの値が既に1であるため、目的関数の値を小さくする変数σ,σの値は0である。
上記のような組合せ最適化問題の性質や制約は、QUBO係数行列Wに反映されている。
QUBO係数行列Wにおいて、たとえば、下記の式(6)で表される条件が満たされる場合、目的関数の値を小さくするための変数σの値が0か1の何れか一方に決まる(たとえば、文献「Mark Lewis and Fred Glover. "Quadratic unconstrained binary optimization problem preprocessing: Theory and empirical analysis." Networks 70.2 (2017): 79-97.」参照)。
Figure 2020004387
式(6)において、case1は、係数値Jiiと、0より大きい係数値Jik(kは変数σとの相互作用のある変数のインデックス)の積算値と、0より大きい係数値Jkiの積算値の和が0より小さい場合を示している。この場合、式(1)に示した目的関数Hの値を小さくする変数σの値は0に決まる。
一方、式(6)において、case2は、係数値Jiiと、0より小さい係数値Jikの積算値と、0より小さい係数値Jkiの積算値の和が0より大きい場合を示している。この場合、式(1)に示した目的関数Hの値を小さくする変数σの値は1に決まる。
以下、上記のようなcase1またはcase2に該当する変数を無効変数と呼び、case1及びcase2に該当しない変数を有効変数と呼ぶ。
このような、無効変数を選択する処理は、サブQUBOに対しても適用可能である。組合せ最適化問題の性質や制約は、サブQUBOにも反映されるためである。
図20は、QUBO係数行列WとサブQUBOの例を示す図である。
図20に示すようなQUBO係数行列Wにおいて、たとえば、変数σ,σ,σ,σ,σ10,σ12が境界変数に分類された場合、変数σ,σ,σ,σ,σ,σ11間の相互作用の大きさを示す係数値によるサブQUBOが得られる。図20の例では、各境界変数の値が1に設定されたものとしてサブQUBOの対角成分に補正値が加えられている。
式(6)より、変数σ,σ,σ,σ,σ,σ11のうち、変数σ,σ,σ11は、case1に該当し、値を0に固定できる無効変数となり、変数σ,σは、case2に該当し、値を1に固定できる無効変数となる。一方、変数σは、case1及びcase2に該当せず、有効変数となる。
上記のような式(6)を用いた有効変数と無効変数との分類の仕方の正しさは、式(2)に示したイジング型の目的関数を用いて確認できる。
たとえば、図20に示したようなサブQUBOが得られたとき、式(2)に示したイジング型の目的関数において、変数σが寄与する部分は、J1,3σσ+J3,1σσ+J1,1σ=−2σσ+4σ=σ(4−2σ)である。変数σは0か1であるので、括弧内は常に正の値であり、目的関数の値を小さくする変数σの値は1に決まる。つまり、変数σは無効変数である。
一方、式(2)に示したイジング型の目的関数において、変数σが寄与する部分は、J31σσ+J13σσ+J33σ=−2σσ−5σ=−σ(5+2σ)である。変数σは0か1であるので、目的関数の値を小さくする変数σの値は、0に決まる。つまり、変数σも無効変数である。
また、式(2)に示したイジング型の目的関数において、変数σが寄与する部分は、J79σσ+J97σσ+J77σ=−4σσ+4σ=σ(4−4σ)である。変数σが0である場合、変数σが1であると目的関数の値が小さくなる。一方、変数σが1である場合、括弧内が0であるため、変数σは0であっても1であってもよい。そのため、変数σは有効変数である。
上記のような処理を実現するため、図4に示した、第2の実施の形態の情報処理装置31のサブQUBO生成部45は、たとえば、以下に示すようなサブQUBOの更新処理を行う。
図21は、サブQUBOの更新処理の一例の流れを示す図である。
サブQUBO生成部45は、図5に示したステップS6の処理において生成されたサブQUBOごとに、上記のような式(6)を用いて、無効変数を選択する(ステップS20)。
サブQUBO生成部45は、選択した無効変数には、上記のように目的関数の値を小さくする値(固定値)を設定する(ステップS21)。
そして、サブQUBO生成部45は、境界変数群に設定された固定値に基づいて計算された補正値を、無効変数に設定された固定値に基づいて更新する(ステップS22)。式(3)の変数σに無効変数も含めることで、補正値の更新を行える。
そして、サブQUBO生成部45は、更新した補正値を含み、分類された変数群のうち、無効変数を除いた有効変数群に属す各変数間の相互作用の大きさを示す新たなサブQUBOを生成する(ステップS23)。
このような処理により、部分問題の数を少なくできる可能性があり、計算時間の短縮が期待できる。
図22は、部分問題の更新例を示す図である。
図22では、図5に示したステップS6の処理において、6つのサブQUBOが生成された(6つの部分問題が生成された)例が示されている。各部分問題が使う変数の数(選択された変数の数)は、処理可能なビット数の上限が1000ビットであるイジングマシン32を用いた場合を想定し、1000個となっている。
図22の例では、部分問題ID=1の部分問題については、図21に示した処理により得られた有効変数の数が800、部分問題ID=2の部分問題については、有効変数の数が700となっている。部分問題ID=3と部分問題ID=6の部分問題については、有効変数の数が500、部分問題ID=4と部分問題ID=5の部分問題については、有効変数の数が400となっている。
たとえば、図22に示すように、部分問題ID=3と部分問題ID=4の部分問題の有効変数の数の和は900であり、1000を超えないため、これらの部分問題は統合できる。部分問題ID=5と部分問題ID=6の部分問題についても同様であり、統合できる。
このため、図22に示すように、新たな部分問題ID=1〜4の4つの部分問題を作成できる。これにより、イジングマシン32に部分問題を実行させる回数を6回から4回に少なくすることができる。
なお、サブQUBO生成部45は、上記のような統合処理を、ビンパッキング問題を解くことで行ってもよい。その場合、ビンパッキング問題における容量を、イジングマシン32が処理可能なビット数の上限、荷物の大きさを有効変数の数とすればよい。部分問題数程度の小規模のビンパッキング問題は、厳密解を得るのでなければ比較的短時間で解ける。
(第3の実施の形態)
以下に示す第3の実施の形態の最適化問題計算システムは、境界変数群に互いに異なるM(Mは2以上の自然数)パターンの固定値を設定し、各固定値に基づくMパターンのサブQUBOを、M個のイジングマシンに処理させるものである。M個のイジングマシンを用いることで、MパターンのサブQUBOについての部分問題の並列計算が可能になるため、前述のタブーサーチにより境界変数群の値を1つずつ変えて、1つのイジングマシンに繰り返し処理させる場合に比べて、計算時間が短縮可能である。
図23は、第3の実施の形態の最適化問題計算システムによる処理例を示す図である。なお、図23では、上記MがM=3である例が示されている。
解候補Aは、図5に示したような繰り返し処理におけるある時点での、目的関数の最小値(図23の例では−105)と、最小値が得られたときの全変数の値を示している。最適化問題計算システムに含まれるCPUは、全変数のうち、境界変数群に互いに異なる3パターンの固定値を設定する。
図23の例では、CPUは、解候補Aに含まれる境界変数群に設定されている固定値において、それぞれ異なる1つのビット位置の値を反転させた3パターンの固定値を設定している。そして、図23では図示を省略しているが、CPUは、3パターンの固定値のそれぞれに基づいて補正値を計算し、その補正値を含む3パターンのサブQUBOを生成する。
その後、3つのイジングマシンのそれぞれが、3パターンのサブQUBOのうち、自身が担当するサブQUBOに基づいた探索(目的関数の値を最小にする変数群の値の探索)を行う。図23の例では、3つのイジングマシンによる探索(並列イジングマシン処理)により、3つの解候補B1,B2,B3が得られている。
そして、たとえば、最適化問題計算システムの全体で、解候補A,B1〜B3のうちで、目的関数の値が最小値となるものを後述する通信処理によって共有し、CPU処理によって、共有された解候補を用いて最適化問題計算システム全体の解候補を更新する。図23の例では、解候補A,B1〜B3のうちで、目的関数の値が最小となる解候補B1が、最適化問題計算システム全体における新たな解候補Bとして採用されている。
そして、再び、解候補Bに含まれる境界変数群の値に対してそれぞれ1ビット異なるように3パターンの固定値が設定され、同様の処理が、収束条件が満たされるまで繰り返される。
図24は、第3の実施の形態の最適化問題計算システムのシステム構成例を示す図である。
最適化問題計算システム60は、情報処理装置61a,61b1,…,61bMを有する。情報処理装置61a,61b1,…,61bMは、ネットワーク62を介して互いに接続されている。情報処理装置61a,61b1〜61bMのそれぞれは、たとえば、図2に示したようなハードウェア構成により実現される。情報処理装置61b1〜61bMのそれぞれにはイジングマシン61c1〜61cMの何れかが接続されている。なお、情報処理装置61b1〜61bMのそれぞれの内部に、イジングマシン61c1〜61cMの何れかが設けられていてもよい。
情報処理装置61aはファイルサーバとして機能する。情報処理装置61aに含まれるHDDには、最適化問題計算プログラムや、QUBO係数行列Wが記憶される。
最適化問題計算システム60では、たとえば、MPI(Message Passing Interface)処理が行われ、情報処理装置61b1〜61bMは、情報処理装置61aのHDDに記憶されている最適化問題計算プログラムを一斉に実行する。
図25は、第3の実施の形態の最適化問題計算システムによる計算処理の手順の一例を示すフローチャートである。
情報処理装置61b1〜61bMは、情報処理装置61aのHDDに記憶されているQUBO係数行列Wを取得する(ステップS30)。そして情報処理装置61b1〜61bMのそれぞれのCPUは、ステップS31,S32,S33の処理を行う。ステップS31〜S33の処理は、図5に示したステップS2〜S4の処理と同じである。
その後、情報処理装置61b1〜61bMのそれぞれのCPUは、境界変数群にMパターンの固定値を設定する(ステップS34)。繰り返し処理における初回のステップS34の処理では、CPUは、たとえば、まず、境界変数群の各変数(ビット)による初期ビット列に対して、それぞれ異なる1つのビット位置の値を反転させて、Mパターンのビット列を生成する。繰り返し処理における2回目以降のステップS34の処理では、情報処理装置61b1〜61bMのそれぞれのCPUは、更新された解候補に含まれる境界変数群のビット列に対して、それぞれ異なる1つのビット位置の値を反転させて、Mパターンのビット列を生成する。なお、ステップS34の処理で設定されるMパターンの固定値は、情報処理装置61b1〜61bMのそれぞれにおいて同じである。
次に、情報処理装置61b1〜61bMのそれぞれのCPUは、Mパターンの固定値のうち自身が処理を担当するパターンの固定値を決定する(ステップS35)。たとえば、Mパターンの固定値のそれぞれには、MPIプロセスのランク番号(プロセス固有の識別情報)が対応付けられており、情報処理装置61b1〜61bMのそれぞれのCPUにもランク番号が対応付けられている。各CPUは、自身のランク番号と同じランク番号が対応付けられているパターンの固定値の処理を担当する。
各CPUは、処理を担当するパターンの固定値に基づいて補正値を計算し、その補正値を含む各部分問題に対応するサブQUBOを生成する(ステップS36)。ステップS36の処理は、情報処理装置61b1〜61bMのそれぞれのCPUにて行われるため、最適化問題計算システム60全体では、MパターンのサブQUBOが各部分問題について生成される。
そして、各CPUは、各部分問題について生成されたサブQUBOを各々個別にイジングマシンへ送信する(ステップS37)。最適化問題計算システム60全体では、図24に示すようにM個のイジングマシン61c1〜61cMへのサブQUBOの送信が並列に行われることになる。
その後、情報処理装置61b1〜61bMのそれぞれのCPUは、ステップS38,S39の処理を行う。ステップS38,S39の処理は、図5に示したステップS8,S9の処理と同じである。
そして、情報処理装置61b1〜61bMのそれぞれのCPUは通信を行い、最適化問題計算システム60全体で、目的関数の値が最小値となる解候補を共有するために、目的関数の値を共有する(ステップS40)。ステップS40の処理では、たとえば、AllReduce通信により、目的関数の値の共有が行われる。
そして、情報処理装置61b1〜61bMのそれぞれのCPUは、共有された目的関数の値を用いて、最適化問題計算システム60全体の解候補を更新する(ステップS41)。たとえば、あるCPUが今回計算した目的関数の値がこれまで最適化問題計算システム60で得られた最小値である場合、そのCPUは、その最小値を得たときの全変数の値をその最小値とともに送信し、最適化問題計算システム60全体で共有する。これにより、最適化問題計算システム60全体の解候補が更新される。ステップS41の処理では、たとえば、ブロードキャスト通信が用いられる。
情報処理装置61b1〜61bMのそれぞれのCPUは、所定の収束条件が満たされているか否かを判定し(ステップS42)、収束条件が満たされていない場合には、ステップS34からの処理が繰り返される。収束条件が満たされている場合、そのときの解候補が、たとえば、情報処理装置61aにおいて解データ(組合せ最適化問題の解(計算結果))を記憶する記憶領域に記憶される。情報処理装置61aは、計算結果を、たとえば、ディスプレイ31d1に出力し(ステップS43)、計算処理を終える。
図26は、M=3としたときのMPI処理の例を示す図である。
“E1”は、これまで最適化問題計算システム60で得られた目的関数の最小値を示している。また、その最小値が得られたときの全変数の値(“bit”)が“E1”に対応付けられている。“E1”と“E1”に対応付けられた“bit”は、後述の処理により、最適化問題計算システム60全体で共有されている。
M=3の場合、ステップS34の処理では、情報処理装置61b1,61b2,61b3のそれぞれのCPUは、3パターンの固定値を含む全変数の値を生成する。なお、図示が省略されているが“C1”,“C2”,“C3”にはMPIプロセスのランク番号が対応付けられている。
ステップS35の処理では、情報処理装置61b1のCPUが処理を担当するパターンの固定値は、“C1”に対応する“bit”に含まれるものとなる。また、情報処理装置61b2のCPUが処理を担当するパターンの固定値は、“C2”に対応する“bit”に含まれるものとなり、情報処理装置61b3のCPUが処理を担当するパターンの固定値は、“C3”に対応する“bit”に含まれるものとなる。
“R1”は、情報処理装置61b1のCPUが、イジングマシン61c1を用いて計算した目的関数の最小値であり、その最小値が得られたときの“bit”が“R1”に対応付けられている。“R2”は、情報処理装置61b2のCPUが、イジングマシン61c2を用いて計算した目的関数の最小値であり、その最小値が得られたときの“bit”が“R2”に対応付けられている。“R3”は、情報処理装置61b3のCPUが、イジングマシン61c3を用いて計算した目的関数の最小値であり、その最小値が得られたときの“bit”が“R3”に対応付けられている。
このとき、情報処理装置61b1は、“E1”の値と“R1”の値を保持しているが、“R2”の値と“R3”の値を保持していない。また、情報処理装置61b2は、“E1”の値と“R2”の値を保持しているが、“R1”の値と“R3”の値を保持していない。また、情報処理装置61b3は、“E1”の値と“R3”の値を保持しているが、“R1”の値と“R2”の値を保持していない。
ステップS40の処理では、たとえば、AllReduce通信が行われ、情報処理装置61b1〜61b3のそれぞれにおいて“E1”,“R1”,“R2”,“R3”の値が保持される。
ステップS41の処理では、たとえば、情報処理装置61b1〜61b3のそれぞれのCPUは、まず、自身が計算した目的関数の値が、他のCPUが計算した目的関数の値及び、“E1”の値よりも小さいか否かを判定する。各CPUは、自身が計算した目的関数の値が、他のCPUが計算した目的関数の値及び“E1”の値よりも小さければ、自身が計算した目的関数の値で“E1”の値を上書きするとともに、“E1”に対応付けられていた“bit”の値も上書きする。
図26の例では、情報処理装置61b1のCPUが計算した“R1”の値が“E1”,“R2”,“R3”の値よりも小さいため、“R1”の値(−107)で、“E1”の値が更新される。さらに情報処理装置61b1のCPUは、“E1”に対応付けられていた“bit”の値を、“R1”に対応付けられている“bit”の値で上書きする。
その後、情報処理装置61b1のCPUは、たとえば、ブロードキャスト通信により、更新した“E1”の値と“E1”に対応付けられている“bit”の値を送信する。これにより、情報処理装置61b2,61b3においても、“E1”の値と“E1”に対応付けられている“bit”の値が更新される。
以上のように、第3の実施の形態の最適化問題計算システム60は、境界変数群に互いに異なるM(Mは2以上の自然数)パターンの固定値を設定し、各固定値に基づくMパターンのサブQUBOを、M個のイジングマシン61c1〜61cMに処理させる。これにより、MパターンのサブQUBOについての部分問題の並列計算が可能になるため、タブーサーチにより境界変数群の値を1つずつ変えて、1つのイジングマシンに繰り返し処理させる場合に比べて、計算時間が短縮可能である。
なお、上記の例では、解候補に含まれる境界変数群のビット列に対して、それぞれ異なる1つのビット位置の値を反転させて、Mパターンのビット列を生成する例を示したが、これに限定されない。たとえば、以下のようにMパターンのビット列を生成してもよい。
図27は、Mパターンのビット列を生成する他の例を示す図である。なお、図27では、M=3である例が示されている。
図27では、3つの解候補A1,A2,A3の“bit”に含まれる境界変数群の固定値に基づいて、境界変数群の3パターンの新たな固定値が生成される例が示されている。新たな3パターンの固定値は、図27に示すように解候補A1,A2,A3の“bit”に含まれる境界変数群の固定値をそのまま用いてもよいし、解候補A1,A2,A3の“bit”に含まれる境界変数群の固定値を1ビット変化させて用いてもよい。また、3パターンの固定値の何れかの代りに、探索が行われていないパターンの固定値を用いてもよい。
3つのイジングマシンを用いて解候補B1,B2,B3が得られた場合、CPUは、解候補A1〜A3に含まれる“E1”,“E2”,“E3”と、解候補B1〜B3に含まれる“R1”,“R2”,“R3”から、値が重複するものを除いて値が小さい順に3つ選択する。図27の例では、“E1”,“R1”,“R2”が選択されている。
そして、最適化問題計算システムの全体で、“E1”,“R1”,“R2”を含む解候補が前述の通信処理によって共有され、共有された解候補を用いて最適化問題計算システム全体の3つの解候補が更新される。図27の例では、“E1”の値と“E1”に対応付けられている“bit”の値が、“R1”の値と“R1”に対応付けられている“bit”の値によって上書きされている。また、“E2”の値と“E2”に対応付けられている“bit”の値が、“R2”の値と“R2”に対応付けられている“bit”の値によって上書きされている。また“E3”の値と“E3”に対応付けられている“bit”の値が、前回の“E1”の値と前回の“E1”に対応付けられていた“bit”の値によって上書きされている。
そして、再び、“E1”〜“E3”に対応付けられている“bit”に含まれる固定値に基づいて、新たな3パターンの固定値が生成される。
このように、M個の解候補に含まれる境界変数群の固定値から新たなMパターンの境界変数群の固定値を生成することで、1つの解候補に含まれる境界変数群の固定値からMパターンの境界変数群の固定値を生成するよりも、解が局所解に陥ることを抑制できる。
なお、上記の説明では、M個の情報処理装置61b1〜61bMがM個のイジングマシン61c1〜61cMを用いて計算処理を行う例を示したが、この例に限定されない。たとえば、M個のCPUを有する1つの情報処理装置がM個のイジングマシンを用いて上記の処理を行ってもよい。
なお、前述のように、上記の処理内容は、情報処理装置31,61a,61b1〜61bMにプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体31f1)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVD及びDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD31c)にプログラムをコピーして実行してもよい。
以上、実施の形態に基づき、本発明の最適化問題計算プログラム及び最適化問題計算システムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
10 最適化問題計算システム
11 情報処理装置
11a 記憶部
11a1 係数値群
11b 処理部
11c インタフェース
12 イジングマシン
20,21,22 グラフ
σ〜σ12 変数
,d,d,d11,d12 補正値

Claims (9)

  1. 組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群と、前記組合せ最適化問題を複数の部分問題に分割する際の分割数とを取得し、
    前記係数値群に基づいて、前記目的関数に含まれる全変数に対応する複数の第1の頂点を有し、前記各変数間の相互作用の有無を、前記複数の第1の頂点の各頂点間を結ぶ辺の有無に置き換えた第1のグラフを生成し、
    前記第1のグラフにおいて、前記複数の第1の頂点のうち、前記辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、前記第1のグラフを抽象化した第2のグラフを生成し、
    前記第2のグラフに含まれる複数の第2の頂点の接続関係と前記分割数とに基づいて、前記全変数を、前記複数の部分問題の各々で用いられる変数群の候補と、前記複数の部分問題の各々の解に基づいて前記組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、
    前記第1のグラフに含まれる前記複数の第1の頂点の接続関係に基づいて、前記変数群の候補と前記境界変数群の候補とから、前記変数群と前記境界変数群を決定し、
    前記境界変数群に固定値を設定し、
    前記固定値に基づいて計算された補正値を含み、前記変数群に属す各変数間の相互作用の大きさを示す部分係数値群を、前記複数の部分問題の各々について個別にイジングマシンに送信し、
    前記イジングマシンから、前記複数の部分問題の各々の解を示す前記変数群の値を受信し、
    前記変数群の値と、前記境界変数群に設定した前記固定値と、前記係数値群とに基づいて、前記目的関数の値を計算し、
    収束条件が満たされるまで、前記固定値の変更、前記部分係数値群の前記イジングマシンへの送信、前記変数群の値の受信、及び前記目的関数の値の計算を繰り返し、前記収束条件が満たされた時点で、前記目的関数を最小にする前記全変数の値を出力する、
    処理をコンピュータに実行させる最適化問題計算プログラム。
  2. 前記変数群に含まれる変数は、自身が属す前記変数群に含まれる他の変数または前記境界変数群に含まれる変数との間にだけ相互作用を有し、前記境界変数群に含まれる境界変数は、異なる2つ以上の前記変数群に含まれる変数との間に相互作用を有する、請求項1に記載の最適化問題計算プログラム。
  3. 前記境界変数群の候補に属す第1の変数に対応した前記第1のグラフにおける第1の頂点の接続先が、前記境界変数群の候補に属す他の変数の何れかと、前記複数の部分問題の各々で用いられる前記変数群の候補の1つである第1の変数群に属す第2の変数の何れかと、に対応した頂点の2通りである場合、前記第1の変数を前記第1の変数群に属すように決定する、
    処理を前記コンピュータに実行させる、請求項1または2に記載の最適化問題計算プログラム。
  4. 前記複数の第1の頂点のうち、接続されている前記辺の数が少ない前記2つの頂点を優先的に前記1つの頂点に統合する、
    処理を前記コンピュータに実行させる、請求項1乃至3の何れか一項に記載の最適化問題計算プログラム。
  5. 前記部分係数値群の値に基づいて、前記変数群のうち、前記目的関数の値を小さくする値が確定している無効変数を選択し、
    前記無効変数に前記目的関数の値を小さくする値を設定し、
    前記無効変数に設定された値に基づいて、前記補正値を更新し、
    更新した前記補正値を含み、前記変数群のうち、前記無効変数を除いた有効変数群に属す各変数間の相互作用の大きさを示す新たな部分係数値群を生成する、
    処理を前記コンピュータに実行させる、請求項1乃至4の何れか一項に記載の最適化問題計算プログラム。
  6. 組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群と、前記組合せ最適化問題を複数の部分問題に分割する際の分割数とを取得し、
    前記係数値群に基づいて、前記目的関数に含まれる全変数に対応する複数の第1の頂点を有し、前記各変数間の相互作用の有無を、前記複数の第1の頂点の各頂点間を結ぶ辺の有無に置き換えた第1のグラフを生成し、
    前記第1のグラフにおいて、前記複数の第1の頂点のうち、前記辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、前記第1のグラフを抽象化した第2のグラフを生成し、
    前記第2のグラフに含まれる複数の第2の頂点の接続関係と前記分割数とに基づいて、前記全変数を、前記複数の部分問題の各々で用いられる変数群の候補と、前記複数の部分問題の各々の解に基づいて前記組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、
    前記第1のグラフに含まれる前記複数の第1の頂点の接続関係に基づいて、前記変数群の候補と前記境界変数群の候補とから、前記変数群と前記境界変数群を決定し、
    前記境界変数群に、互いに異なるM(Mは2以上の自然数)パターンの固定値を設定し、
    前記Mパターンの固定値のそれぞれに基づいて計算された補正値を含み、前記変数群に属す各変数間の相互作用の大きさを示すMパターンの部分係数値群を、前記複数の部分問題の各々について個別にM個のイジングマシンに送信し、
    前記M個のイジングマシンのそれぞれから、前記複数の部分問題の各々の解を示す前記変数群の値を受信し、
    前記変数群の値と、前記境界変数群に設定した前記Mパターンの固定値と、前記係数値群とに基づいて、前記目的関数の値をMパターン計算し、
    収束条件が満たされるまで、新たなMパターンの固定値を生成する処理と、前記部分係数値群の前記M個のイジングマシンへの送信、前記変数群の値の受信、及び前記目的関数の値の計算を繰り返し、前記収束条件が満たされた時点で、前記目的関数を最小にする前記全変数の値を出力する、
    処理をコンピュータに実行させる最適化問題計算プログラム。
  7. 前記新たなMパターンの固定値は、Mパターン計算した前記目的関数の値の中で最小値が得られたときの前記目的関数の計算に用いた固定値において、それぞれ異なる1つのビット位置の値を反転させることで生成される、
    請求項6に記載の最適化問題計算プログラム。
  8. 前記新たなMパターンの固定値は、それぞれMパターン計算される、今回計算された前記目的関数の値と前回計算された前記目的関数の値のうち、値の小さい順に選択されたMパターンの前記目的関数の値の計算に用いた固定値に基づいて生成される、
    請求項6に記載の最適化問題計算プログラム。
  9. 組合せ最適化問題を変換したイジング型の目的関数に含まれる各変数間の相互作用の大きさを示す係数値群のうち、前記組合せ最適化問題を分割した複数の部分問題の各々に対応した前記係数値群の一部を含む部分係数値群を受信し、前記部分係数値群に基づいて、前記複数の部分問題を計算するイジングマシンと、
    前記係数値群と、前記組合せ最適化問題を前記複数の部分問題に分割する際の分割数とを取得し、前記係数値群に基づいて、前記目的関数に含まれる全変数に対応する複数の第1の頂点を有し、前記各変数間の相互作用の有無を、前記複数の第1の頂点の各頂点間を結ぶ辺の有無に置き換えた第1のグラフを生成し、前記第1のグラフにおいて、前記複数の第1の頂点のうち、前記辺を介して接続されている2つの頂点を1つの頂点に統合する処理を繰り返すことで、前記第1のグラフを抽象化した第2のグラフを生成し、前記第2のグラフに含まれる複数の第2の頂点の接続関係と前記分割数とに基づいて、前記全変数を、前記複数の部分問題の各々で用いられる変数群の候補と、前記複数の部分問題の各々の解に基づいて前記組合せ最適化問題の全体の解を計算する際に用いられる境界変数群の候補と、に分類し、前記第1のグラフに含まれる前記複数の第1の頂点の接続関係に基づいて、前記変数群の候補と前記境界変数群の候補とから、前記変数群と前記境界変数群を決定し、前記境界変数群に固定値を設定し、前記固定値に基づいて計算された補正値を含み、前記変数群に属す各変数間の相互作用の大きさを示す前記部分係数値群を、前記複数の部分問題の各々について個別に前記イジングマシンに送信し、前記イジングマシンから、前記複数の部分問題の各々の解を示す前記変数群の値を受信し、前記変数群の値と、前記境界変数群に設定した前記固定値と、前記係数値群とに基づいて、前記目的関数の値を計算し、収束条件が満たされるまで、前記固定値の変更、前記部分係数値群の前記イジングマシンへの送信、前記変数群の値の受信、及び前記目的関数の値の計算を繰り返し、前記収束条件が満たされた時点で、前記目的関数を最小にする前記全変数の値を出力する、情報処理装置と、
    を有する最適化問題計算システム。
JP2019074219A 2018-06-20 2019-04-09 最適化問題計算プログラム及び最適化問題計算システム Pending JP2020004387A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/434,375 US20190391807A1 (en) 2018-06-20 2019-06-07 Computer-readable recording medium storing optimization problem computing program and optimization problem computing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018116656 2018-06-20
JP2018116656 2018-06-20

Publications (1)

Publication Number Publication Date
JP2020004387A true JP2020004387A (ja) 2020-01-09

Family

ID=69100157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019074219A Pending JP2020004387A (ja) 2018-06-20 2019-04-09 最適化問題計算プログラム及び最適化問題計算システム

Country Status (1)

Country Link
JP (1) JP2020004387A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021111276A (ja) * 2020-01-15 2021-08-02 Jfeスチール株式会社 配送計画作成方法、操業方法、及び配送計画作成装置
CN113255094A (zh) * 2020-02-10 2021-08-13 富士通株式会社 优化设备、优化程序和优化方法
EP3929775A1 (en) 2020-06-25 2021-12-29 Fujitsu Limited Information processing system, information processing apparatus, information processing method, and program
WO2022003943A1 (ja) * 2020-07-03 2022-01-06 日本電気株式会社 解精度保証アニーリング計算装置、方法及びプログラム
EP4016337A1 (en) 2020-12-15 2022-06-22 Fujitsu Limited Optimization apparatus, optimization program, and optimization method
EP4047529A1 (en) 2021-02-17 2022-08-24 Fujitsu Limited Information processing system, information processing method, and program of information processing
WO2023100595A1 (ja) * 2021-11-30 2023-06-08 日本電気株式会社 最適化装置、最適化方法および最適化プログラム
JP2023524236A (ja) * 2020-05-01 2023-06-09 富士通株式会社 サロゲート二値最適化
WO2023162170A1 (ja) * 2022-02-25 2023-08-31 日本電気株式会社 情報処理装置
JP2023545595A (ja) * 2021-09-26 2023-10-31 シェンジェン テンセント コンピューター システムズ カンパニー リミテッド 量子系の固有状態の取得方法、装置、デバイス及び記憶媒体
JP7417074B2 (ja) 2020-02-19 2024-01-18 富士通株式会社 最適化装置、最適化方法及び最適化装置の制御プログラム
WO2024029539A1 (ja) * 2022-08-05 2024-02-08 学校法人早稲田大学 計算方法、計算システム、及びプログラム
JP7456298B2 (ja) 2020-06-04 2024-03-27 富士通株式会社 最適化装置、最適化方法、及び最適化プログラム

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021111276A (ja) * 2020-01-15 2021-08-02 Jfeスチール株式会社 配送計画作成方法、操業方法、及び配送計画作成装置
JP7259774B2 (ja) 2020-01-15 2023-04-18 Jfeスチール株式会社 配送計画作成方法、及び配送計画作成装置
CN113255094A (zh) * 2020-02-10 2021-08-13 富士通株式会社 优化设备、优化程序和优化方法
JP2021125172A (ja) * 2020-02-10 2021-08-30 富士通株式会社 最適化装置、最適化プログラム、及び最適化方法
JP7417074B2 (ja) 2020-02-19 2024-01-18 富士通株式会社 最適化装置、最適化方法及び最適化装置の制御プログラム
JP2023524236A (ja) * 2020-05-01 2023-06-09 富士通株式会社 サロゲート二値最適化
JP7435826B2 (ja) 2020-05-01 2024-02-21 富士通株式会社 サロゲート二値最適化
JP7456298B2 (ja) 2020-06-04 2024-03-27 富士通株式会社 最適化装置、最適化方法、及び最適化プログラム
EP3929775A1 (en) 2020-06-25 2021-12-29 Fujitsu Limited Information processing system, information processing apparatus, information processing method, and program
JP7488458B2 (ja) 2020-06-25 2024-05-22 富士通株式会社 情報処理システム、情報処理方法及びプログラム
WO2022003943A1 (ja) * 2020-07-03 2022-01-06 日本電気株式会社 解精度保証アニーリング計算装置、方法及びプログラム
JPWO2022003943A1 (ja) * 2020-07-03 2022-01-06
EP4016337A1 (en) 2020-12-15 2022-06-22 Fujitsu Limited Optimization apparatus, optimization program, and optimization method
EP4047529A1 (en) 2021-02-17 2022-08-24 Fujitsu Limited Information processing system, information processing method, and program of information processing
JP2023545595A (ja) * 2021-09-26 2023-10-31 シェンジェン テンセント コンピューター システムズ カンパニー リミテッド 量子系の固有状態の取得方法、装置、デバイス及び記憶媒体
WO2023100595A1 (ja) * 2021-11-30 2023-06-08 日本電気株式会社 最適化装置、最適化方法および最適化プログラム
WO2023162170A1 (ja) * 2022-02-25 2023-08-31 日本電気株式会社 情報処理装置
WO2024029539A1 (ja) * 2022-08-05 2024-02-08 学校法人早稲田大学 計算方法、計算システム、及びプログラム

Similar Documents

Publication Publication Date Title
JP2020004387A (ja) 最適化問題計算プログラム及び最適化問題計算システム
US20190391807A1 (en) Computer-readable recording medium storing optimization problem computing program and optimization problem computing system
Gade et al. Obtaining lower bounds from the progressive hedging algorithm for stochastic mixed-integer programs
Liefooghe et al. A software framework based on a conceptual unified model for evolutionary multiobjective optimization: ParadisEO-MOEO
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US20170083873A1 (en) Infeasible schedules in a quantum annealing optimization process
CN111027703B (zh) 一种量子线路查询的方法、装置、存储介质及电子装置
US11631006B2 (en) Optimization device and control method of optimization device
US20210256179A1 (en) Information processing method and information processing system
US11521077B1 (en) Automatic recommendation of predictor variable values for improving predictive outcomes
CN116432570A (zh) 一种芯片的测试用例生成方法、装置及存储介质
JP2015148926A (ja) 情報処理装置、評価関数学習方法およびプログラム
Blank et al. Handling constrained multi-objective optimization problems with heterogeneous evaluation times: proof-of-principle results
CN111325254A (zh) 构建条件关系网络、进行条件业务处理的方法及装置
US20210239481A1 (en) Information processing apparatus, recording medium, information processing method, and information processing system
Hosseiny et al. Hardware acceleration of YOLOv7-tiny using high-level synthesis tools
US9841990B2 (en) Encoding of a schedule into a binary structure
Liefooghe et al. ParadisEO-MOEO: A software framework for evolutionary multi-objective optimization
JP2022015503A (ja) 情報処理システム、情報処理方法及びプログラム
JP7498393B2 (ja) 情報処理装置、情報処理方法、プログラム及び情報処理システム
EP3879417A1 (en) Information processing system, information processing method, information processing program, and information processing apparatus
Lundkvist Decision tree classification and forecasting of pricing time series data
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
JP7488458B2 (ja) 情報処理システム、情報処理方法及びプログラム
JP2023078546A (ja) 情報処理装置、情報処理方法およびプログラム