IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-167800データ処理装置、プログラム及びデータ処理方法
<>
  • 特開-データ処理装置、プログラム及びデータ処理方法 図1
  • 特開-データ処理装置、プログラム及びデータ処理方法 図2
  • 特開-データ処理装置、プログラム及びデータ処理方法 図3
  • 特開-データ処理装置、プログラム及びデータ処理方法 図4
  • 特開-データ処理装置、プログラム及びデータ処理方法 図5
  • 特開-データ処理装置、プログラム及びデータ処理方法 図6
  • 特開-データ処理装置、プログラム及びデータ処理方法 図7
  • 特開-データ処理装置、プログラム及びデータ処理方法 図8
  • 特開-データ処理装置、プログラム及びデータ処理方法 図9
  • 特開-データ処理装置、プログラム及びデータ処理方法 図10
  • 特開-データ処理装置、プログラム及びデータ処理方法 図11
  • 特開-データ処理装置、プログラム及びデータ処理方法 図12
  • 特開-データ処理装置、プログラム及びデータ処理方法 図13
  • 特開-データ処理装置、プログラム及びデータ処理方法 図14
  • 特開-データ処理装置、プログラム及びデータ処理方法 図15
  • 特開-データ処理装置、プログラム及びデータ処理方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024167800
(43)【公開日】2024-12-04
(54)【発明の名称】データ処理装置、プログラム及びデータ処理方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20241127BHJP
   G06F 17/16 20060101ALI20241127BHJP
   G06F 17/13 20060101ALI20241127BHJP
【FI】
G06N99/00 180
G06F17/16 M
G06F17/13
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023084138
(22)【出願日】2023-05-22
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】渡部 康弘
(72)【発明者】
【氏名】田村 泰孝
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB42
(57)【要約】
【課題】多値変数で表現された組合せ最適化問題を、並列試行により計算可能とする。
【解決手段】記憶部11が、複数の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報11aを記憶し、処理部12が、評価関数情報11aに基づいて、複数の多値変数のそれぞれの値の遷移可能範囲のうちの一部である遷移先候補を生成し、複数の多値変数のそれぞれに対して、評価関数情報11aに基づいて、遷移先候補への遷移に伴う評価関数の値の変化量を算出し、変化量に基づいて遷移を受け入れる多値変数を複数の多値変数の中から決定し、決定した多値変数の値を遷移先候補の値へ遷移させる。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報を記憶する記憶部と、
前記評価関数情報に基づいて、前記複数の多数変数のそれぞれの値の遷移可能範囲のうちの一部である遷移先候補を生成し、前記複数の多値変数のそれぞれに対して、前記評価関数情報に基づいて、前記遷移先候補への遷移に伴う前記評価関数の値の変化量を算出し、前記変化量に基づいて前記遷移を受け入れる多値変数を前記複数の多値変数の中から決定し、決定した前記多値変数の値を前記遷移先候補の値へ遷移させる処理部と、
を有するデータ処理装置。
【請求項2】
前記処理部は、
前記複数の多値変数のそれぞれの前記遷移に伴う前記変化量を保持する保持回路と、
前記複数の多値変数のそれぞれに対して、前記遷移を受け入れる前記多値変数の値の変化に伴う前記変化量の差分値を算出する算出回路と、
前記差分値を用いて前記変化量を更新する更新回路と、
を含む請求項1に記載のデータ処理装置。
【請求項3】
前記組合せ最適化問題は、フロー行列及び距離行列を用いて表される割当問題であり、
前記記憶部は、
前記フロー行列と前記距離行列の一方である第1行列を記憶する第1メモリと、
前記フロー行列と前記距離行列の他方であって、前記複数の多値変数の値に基づいて配列された行列要素を含む第2行列を記憶する第2メモリと、
前記フロー行列と前記距離行列の他方であって、前記複数の多値変数の前記遷移先候補の値に基づいて配列された行列要素を含む第3行列を記憶する第3メモリと、
を有し、
前記算出回路は、前記遷移を受け入れる前記多値変数の識別番号により指定される前記第1行列の第1行列要素と、前記遷移を受け入れる前記多値変数の前記遷移の前の値により指定される、前記第2行列の第2行列要素及び前記第3行列の第3行列要素と、前記多値変数の前記遷移の後の値により指定される、前記第2行列の第4行列要素及び前記第3行列の第5行列要素と、に基づいて前記差分値を算出する、
請求項2に記載のデータ処理装置。
【請求項4】
前記第2行列及び前記第3行列の、行または列の一方が、前記遷移を受け入れる前記多値変数の値または前記多値変数の前記遷移の後の値により指定され、
指定された前記行または前記列に含まれる前記第2行列要素、前記第3行列要素、前記第4行列要素または前記第5行列要素が、前記第2メモリまたは前記第3メモリから読み出される、
請求項3に記載のデータ処理装置。
【請求項5】
前記第2行列要素及び前記第3行列要素は、第1読み出しタイミングで前記第2メモリと前記第3メモリから並列に読み出され、
前記第4行列要素及び前記第5行列要素は、第2読み出しタイミングで前記第2メモリと前記第3メモリから並列に読み出される、
請求項3に記載のデータ処理装置。
【請求項6】
前記第1乃至第5行列要素は、共通の読み出し経路を用いて、互いに異なる読み出しタイミングで前記第1メモリ、前記第2メモリまたは前記第3メモリから読み出され、
前記算出回路は、前記第1乃至第5行列要素を、共通の演算回路に入力して前記差分値を算出する、請求項3に記載のデータ処理装置。
【請求項7】
前記処理部は、前記遷移を受け入れる前記多値変数の前記識別番号により指定される、前記第2行列と前記第3行列の列または行を、前記第2行列と前記第3行列との間で入れ替える、請求項3に記載のデータ処理装置。
【請求項8】
前記複数の多値変数のそれぞれに対して、前記遷移先候補は第1遷移先候補と第2遷移先候補を含み、
前記第3行列は、前記第1遷移先候補の値に基づいて配列されており、
前記記憶部は、さらに、前記フロー行列と前記距離行列の他方であって、前記第2遷移先候補の値に基づいて配列された行列要素を含む第4行列を記憶する第4メモリを有する、
請求項3に記載のデータ処理装置。
【請求項9】
前記組合せ最適化問題は、フロー行列及び距離行列を用いて表される割当問題であり、
前記記憶部は、
前記フロー行列と前記距離行列の一方である第1行列を記憶する第1メモリと、
前記フロー行列と前記距離行列の他方であって、前記複数の多値変数の値に基づいて配列された第2行列の行列要素の値と、前記フロー行列と前記距離行列の他方であって、前記複数の多値変数の前記遷移先候補の値に基づいて配列された第3行列の行列要素の値との差により表現される行列要素を含む第4行列を記憶する第2メモリと、
を有し、
前記算出回路は、前記遷移を受け入れる前記多値変数の識別番号により指定される前記第1行列の第1行列要素と、前記遷移を受け入れる前記多値変数の前記遷移の前の値により指定される前記第4行列の第2行列要素と、前記多値変数の前記遷移の後の値により指定される、前記第4行列の第3行列要素と、に基づいて前記差分値を算出する、
請求項2に記載のデータ処理装置。
【請求項10】
メモリに記憶されている、複数の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報に基づいて、前記複数の多値変数のそれぞれの値の遷移可能範囲のうちの一部である遷移先候補を生成し、
前記複数の多値変数のそれぞれに対して、前記評価関数情報に基づいて、前記遷移先候補への遷移に伴う前記評価関数の値の変化量を算出し、
前記変化量に基づいて前記遷移を受け入れる多値変数を前記複数の多値変数の中から決定し、
決定した前記多値変数の値を前記遷移先候補の値へ遷移させる、
処理をコンピュータに実行させるプログラム。
【請求項11】
記憶部が、複数の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報を記憶し、
処理部が、前記評価関数情報に基づいて、前記複数の多値変数のそれぞれの値の遷移可能範囲のうちの一部である遷移先候補を生成し、
前記処理部が、前記複数の多値変数のそれぞれに対して、前記評価関数情報に基づいて、前記遷移先候補への遷移に伴う前記評価関数の値の変化量を算出し、
前記処理部が、前記変化量に基づいて前記遷移を受け入れる多値変数を前記複数の多値変数の中から決定し、
前記処理部が、決定した前記多値変数の値を前記遷移先候補の値へ遷移させる、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数を用いたイジングマシンがある。イジングマシンを用いる場合、組合せ最適化問題が磁性体のスピンの振る舞いを表すイジングモデルに変換される。そして、イジングマシンは、疑似焼き鈍し法やレプリカ交換法(パラレルテンパリング法などとも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値が極小になるイジングモデルの状態を探索する。評価関数の極小値のうちの最小値になる状態が最適解となる。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
【0003】
イジング型の評価関数は、たとえば、以下の式(1)で定義される。
【0004】
【数1】
【0005】
右辺の1項目は、イジングモデルの全状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号=iについてのバイアス係数を示している。
【0006】
また、xの値の変化に伴う評価関数の値の変化量(ΔE)は、以下の式(2)で表される。
【0007】
【数2】
【0008】
式(2)において、xが1から0に変化するとき、Δxは-1となり、状態変数xが0から1に変化するとき、Δxは1となる。なお、hは局所場と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEとなる。
【0009】
イジングマシンは、たとえば、ΔEが、乱数と温度パラメータの値に基づいて得られるノイズ値より小さい場合、xの値を反転させ局所場を更新する、という処理を繰り返すことで解の探索を行う。
【0010】
ΔEの算出やxの値を反転させるか否かの判定などの処理は、複数並列に行うことができるため、複数の状態変数に対する並列試行が可能である。
ところで、組合せ最適化問題には、割当問題などのように多値変数を用いて表すことができるものがある。割当問題では、ある要素がどの割当先に割り当てられているかを示す割当状態を、多値変数で表すことができる。従来、割当問題の解を、イジングマシンを用いて探索する技術が提案されている(たとえば、特許文献1,2参照)。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2023-1055号公報
【特許文献2】特開2022-165250号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
イジングマシンを用いて割当問題の解を探索する技術では、多値変数である割当状態を0または1のxに変換するためxの数が多くなる場合がある。xの数が多くなると、各xに関するΔEの計算に用いるデータの移動が複雑になり、並列試行が難しくなる場合がある。
【0013】
1つの側面では、本発明は、多値変数で表現された組合せ最適化問題を、並列試行により計算可能とすることを目的とする。
【課題を解決するための手段】
【0014】
1つの実施態様では、複数の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報を記憶する記憶部と、前記評価関数情報に基づいて、前記複数の多数変数のそれぞれの値の遷移可能範囲のうちの一部である遷移先候補を生成し、前記複数の多値変数のそれぞれに対して、前記評価関数情報に基づいて、前記遷移先候補への遷移に伴う前記評価関数の値の変化量を算出し、前記変化量に基づいて前記遷移を受け入れる多値変数を前記複数の多値変数の中から決定し、決定した前記多値変数の値を前記遷移先候補の値へ遷移させる処理部と、を有するデータ処理装置が提供される。
【0015】
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
【発明の効果】
【0016】
1つの側面では、本発明は、多値変数で表現された組合せ最適化問題を、並列試行により計算できる。
【図面の簡単な説明】
【0017】
図1】第1の実施の形態のデータ処理装置の一例を示す図である。
図2】n個の多値変数の遷移先候補の一例を示す図である。
図3】第2の実施の形態のデータ処理装置の一例を示す図である。
図4】現在の状態と遷移先候補の状態の一例を示す図である。
図5】Fメモリから読み出される行列要素の例を示す図である。
図6】Dメモリから読み出される行列要素の例を示す図である。
図7】第2の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。
図8】第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
図9】第3の実施の形態のデータ処理装置の一例を示す図である。
図10】第3の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。
図11】複数の遷移先候補現在の状態と遷移先候補の状態の一例を示す図である。
図12】Dメモリから読み出される行列要素の例を示す図である。
図13】第5の実施の形態のデータ処理装置の一例を示す図である。
図14】ΔDメモリから読み出される行列要素の一例を示す図である。
図15】第5の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。
図16】データ処理装置の一例であるコンピュータのハードウェア例を示す図である。
【発明を実施するための形態】
【0018】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す各実施の形態のデータ処理装置は、複数の多値変数で表現された組合せ最適化問題の解を探索する。このような組合せ最適化問題の1つとして、2次割り当て問題(QAP(Quadratic Assignment Problem))などの割当問題がある。割当問題は、配車ルーティングやFPGA(Field-Programmable Gate Array)のブロック配置など、様々な実世界のアプリケーションをもつNP困難な組合せ最適化問題である。割当問題は、フロー行列及び距離行列を用いて表される。
【0019】
n個の要素をn箇所の割当先に割り当てるQAPでは、フロー行列と距離行列は、以下の式(3)、式(4)で表される。
【0020】
【数3】
【0021】
【数4】
【0022】
フロー行列(F)は、n行n列の行列である。fijはi行j列の行列要素であり、識別番号=i,jの要素(たとえば、施設)間のフロー量(たとえば、施設間での物資の輸送量などのコスト)を表す。
【0023】
距離行列(D)は、n行n列の行列である。dklはk行l列の距離であり、識別番号=k,lの割当先(たとえば、施設を配置する場所)間の距離を表す。
QAPの計算は、以下の式(5)で表される評価関数の値を最小化するような割当を探索することで行われる。
【0024】
【数5】
【0025】
式(5)においてφ(i=1~n)は、識別番号=iの要素の割当先を表す多値変数である。このため、dに添え字のφφを付したものは、識別番号=iの要素の割当先と、識別番号=jの要素の割当先との間の距離を表す。bに添え字のiφを付したものは、識別番号=iの要素をφに割り当てたときのバイアス係数を表す。なお、評価関数の符号を変えれば、QAPの計算は、評価関数の値が極大になる状態を探索することで行われる。
【0026】
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置の一例を示す図である。
第1の実施の形態のデータ処理装置10は、記憶部11及び処理部12を有する。
【0027】
記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリを含んでいてもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージを含んでいてもよい。また、記憶部11は、揮発性半導体メモリと不揮発性ストレージの両方を含んでいてもよい。
【0028】
記憶部11は、複数(以下n個とする)の多値変数を用いて表される組合せ最適化問題の評価関数に関する評価関数情報11aを記憶する。評価関数情報11aは、n個の多値変数のそれぞれの値の遷移可能範囲、評価関数に含まれる係数などの情報を含む。n個の多値変数のそれぞれは、整数変数であってもよいし、連続変数であってもよい。また、n個の多値変数は、互いに遷移可能範囲が異なっていてもよい。
【0029】
図1には、n個の多値変数の例として、φ~φが示されている。添え字の1~nは、多値変数の識別番号を表している。図1の例では、識別番号=iの多値変数であるφは整数変数であり、φの遷移可能範囲は1,2,…,mのm個の値である。
【0030】
評価関数に含まれる係数として、たとえば、式(3)、式(4)に示したようなフロー行列や距離行列の行列要素(フロー量や距離)がある。
なお、記憶部11は、さらに組合せ最適化問題の計算条件を記憶してもよい。たとえば、レプリカ交換法による探索が行われる場合、計算条件は、レプリカ数や各レプリカに設定する温度パラメータの値などを含む。
【0031】
処理部12は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGAなどの電子回路で実現できる。ただし、処理部12は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサで実現することもできる。プロセッサは、たとえば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。また、処理部12は、プロセッサと、ASICやFPGAなどの電子回路を含んでいてもよい。
【0032】
図1には、処理部12が行う処理の手順の例が示されている。
処理部12は、n個の多値変数のそれぞれに対して、評価関数情報11aに基づいて、値の遷移可能範囲のうちの一部である遷移先候補を生成する(ステップS1)。
【0033】
処理部12は、たとえば、n個の多値変数のそれぞれに対して、遷移可能範囲内からランダムで1つ、遷移先候補を生成する。処理部12は、n個の多値変数のそれぞれに対して、遷移可能範囲内からランダムで2以上の遷移先候補を生成してもよい(後述の第4の実施の形態参照)。
【0034】
組合せ最適化問題が制約条件をもつ場合、遷移先候補は、その制約条件を満たすように生成される。たとえば、制約条件を満たさない遷移先候補が生成された多値変数に対して、制約条件が満たされるまで、ランダムで遷移先候補が生成されてもよい。
【0035】
なお、処理部12は、ランダムではなく所定のルールにしたがって、遷移先候補を生成してもよい。図1の例では、φの遷移先候補φ’としてmが生成されている。
図2は、n個の多値変数の遷移先候補の一例を示す図である。横軸は多値変数の識別番号を表し、縦軸は多値変数の値を表している。プロット群15aは、n個の多値変数の現在の値または初期値を表している。プロット群15bは、n個の多値変数の初期値または現在の値に対する遷移先候補の値を表している。
【0036】
図2の例では、各多値変数の取り得る値は2つであり、各多値変数の現在の値に対する遷移先は1つに絞り込まれている。
ステップS1の処理後、処理部12は、n個の多値変数のそれぞれに対して、評価関数情報11aに基づいて、遷移先候補への遷移に伴う評価関数の値の変化量を算出する(ステップS2)。
【0037】
評価関数が式(5)により表される場合、φからφ’に遷移する場合の変化量(ΔE(φ→φ’))は、以下の式(6)で表すことができる。
【0038】
【数6】
【0039】
式(6)において、添え字のφ’φを付したdは、識別番号=jの要素の現在の割当先と、識別番号=iの要素の割当先候補との間の距離である。識別番号=jの要素の現在の割当先は、φで表すことができ、識別番号=iの要素の割当先候補は、φ’で表すことができる。添え字のφφを付したdは、識別番号=jの要素の割当先と、識別番号=iの要素の現在の割当先との間の距離である。識別番号=iの要素の割当先は、φで表すことができる。添え字のiφ’を付したbは、識別番号=iの要素をφ’に割り当てたときのバイアス係数である。添え字のiφを付したbは、識別番号=iの要素をφに割り当てたときのバイアス係数である。
【0040】
ステップS2の処理後、処理部12は、算出した変化量に基づいて、遷移先候補への遷移を受け入れる多値変数を決定する(ステップS3)。処理部12は、たとえば、変化量と、所定値との比較結果に基づいて、φからφ’への遷移を受け入れるか否かを判定する。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。処理部12は、たとえば、φの遷移に伴う変化量が、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例である、log(rand)×Tよりも小さい場合、遷移を受け入れる。
【0041】
なお、処理部12は、算出した変化量に基づいて、評価関数の値を最も小さくする遷移を行う多値変数の遷移を受け入れるようにしてもよい。
処理部12は、遷移を受け入れる多値変数の値を遷移先候補の値へ遷移させる(ステップS4)。図1では、φの値を遷移先候補であるφ’の値へ遷移させる例が示されている。φ’=mの場合、φの値はmに変化する。なお、このとき元のφの値が、遷移先候補であるφ’の値となる。
【0042】
遷移が受け入れられた多値変数が複数ある場合、処理部12はそれらの多値変数の中から1つを選択してもよい。その場合、たとえば、処理部12は、遷移が受け入れられた複数の多値変数の中から、遷移に伴う変化量により最も評価関数の値が小さくなる多値変数を選択する。処理部12は、遷移が受け入れられた複数の多値変数の中から、ランダムに遷移させる多値変数を選択してもよい。
【0043】
ステップS4の処理後、ステップS2からの処理が繰り返される。このとき処理部12は、ステップS2の処理にて、ステップS4の処理による遷移に伴う、評価関数の変化量の差分値を算出し、変化量を、その差分値を用いて更新してもよい。φがφ’に遷移したときの、φ→φ’の遷移に伴う変化量の差分値は、j≠iの場合、以下の式(7)で表される。
【0044】
【数7】
【0045】
処理部12は、式(7)に含まれるフロー行列や距離行列の行列要素を、記憶部11から読み出して、δΔE(φ→φ’)を算出することができる。
なお、j=iの場合、φ→φ’の遷移に伴う変化量の差分値は、以下の式(8)で表される。
【0046】
【数8】
【0047】
処理部12は、式(7)に示した差分値を用いて、j≠iの場合の変化量を、以下の式(9)にしたがって更新できる。
【0048】
【数9】
【0049】
処理部12は、式(8)に示した差分値を用いて、j=iの場合の変化量を、以下の式(10)にしたがって更新できる。
【0050】
【数10】
【0051】
なお、式(9)は以下の式(11)のように表すこともできる。
【0052】
【数11】
【0053】
式(11)において、右辺第2項の括弧内のΔdは、k=φまたはk=φ’とすると、以下の式(12)で表される。
【0054】
【数12】
【0055】
δΔE(φ→φ’)を効率よく算出するための構成例については、第2の実施の形態にて説明する。
ステップS2~S4の処理は、n個の多値変数に対して並列に行うことができる。つまり、ステップS2~S4の処理は、並列試行可能なイジングマシンを多値の処理が可能なように拡張したマシン(図1では多色スピンマシン12aと表記されている)により実現できる。ただ、ステップS2~S4の処理は、n個の多値変数に対してシリアルに行われてもよい。
【0056】
なお、ステップS3の処理が所定回数繰り返されるたび、前述のステップS1の処理が再び行われ、各多値変数の遷移先候補が再生成されるようにしてもよい。または、ステップS3の処理が所定回数繰り返されても、評価関数の最小値が更新されなかった場合、各多値変数の遷移先候補が再生成されるようにしてもよい。
【0057】
処理部12は、疑似焼き鈍し法を行う場合、ステップS2~S4の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときのn個の多値変数の値を、組合せ最適化問題の解の探索結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、遷移が受け入れられるたびに、たとえば、式(5)で表される評価関数の値を更新し、これまでの最小値とその最小値が得られたときのn個の多値変数の値を保持しておいてもよい。その場合、処理部12は、探索終了条件が満たされたときに記憶されている最小値に対応するn個の多値変数の値を、探索結果として出力してもよい。
【0058】
処理部12がレプリカ交換法を行う場合、処理部12は、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、図1に示したステップS2~S4の処理を行う。そして、処理部12は、ステップS2~S4の処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、複数のレプリカのうち2つをランダムに選択する。そして、処理部12は、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはn個の多値変数の値を交換する。処理部12は、たとえば、各レプリカにおいて遷移が受け入れられるたびに、式(5)で表される評価関数の値を更新し、これまでの最小値とその最小値が得られたときのn個の多値変数の値を保持する。そして、処理部12は、たとえば、所定の探索終了条件が満たされたときに、各レプリカにおいて記憶されている最小値のうち、全レプリカにおいて最小のものに対応するn個の多値変数の値を、探索結果として出力する。
【0059】
以上のように、第1の実施の形態のデータ処理装置10の処理部12は、n個の多値変数のそれぞれに対して、評価関数情報11aに基づいて、値の遷移可能範囲のうちの一部である遷移先候補を生成する。そして、処理部12は、n個の多値変数のそれぞれに対して、評価関数情報11aに基づいて、遷移先候補への遷移に伴う評価関数の値の変化量を算出し、変化量に基づいて遷移を受け入れる多値変数を決定する。また、処理部12は、決定した多値変数の値を遷移先候補の値へ遷移させる。
【0060】
これにより、n個の多値変数のそれぞれを多数の0または1の2値の状態変数に変換する場合よりも、評価関数の変化量の計算に用いるデータ移動の複雑化が避けられるため、並列計算が容易になる。このため、多値変数で表現された組合せ最適化問題を、並列試行により計算できる。多値変数で表現された組合せ最適化問題についても並列試行が可能となることで、このような組合せ最適化問題の計算効率が向上する。
【0061】
また、n個の要素をm個の割当先に割り当てる割当問題を、0または1の状態変数を用いて計算する場合、割当状態を表す状態変数の数がn×m個となり、状態変数間の重み係数の数は、n×mとなる。これに対して、割当状態を表す多値変数を用いることで、記憶しておく係数は、n個のフロー量と、m個の距離でよい。変化量を上記のように差分値を用いて更新する場合、変化量を保持しておくことになるが、保持に要するデータ量はn×mのオーダーとなるため、フロー量と距離とを合わせても、2値の状態変数を用いる場合よりもメモリ容量を小さくすることができる。
【0062】
(第2の実施の形態)
第2の実施の形態のデータ処理装置は、フロー行列及び距離行列を用いて表される割当問題の解を探索する。
【0063】
図3は、第2の実施の形態のデータ処理装置の一例を示す図である。
第2の実施の形態のデータ処理装置20は、記憶部21及び処理部22を有する。
記憶部21は、Fメモリ21a、Dメモリ21b,21cを有する。Fメモリ21a、Dメモリ21b,21cは、たとえば、RAMなどの揮発性半導体メモリであってもよいし、フラッシュメモリなどの不揮発性ストレージであってもよい。
【0064】
Fメモリ21aは、式(3)で表されるフロー行列を記憶する。
Dメモリ21bは、式(4)で表される距離行列であって、n個の多値変数の現在の値(現在の状態を表す)に基づいて配列された行列要素を含む行列を記憶する。
【0065】
Dメモリ21cは、式(4)で表される距離行列であって、n個の多値変数のそれぞれの遷移先候補の値(遷移先候補の状態を表す)に基づいて配列された行列要素を含む行列を記憶する。
【0066】
レプリカ交換を行う場合など、複数のレプリカを用いた解探索が行われる場合、上記のような2種類の距離行列は、レプリカごとに記憶される。フロー行列は、複数のレプリカの間で共有されていてもよい。
【0067】
処理部22は、δΔE算出回路22a、ΔE更新回路22b、ΔE保持回路22c、遷移受入判定回路22d、列入替回路22e、状態保持更新回路22f、制御回路22gを有する。
【0068】
δΔE算出回路22aは、φがφ’に遷移したときの、評価関数の値の変化量の差分値(前述の式(7)で表される)を、n並列に計算する。以下、変化量をΔE、差分値をδΔEと表記する。
【0069】
図3には、δΔE算出回路22aの一例の回路例が示されている。δΔE算出回路22aは、レジスタ22a1,22a2,22a3,22a4,22a5、加算器22a6,22a7,22a8、乗算器22a9を有する。
【0070】
レジスタ22a1は、Fメモリ21aから読み出されたフロー量(fij)を保持する。
レジスタ22a2は、Dメモリ21bから読み出された、識別番号=jの要素の割当先(φ)と、識別番号=iの要素の現在の割当先(φ)との間の距離を保持する。
【0071】
レジスタ22a3は、Dメモリ21bから読み出された、識別番号=jの要素の割当先候補(φ’)と、識別番号=iの要素の割当先(φ)との間の距離を保持する。
レジスタ22a4は、Dメモリ21cから読み出された、識別番号=jの要素の割当先(φ)と、識別番号=iの要素の割当先候補(φ’)との間の距離を保持する。
【0072】
レジスタ22a5は、Dメモリ21cから読み出された、識別番号=jの要素の割当先候補(φ’)と、識別番号=iの要素の割当先候補(φ’)との間の距離を保持する。
【0073】
加算器22a6は、レジスタ22a3に保持されている距離からレジスタ22a2に保持されている距離を引いた値を出力する。
加算器22a7は、レジスタ22a5に保持されている距離からレジスタ22a4に保持されている距離を引いた値を出力する。
【0074】
加算器22a8は、加算器22a7の出力値から加算器22a6の出力値を引いた値を出力する。
乗算器22a9は、レジスタ22a1に保持されたフロー量と加算器22a8との積を出力する。乗算器22a9の出力が、δΔEとなる。
【0075】
δΔEの算出は、上記のような回路構成により、n個の多値変数φ~φに関して並列に行うことができる。
ΔE更新回路22bは、i≠jの場合、δΔE算出回路22aが算出したδΔEを元のΔEに加えることでΔEを更新する。ΔE更新回路22bは、i=jの場合、ΔEの符号を反転することでΔEを更新する。ΔE更新回路22bは、ΔEの更新処理を、i=1~nのn個の多値変数φ~φに関して並列に行うことができる。
【0076】
ΔE保持回路22cは、n個の多値変数に関する上記のΔEを保持する。レプリカ交換を行う場合など、複数のレプリカを用いた解探索が行われる場合、ΔE保持回路22cは、レプリカごとに設けられる。
【0077】
遷移受入判定回路22dは、算出されたΔEに基づいて、遷移先候補への遷移を受け入れる多値変数を決定する。遷移受入判定回路22dは、たとえば、ΔEと、制御回路22gから供給される所定値との比較結果に基づいて、多値変数の値の遷移を受け入れるか否かを判定する。所定値は、たとえば、乱数と温度パラメータの値とに基づいて得られるノイズ値である。遷移受入判定回路22dは、たとえば、遷移に伴うΔEが、0以上1以下の一様乱数(rand)と温度パラメータ(T)とに基づいて得られるノイズ値の例である、log(rand)×Tよりも小さい場合、遷移を受け入れる。遷移受入判定回路22dは、遷移を受け入れた多値変数の識別番号を出力する。
【0078】
列入替回路22eは、遷移を受け入れる多値変数の識別番号により指定される、Dメモリ21bの距離行列の列と、Dメモリ21cの距離行列の列とを入れ替える。なお、δΔEの算出のための距離行列からの読み出しが列ごとに行われる場合、列入替回路22eは、列の代わりに行を入れ替えてもよい。
【0079】
このように距離行列の列または行を入れ替える理由は、以下の通りである。
δΔE算出回路22a、ΔE更新回路22b、ΔE保持回路22c、遷移受入判定回路22dのそれぞれは、図示を省略しているが、φ(i=1~n)に関して並列に処理を行うn個の回路ブロックを含む。n個の回路ブロックは、識別番号=iの順に配列されている。n個の回路ブロックを含むレジスタ22a1に、読み出されたn個のfijが並列に伝搬されやすいように、Fメモリ21aのfijを格納する部分が、iに対応した回路ブロックの近傍に配置される。同様の並列伝搬を、距離行列の行列要素の読み出しに用いるためには、φとφ間の距離を、第1識別番号(たとえば列番号)がiで、第2識別番号(たとえば行番号)がφとなるメモリに格納しておくことが望ましい。これが、距離行列において列または行が入れ替えられる理由である。
【0080】
なお、入れ替えの例については後述する(図6参照)。
状態保持更新回路22fは、n個の多値変数の値を保持するとともに、遷移受入判定回路22dが出力する識別番号に対応する多値変数の値を、遷移先候補の値へ遷移させる。また、状態保持更新回路22fは、遷移を受け入れる多値変数の識別番号により、δΔE算出回路22aに対してFメモリ21aから読み出す行列要素を指定する。
【0081】
さらに、状態保持更新回路22fは、遷移を受け入れる多値変数の遷移の前後の値により、δΔE算出回路22aに対してDメモリ21b,21cから読み出す行列要素を指定する。レプリカ交換を行う場合など、複数のレプリカを用いた解探索が行われる場合、状態保持更新回路22fは、レプリカごとにn個の多値変数の値を保持する。
【0082】
制御回路22gは、データ処理装置20の各部を制御する。また、制御回路22gは、各多値変数の遷移先候補の生成や再生成を行い、生成した遷移先候補に対応するようにDメモリ21cに記憶する距離行列の行列要素を並び替える。また、制御回路22gは、たとえば、ΔEとの比較に用いる所定値を生成して、遷移受入判定回路22dに供給する。また、制御回路22gは、後述のパイプライン処理の制御などを行う。
【0083】
図4は、現在の状態と遷移先候補の状態の一例を示す図である。図4では、8つの施設を8つの位置に割り当てる割当問題における、現在の状態と遷移先候補の状態の例が示されている。
【0084】
現在の状態は、8つの施設が現在配置されている位置(現在の施設位置)であり、多値変数であるφ~φで表されている。1~8は、施設番号である。たとえば、図4のように、施設番号=1の施設はφ=2の位置に配置されており、施設番号=6の施設はφ=4の位置に配置されている。
【0085】
遷移先候補の状態は、8つの施設の移動先候補の位置であり、多値変数であるφ’~φ’で表されている。たとえば、図4のように、施設番号=1の施設の移動先候補の位置はφ’=4であり、施設番号=6の施設の移動先候補の位置はφ’=2である。
【0086】
図4に示すような現在の状態において、φのφ’への遷移が受け入れられた場合、δΔEの算出のために読み出される行列要素の例を以下に示す。
図5は、Fメモリから読み出される行列要素の例を示す図である。
【0087】
φのφ’への遷移が受け入れられた場合、δΔEの算出のため、Fメモリ21aから、フロー行列のj=6行目の行列要素(fi6)が読み出される。
図6は、Dメモリから読み出される行列要素の例を示す図である。
【0088】
Dメモリ21b,21cに記憶されている距離行列の行列要素(距離)は、行列の列方向へは位置の識別番号(1~8)順に配列されており、行方向へは施設番号順に配列されている。Dメモリ21bに記憶されている距離行列では、行列要素がφ~φの現在の値に基づいて配列されている。Dメモリ21cに記憶されている距離行列では、行列要素がφ~φの遷移先候補φ’~φ’の値に基づいて配列されている。
【0089】
Dメモリ21b,21cに記憶されている距離行列では、行が、遷移を受け入れる多値変数の値または多値変数の遷移の値により指定され、その行に含まれる行列要素が読み出される。
【0090】
φのφ’への遷移が受け入れられた場合、δΔEの算出のため、Dメモリ21bから、施設番号=6の施設の現在の位置(φ)と、施設番号=i(i=1~8)の施設の現在の位置(φ)との間の距離が読み出される。図4に示した例ではφ=4であるため、Dメモリ21bから、距離行列のφ=4行目の行列要素が読み出される。さらに、Dメモリ21bから、施設番号=6の施設の移動先候補の位置(φ’)と、施設番号=iの施設の現在の位置(φ)との間の距離が読み出される。図4に示した例ではφ’=2であるため、Dメモリ21bから、距離行列のφ=2行目の行列要素が読み出される。
【0091】
一方、Dメモリ21cから、施設番号=6の施設の現在の位置(φ)と、施設番号=iの施設の移動先候補の位置(φ’)との間の距離が読み出される。図4に示した例ではφ=4であるため、Dメモリ21cから、距離行列のφ=4行目の行列要素が読み出される。さらに、Dメモリ21cから、施設番号=6の施設の移動先候補の位置(φ’)と、施設番号=iの施設の移動先候補の位置(φ’)との間の距離が読み出される。図4に示した例ではφ’=2であるため、Dメモリ21cから、距離行列のφ=2行目の行列要素が読み出される。
【0092】
Dメモリ21b,21cからの、距離行列のφ=4行目の行列要素の読み出しは、第1読み出しタイミングで並列に行うことができる。Dメモリ21b,21cからの、距離行列のφ=2行目の行列要素の読み出しは、第2読み出しタイミングで並列に行うことができる。
【0093】
式(7)に示した差分値の計算後、Dメモリ21b,21cに記憶されている各距離行列の6列目の行列要素が、列入替回路22eにより入れ替えられる。これにより、Dメモリ21b,21cにおいて、距離行列が、更新された状態を反映したものとなる。
【0094】
次に、第2の実施の形態のデータ処理装置20の動作例を説明する。
図7は、第2の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。図7の動作例では、4つのレプリカを用いたパイプライン処理の例が示されている。処理は、試行フェーズと更新フェーズを含む。
【0095】
試行フェーズは、遷移受入判定回路22dがΔE保持回路22cからΔEを取得する処理と、遷移受入判定回路22dが遷移の受入判定を行う処理を含む。
更新フェーズは、Fメモリ21aからフロー行列の行列要素を読み出す処理と、Dメモリ21b,21cから距離行列の行列要素を読み出す処理、及びDメモリ21b,21cの距離行列の列を入れ替える処理を含む。Dメモリ21b,21cは、レプリカごとに設けられる。このため、図7では、レプリカ0~レプリカ3のDメモリ21b,21cが、それぞれ“D0メモリ”、“D0メモリ”、“D1メモリ”、“D2メモリ”、“D3メモリ”と表記されている。また、更新フェーズは、δΔE算出回路22aが、フロー行列の行列要素または距離行列の行列要素(図7ではF/Dデータと表記されている)を保持する処理、δΔEを算出する処理、ΔEを更新する処理を含む。
【0096】
タイミングt1からタイミングt4の間に、レプリカ0からレプリカ1,2,3の順に、ΔEを取得する処理が行われる。タイミングt2からタイミングt5の間に、レプリカ0から上記の順に、受入判定が行われる。各レプリカにおいて、遷移が受け入れられた多値変数の識別番号(“Idk”と表記されている)が遷移受入判定回路22dから出力される。
【0097】
タイミングt3からタイミングt9の間に、Fメモリ21aからフロー行列の行列要素を読み出す処理と、Dメモリ21b,21cから距離行列の行列要素を読み出す処理が行われる。距離行列の行列要素の読み出しは、各レプリカに対して2サイクルで行われる。たとえば、図6に示したように、Dメモリ21b,21cから、並列に2行分の行列要素が2回読み出されるためである。
【0098】
タイミングt4~t10では、δΔE算出回路22aのレジスタ22a1~22a5に、Fメモリ21aとDメモリ21b,21cから読み出された行列要素が保持される。タイミングt4~t7の間は、レプリカ0におけるδΔEの算出に用いられる行列要素が保持され、タイミングt5~t7の間で、δΔEの演算が行われ、タイミングt7~t8の間で演算結果が確定する。タイミングt7以降、レプリカ1、2、3の順に、レプリカ0に関する上記の処理と同様の処理が行われる。また、タイミングt8以降、各レプリカについてのδΔEの演算結果が確定するたびに、各レプリカのΔEの更新が行われる。
【0099】
タイミングt11以降、図6に示したようなDメモリ21b,21cに記憶されている距離行列において、n個の行列要素を含む列の入替が、各レプリカについて並列に行われる。各列に含まれるn個の行列要素が、2列の間で1つずつ入れ替えられるため、nサイクルで入れ替えが完了する。
【0100】
図8は、第2の実施の形態のデータ処理装置の処理手順の一例を示すフローチャートである。
まず、制御回路22gの制御のもと、データ処理装置20の各部の初期化(ステップS10)や、データ設定や動作設定(ステップS11)が行われる。
【0101】
ステップS10,S11の処理では、Fメモリ21aへのフロー行列の書き込み、Dメモリ21bへのn個の多値変数の初期値に基づいて配列された行列要素を含む距離行列の書き込みが行われる。さらに、各多値変数に対して、たとえば、図4に示したように遷移先候補が生成される。そして、遷移先候補の値に基づいて配列された行列要素を含む距離行列が、Dメモリ21cへ書き込まれる。
【0102】
さらに、n個の多値変数の初期値と、評価関数情報(フロー行列、距離行列、バイアス係数など)に基づいて、式(5)で表される評価関数の初期値が算出され、保持される。また、各多値変数に対して、式(6)で表されるΔEの初期値が算出され、ΔE保持回路22cに保持される。また、レプリカ交換法が行われる場合、各レプリカに温度パラメータ(T)の初期値が設定される。温度パラメータの値は、レプリカごとに異なる値が設定される。その他、解探索の終了条件などが設定される。
【0103】
制御回路22gは、遷移先候補を変更するか否かを判定する(ステップS12)。たとえば、後述のステップS16の受入れ判定処理が所定回数繰り返されるたび、制御回路22gは、遷移先候補を変更すると判定する。制御回路22gは、ステップS16の処理が所定回数繰り返されても、評価関数の最小値が更新されなかった場合、遷移先候補を変更すると判定してもよい。遷移先候補を変更すると判定された場合、ステップS13の処理が行われ、遷移先候補を変更すると判定されなかった場合、ステップS15の処理が行われる。
【0104】
ステップS13の処理では、制御回路22gは、遷移先候補を変更し、Dメモリ21cへ記憶されている距離行列を、変更した遷移先候補の値に基づいたものに書き換える。さらに、制御回路22gは、現在の多値変数の値と、変更した遷移先候補の値に基づいてΔEを計算し、ΔE保持回路22cに保持する(ステップS14)。
【0105】
ステップS15の処理では、遷移受入判定回路22dは、ΔE保持回路22cからn個のΔEを取得する。そして、遷移受入判定回路22dは、n個のΔEに基づいて、n個の多値変数のそれぞれに対して、遷移先候補への遷移を受け入れるか否かの判定を行う(ステップS16)。遷移受入判定回路22dは、遷移先候補への遷移を受け入れる多値変数がある場合、制約条件を満たすように、遷移させる多値変数を選択する(ステップS17)。
【0106】
制御回路22gは、遷移を受け入れた多値変数(かつステップS17の処理で選択されたもの)があるか否かを判定する(ステップS18)。遷移を受け入れた多値変数があると判定された場合、ステップS19の処理が行われる。遷移を受け入れた多値変数がないと判定された場合、ステップS23の処理が行われる。
【0107】
ステップS19の処理では、Fメモリ21aからフロー行列の行列要素を読み出す処理と、Dメモリ21b,21cから距離行列の行列要素を読み出す処理が行われる。
δΔE算出回路22aは、読み出された各行列要素を用いて、δΔEを算出する(ステップS20)。そして、ΔE更新回路22bは、算出されたδΔEを用いて、n個の多値変数のΔEを更新する(ステップS21)。
【0108】
列入替回路22eは、受け入れられた多値変数の値の遷移に応じて、たとえば、図6に示したように、Dメモリ21b,21cに記憶された距離行列の列を入れ替える列入替処理を行う(ステップS22)。
【0109】
制御回路22gは、探索を終了させるか否かを判定する(ステップS23)。たとえば、探索時間がタイムアウト制限に達した場合、探索が終了したと判定され、探索が終了する。探索を終了しないと判定された場合、ステップS12からの処理が繰り返される。
【0110】
探索を終了すると判定された場合、制御回路22gは、探索結果を出力し(ステップS24)処理を終える。
制御回路22gは、疑似焼き鈍し法を行う場合、ステップS12~S23の処理が繰り返される間、所定の温度パラメータ変更スケジュールにしたがって、前述の温度パラメータ(T)の値を小さくしていく。そして、制御回路22gは、たとえば、所定の探索終了条件が満たされたときのn個の多値変数の値を、割当問題の解の探索結果として出力する(たとえば、図示しない表示装置に表示する)。なお、制御回路22gは、遷移が受け入れられるたびに、たとえば、式(5)で表される評価関数の値を更新し、これまでの最小値とその最小値が得られたときのn個の多値変数の値を保持しておいてもよい。その場合、制御回路22gは、探索終了条件が満たされたときに記憶されている最小値に対応するn個の多値変数の値を、探索結果として出力してもよい。
【0111】
制御回路22gがレプリカ交換法を行う場合、制御回路22gは、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、ステップS12~S23の処理を行う。そして、制御回路22gは、ステップS12~S23の処理が所定回数繰り返されるごとに、レプリカ交換を行う。たとえば、制御回路22gは、複数のレプリカのうち2つをランダムに選択して、選択された2つのレプリカの間で、レプリカ間の評価関数の値の差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値またはn個の多値変数の値を交換する。制御回路22gは、たとえば、各レプリカにおいて遷移が受け入れられるたびに、式(5)で表される評価関数の値を更新し、これまでの最小値とその最小値が得られたときのn個の多値変数の値を保持する。そして、制御回路22gは、たとえば、所定の探索終了条件が満たされたときに、各レプリカにおいて記憶されている最小値のうち、全レプリカにおいて最小のものに対応するn個の多値変数の値を、探索結果として出力する。
【0112】
以上のようなデータ処理装置20によれば、n個の多値変数のそれぞれを多数の0または1の2値の状態変数に変換する場合よりも、評価関数の変化量の計算に用いるデータ移動の複雑化が避けられるため、並列計算が容易になる。このため、多値変数で表現された組合せ最適化問題を、並列試行により計算できる。多値変数で表現された組合せ最適化問題についても並列試行が可能となることで、このような組合せ最適化問題の計算効率が向上する。
【0113】
また、データ処理装置20は、n個の多値変数のそれぞれの遷移に伴うΔEを保持し、算出したδΔEを用いてΔEを更新する。これにより、ΔEそのものを計算しなおさなくてよくなる。
【0114】
また、データ処理装置20は、フロー行列を記憶するFメモリ21aを有する。さらにデータ処理装置20は、n個の多値変数の現在の値に基づいて配列された行列要素を含む距離行列を記憶するDメモリ21bと、n個の多値変数のそれぞれの遷移先候補の値に基づいて配列された行列要素を含む距離行列を記憶するDメモリ21cを有する。そして、δΔEの計算の際、Fメモリ21aから、遷移を受け入れる多値変数の識別番号により指定されたフロー行列の行列要素が読み出される。また、Dメモリ21b,21cから、その多値変数の遷移の前後の値により指定された距離行列の行列要素が読み出される。これにより、n個の多値変数に関して、並列に効率よくδΔEを算出できる。
【0115】
(第3の実施の形態)
第3の実施の形態のデータ処理装置は、第2の実施の形態のデータ処理装置20に対して、回路の共通化を図ったものである。
【0116】
図9は、第3の実施の形態のデータ処理装置の一例を示す図である。図9において、図3に示した要素については、同一符号が付されている。なお、図9において、図3に示した列入替回路22eと、状態保持更新回路22fについては、図示が省略されている。
【0117】
第3の実施の形態のデータ処理装置30の記憶部31は、Fメモリ21a、Dメモリ21b,21cのほか、Dメモリ31aとメモリ制御回路31bを有する。
Dメモリ31aは、各レプリカで共通の距離行列を記憶する。Dメモリ31aが記憶する距離行列の行列要素は、行方向も列方向も、位置の識別番号(1~8)順に配列されたものである。Dメモリ21b,21cに記憶されている距離行列の列の入替を行う場合、Dメモリ31aに記憶されている距離行列において、入替を行う2列に対応する2列が読み出される。そして、一方がDメモリ21bの入替対象の列の位置に書き込まれ、他方がDメモリ21cの入替対象の列に書き込まれることで、入替が行われる。
【0118】
前述の図3のデータ処理装置20においても、列の入替に、このようなDメモリ31aを用いてもよい。
メモリ制御回路31bは、制御回路33の制御のもと、Fメモリ21a、Dメモリ21b,21c,31aに対する書き込み及び読み出し動作を制御する。メモリ制御回路31bは、δΔEの算出のため、式(7)に含まれる前述の5つの行列要素を、共通の読み出し経路を用いて、互いに異なる読み出しタイミングでFメモリ21a、Dメモリ21b,21cから読み出させる。
【0119】
δΔE算出回路32は、レジスタ32a,32b,32d、演算回路32cを有する。
レジスタ32aは、Fメモリ21a、Dメモリ21b,21cから読み出された行列要素(フロー量や距離)を保持する。レジスタ32bは、Dメモリ21b,21cから読み出された行列要素を保持する。
【0120】
演算回路32cには、レジスタ32a,32bに保持された前述の5つの行列要素が順に入力され、それらの行列要素とレジスタ32dに保持された途中演算結果に基づいて、式(7)の途中演算結果またはδΔEを出力する。
【0121】
たとえば、演算回路32cは、レジスタ32a,32bに保持された、φとφの間の距離、φ’とφの間の距離、φ’とφ’の間の距離、φ’とφの間の距離を順に加算または減算することで、式(7)の右辺の括弧内の演算を行う。この演算の結果は途中演算結果としてレジスタ32dに保持される。そして、演算回路32cは、レジスタ32aに保持されたフロー量(fij)と、レジスタ32dに保持された途中演算結果との積を出力することで、δΔEが得られる。
【0122】
レジスタ32dは、演算回路32cが出力する途中演算結果、または演算結果であるδΔEを保持する。
制御回路33は、図3に示したデータ処理装置20の処理部22の制御回路22gと同様の機能を有する。さらに、制御回路33は、δΔE算出回路32に上記のようにδΔEを算出させるために、メモリ制御回路31bにデータ読み出しタイミングなどを指示する。
【0123】
なお、データ処理装置30は、各多値変数の現在の値が、元の値であるか、生成された遷移先候補の値であるかを記憶するようにしてもよい。その場合、Dメモリ21b,21cに記憶されている距離行列の間で列の入替をしなくても、δΔEの算出に用いる距離行列の行列要素を適切に読み出すことができる。ただし、制御回路33は、遷移先候補を再生成する場合、Dメモリ21bに記憶する距離行列の行列要素を、現在の多値変数の値に応じて並べ替える。
【0124】
図10は、第3の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。図10の動作例では、図7に示したタイミングチャートと同様に、4つのレプリカを用いたパイプライン処理の例が示されている。
【0125】
タイミングt20からタイミングt23の間に、レプリカ0からレプリカ1,2,3の順に、ΔEを取得する処理が行われる。タイミングt21からタイミングt24の間に、レプリカ0から上記の順に、受入判定が行われる。各レプリカにおいて、遷移が受け入れられた多値変数の識別番号が遷移受入判定回路22dから出力される。
【0126】
タイミングt22からタイミングt25の間に、Fメモリ21aからフロー行列の行列要素を読み出す処理と、Dメモリ21b,21cから距離行列の行列要素を読み出す処理が行われる。第3の実施の形態のデータ処理装置30では、距離行列の行列要素の読み出しは、各レプリカに対して4サイクルで行われる。
【0127】
タイミングt23~t29では、δΔE算出回路32のレジスタ32a,32bに、Fメモリ21aとDメモリ21b,21cから読み出された行列要素が保持される。タイミングt23~t26の間は、レプリカ0におけるδΔEの算出に用いられる行列要素が保持され、タイミングt24~t26の間で、δΔEの演算が行われ、タイミングt26~t27の間で演算結果が確定する。タイミングt26以降、レプリカ1、2、3の順に、レプリカ0に関する上記の処理と同様の処理が行われる。また、タイミングt27以降、各レプリカについてのδΔEの演算結果が確定するたびに、各レプリカのΔEの更新が行われる。
【0128】
タイミングt30以降、Dメモリ31aから読み出される距離行列の行列要素を用いて、Dメモリ21b,21cに記憶されている距離行列において、n個の行列要素を含む列を入れ替えるライト処理が行われる。ライト処理は、各レプリカについて並列に行われる。各列に含まれるn個の行列要素が、2列の間で1つずつ入れ替えられるため、nサイクルで入れ替えが完了する。なお、前述のように、データ処理装置30が各多値変数の現在の値を、元の値であるか、生成された遷移先候補の値であるかを記憶する場合、Dメモリ21b,21cに記憶されている距離行列の間で列の入替をしなくてもよい。
【0129】
以上のような第3の実施の形態のデータ処理装置30によれば、δΔE算出回路32は、5つの行列要素を共通の演算回路32cで処理する。これにより、図3に示したδΔE算出回路22aよりも、回路規模を縮小できる。
【0130】
(第4の実施の形態)
第2及び第3の実施の形態では、各多値変数の値の遷移先候補を1つとして説明したが、各多値変数の値の遷移先候補は、複数あってもよい。
【0131】
図11は、複数の遷移先候補現在の状態と遷移先候補の状態の一例を示す図である。図11では、8つの施設を8つの位置に割り当てる割当問題における、現在の状態と、2つの遷移先候補の状態(移動先候補の位置)の例が示されている。図11の例では、1つの位置に対する複数の施設の配置が許容されている。
【0132】
第1遷移先候補の状態は、多値変数であるφ’~φ’で表されている。たとえば、図11のように、施設番号=1の施設の第1移動先候補の位置はφ’=4であり、第2移動先候補の位置はφ”=6である。施設番号=6の施設の第1移動先候補の位置はφ’=6であり、第2移動先候補の位置はφ”=1である。
【0133】
図11に示すような現在の状態において、φのφ”への遷移が受け入れられた場合、δΔEの算出のため読み出される行列要素の例を以下に示す。
Fメモリから読み出される行列要素については、図5に示したφのφ’への遷移が受け入れられた場合と同様に、Fメモリ21aから、フロー行列のj=6行目の行列要素(fi6)が読み出される。
【0134】
図12は、Dメモリから読み出される行列要素の例を示す図である。
第1遷移先候補状態と第2遷移先候補状態がある場合、現在状態に対応したDメモリ21bと、第1遷移先候補状態に対応したDメモリ21cのほかに、第2遷移先候補状態に対応したDメモリ21dが用いられる。
【0135】
Dメモリ21b,21c,21dに記憶されている距離行列の行列要素(距離)は、行列の列方向へは位置の識別番号(1~8)順に配列されており、行方向へは施設番号順に配列されている。Dメモリ21bに記憶されている距離行列では、行列要素がφ~φの現在の値に基づいて配列されている。Dメモリ21cに記憶されている距離行列では、行列要素がφ~φの第1遷移先候補φ’~φ’の値に基づいて配列されている。Dメモリ21dに記憶されている距離行列では、行列要素がφ~φの第2遷移先候補φ”~φ”の値に基づいて配列されている。
【0136】
多値変数φがφ”に遷移したときの、識別番号=iの多値変数の値の第1遷移先候補への遷移に伴う変化量の差分値は、j≠iの場合、以下の式(13)で表される。
【0137】
【数13】
【0138】
なお、j=iの場合、識別番号=iの多値変数の値の第1遷移先候補への遷移に伴う変化量の差分値は、以下の式(14)で表される。
【0139】
【数14】
【0140】
また、多値変数φがφ”に遷移したときの、識別番号=iの多値変数の値の第2遷移先候補への遷移に伴う変化量の差分値は、j≠iの場合、以下の式(15)で表される。
【0141】
【数15】
【0142】
なお、j=iの場合、識別番号=iの多値変数の値の第2遷移先候補への遷移に伴う変化量の差分値は、以下の式(16)で表される。
【0143】
【数16】
【0144】
φのφ”への遷移が受け入れられた場合(j=6の場合)、式(13)のδΔEの算出のため、Dメモリ21bから、施設番号=6の施設の現在の位置(φ)と、施設番号=i(i=1~8)の施設の現在の位置(φ)との間の距離が読み出される。図11に示した例ではφ=5であるため、Dメモリ21bから、距離行列のφ=5行目の行列要素が読み出される。さらに、Dメモリ21bから、施設番号=6の施設の第2移動先候補の位置(φ”)と、施設番号=iの施設の現在の位置(φ)との間の距離が読み出される。図11に示した例ではφ”=1であるため、Dメモリ21bから、距離行列のφ=1行目の行列要素が読み出される。
【0145】
一方、Dメモリ21cから、施設番号=6の施設の現在の位置(φ)と、施設番号=iの施設の第1移動先候補の位置(φ’)との間の距離が読み出される。図11に示した例ではφ=5であるため、Dメモリ21cから、距離行列のφ=5行目の行列要素が読み出される。さらに、Dメモリ21cから、施設番号=6の施設の第1移動先候補の位置(φ’)と、施設番号=iの施設の第1移動先候補の位置(φ’)との間の距離が読み出される。図11に示した例ではφ’=1であるため、Dメモリ21cから、距離行列のφ=1行目の行列要素が読み出される。
【0146】
式(15)のδΔEの算出のため、Dメモリ21bから読み出される距離は、式(13)のδΔEを算出する場合と同じである。一方、式(15)のδΔEの算出のため、Dメモリ21dから、施設番号=6の施設の現在の位置(φ)と、施設番号=iの施設の第2移動先候補の位置(φ”)との間の距離が読み出される。図11に示した例ではφ=5であるため、Dメモリ21dから、距離行列のφ=5行目の行列要素が読み出される。さらに、Dメモリ21dから、施設番号=6の施設の第2移動先候補の位置(φ”)と、施設番号=iの施設の第2移動先候補の位置(φ”)との間の距離が読み出される。図11に示した例ではφ”=1であるため、Dメモリ21dから、距離行列のφ=1行目の行列要素が読み出される。
【0147】
第4の実施の形態のデータ処理装置の構成については図示を省略するが、図3図9に示した構成を適宜変更することで、複数の遷移先候補を用いる構成を実現できる。たとえば、図3図9に示した構成に対して、図12に示したDメモリ21dが追加される。また、式(13)~式(16)のδΔEは、図3図9に示したδΔE算出回路22a,32を変更することで算出できる。さらに、ΔE保持回路22cは、φがφ’に遷移する場合のΔE(φ→φ’)と、φがφ”に遷移する場合のΔE(φ→φ’)とを保持する。ΔE更新回路22bは、式(13)、式(14)に基づいて算出されるδΔEを用いてΔE(φ→φ’)を更新し、式(15)、式(16)に基づいて算出されるδΔEを用いてΔE(φ→φ”)を更新する。遷移受入判定回路22dは、ΔE(φ→φ’)とΔE(φ→φ”)に基づいて、第1遷移先候補または第2遷移先候補への遷移を受け入れる多値変数を決定する。
【0148】
なお、第1遷移先候補と第2遷移先候補への遷移の受け入れの可否を、同時に判定しなくてもよい。Dメモリ21cを用いて第1遷移先候補への遷移の受け入れの可否の判定を行っている場合には、Dメモリ21dを用いた第2遷移先候補への遷移の受け入れの可否の判定を行わなくてもよい。その逆も同様である。遷移先候補を、第1遷移先候補と第2遷移先候補の間で適宜切り替えるようにしてもよい。
【0149】
上記のように、第4の実施の形態のデータ処理装置は、各遷移先候補の値に基づいて配列された行列要素を含む距離行列を記憶するDメモリ21c,21dをもつ。これにより、遷移候補先を再生成することによる処理のオーバーヘッドを削減できる。また、たとえば、Dメモリ21cを用いて解探索を行っている間に、Dメモリ21dの距離行列を、新たな遷移先候補に対応した距離行列に書き換えることも可能となる。
【0150】
(第5の実施の形態)
図13は、第5の実施の形態のデータ処理装置の一例を示す図である。図13において、図9に示した要素と同じ要素については同一符号が付されている。
【0151】
式(7)のδΔEは、以下の式(17)のように変形できる。
【0152】
【数17】
【0153】
式(17)の右辺は、φ’とφ’との間の距離と、φ’とφとの間の距離との差と、φとφ’との間の距離と、φとφとの間の距離との差を含む。
第5の実施の形態のデータ処理装置40において記憶部41は、上記のような2つの差により表現される行列要素を含む行列を記憶するΔDメモリ41aを有する。差は、行または列の番号を指定することで読み出しが可能なように行列状に配列されている。以下、上記の差による行列を、差分距離行列という。
【0154】
図14は、ΔDメモリから読み出される行列要素の一例を示す図である。
ΔDメモリ41aに記憶される差分距離行列のφ行の行列要素は、φとφ’との間の距離と、φとφとの間の距離との差である。差分行列のφ’行の行列要素は、φ’とφ’との間の距離と、φ’とφとの間の距離との差である。
【0155】
φのφ’への遷移が受け入れられた場合、δΔEの算出のため、ΔDメモリ41aから、差分距離行列のφ行の行列要素が読み出される。図14に示した例ではφ=5であるため、差分距離行列のφ=5行目の行列要素が読み出される。さらに、ΔDメモリ41aから、差分距離行列のφ’行の行列要素が読み出される。図14に示した例ではφ’=6であるため、差分距離行列のφ’=6行目の行列要素が読み出される。
【0156】
このような差分距離行列は、Dメモリ31aに記憶されている距離行列を用いた差分計算(Δd計算)により生成される。差分計算は、たとえば、制御回路33により行われる。複数のレプリカを用いた解探索が行われる場合、差分距離行列は、レプリカごとに生成される。
【0157】
なお、データ処理装置40は、各多値変数の現在の値が、元の値であるか、生成された遷移先候補の値であるかを記憶するようにしてもよい。その場合、遷移先候補が一定の間は、Dメモリ31aに記憶されている距離行列内で列の入替をしなくても、Δd計算に用いる行列要素を適切に読み出すことができる。ただし、制御回路33は、遷移先候補を再生成する場合、距離行列の行列要素を、現在の多値変数の値と遷移先候補の値に応じて並べ替える。その上で、制御回路33は、Δd計算を行い、ΔDメモリ41aに記憶されている差分距離行列を初期化する。
【0158】
データ処理装置40のδΔE算出回路42は、レジスタ42a,42bを有する。レジスタ42aは、Fメモリ21a、ΔDメモリ41aから読み出された行列要素(フロー量や距離の差分値(Δd))を保持する。レジスタ42bは、ΔDメモリ41aから読み出された行列要素を保持する。
【0159】
演算回路32cは、レジスタ42a,42b,32dに保持された行列要素または途中演算結果に基づいて、式(17)の途中演算結果またはδΔEを出力する。
たとえば、演算回路32cは、レジスタ42a,42bに保持された、2つのΔdの差を減算することで、式(17)の右辺の括弧内の演算を行う。この演算の結果は途中演算結果としてレジスタ32dに保持される。そして、演算回路32cは、レジスタ32aに保持されたフロー量(fij)と、レジスタ32dに保持された途中演算結果との積を出力することで、δΔEが得られる。
【0160】
データ処理装置40のその他の要素については、図9に示した要素と同じである。
図15は、第5の実施の形態のデータ処理装置の動作例を示すタイミングチャートである。図15の動作例では、図7に示したタイミングチャートと同様に、4つのレプリカを用いたパイプライン処理の例が示されている。
【0161】
タイミングt40からタイミングt43の間に、レプリカ0からレプリカ1,2,3の順に、ΔEを取得する処理が行われる。タイミングt41からタイミングt44の間に、レプリカ0から上記の順に、受入判定が行われる。各レプリカにおいて、遷移が受け入れられた多値変数の識別番号が遷移受入判定回路22dから出力される。
【0162】
タイミングt42からタイミングt48の間に、Fメモリ21aからフロー行列の行列要素を読み出す処理と、ΔDメモリ41aから差分距離行列の行列要素を読み出す処理が行われる。第5の実施の形態のデータ処理装置40では、差分距離行列の行列要素の読み出しは、各レプリカに対して2サイクルで行われる。
【0163】
タイミングt43~t49では、δΔE算出回路42のレジスタ42a,42bに、Fメモリ21aとΔDメモリ41aから読み出された行列要素が保持される。タイミングt43~t46の間は、レプリカ0におけるδΔEの算出に用いられる行列要素が保持され、タイミングt44~t46の間で、δΔEの演算が行われ、タイミングt46~t47の間で演算結果が確定する。タイミングt46以降、レプリカ1、2、3の順に、レプリカ0に関する上記の処理と同様の処理が行われる。また、タイミングt47以降、各レプリカについてのδΔEの演算結果が確定するたびに、各レプリカのΔEの更新が行われる。
【0164】
制御回路33は、遷移先候補を再生成する場合、タイミングt50以降、Dメモリ31aの距離行列の行列要素を、現在の多値変数の値と遷移先候補の値に応じて並べ替える。その上で、制御回路33は、Δd計算を行い、ΔDメモリ41aに記憶されている差分距離行列を初期化するライト処理を行う。ライト処理は、各レプリカについて並列に行われる。
【0165】
以上のような第5の実施の形態のデータ処理装置40によれば、δΔEの算出に用いる距離の差を予めΔDメモリ41aに記憶しておくことで、δΔE算出回路42の回路規模を縮小できる。また、δΔEの算出にかかる時間を短縮できる。
【0166】
なお、上記の各実施の形態の処理内容(たとえば、図1図8など)は、データ処理装置にプログラムを実行させることでソフトウェアにて実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)及びHDDが含まれる。光ディスクには、CD(Compact Disc)、CD-R(Recordable)/RW(Rewritable)、DVD(Digital Versatile Disc)及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体にプログラムをコピーして実行してもよい。
【0167】
図16は、データ処理装置の一例であるコンピュータのハードウェア例を示す図である。
コンピュータ50は、CPU51、RAM52、HDD53、GPU54、入力インタフェース55、媒体リーダ56及び通信インタフェース57を有する。上記ユニットは、バスに接続されている。
【0168】
CPU51は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU51は、HDD53に記憶されたプログラムやデータの少なくとも一部をRAM52にロードし、プログラムを実行する。なお、CPU51は、たとえば、複数のレプリカの処理を並列に実行するために、複数のプロセッサコアを備えてもよい。また、コンピュータ50は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0169】
RAM52は、CPU51が実行するプログラムやCPU51が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、コンピュータ50は、RAM52以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0170】
HDD53は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、前述のような組合せ最適化問題の解を探索する処理をコンピュータ50に実行させるプログラムが含まれる。なお、コンピュータ50は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0171】
GPU54は、CPU51からの命令にしたがって、コンピュータ50に接続されたディスプレイ54aに画像(たとえば、組合せ最適化問題の計算結果などを表す画像)を出力する。ディスプレイ54aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0172】
入力インタフェース55は、コンピュータ50に接続された入力デバイス55aから入力信号を取得し、CPU51に出力する。入力デバイス55aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、コンピュータ50に、複数の種類の入力デバイスが接続されていてもよい。
【0173】
媒体リーダ56は、記録媒体56aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体56aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、FDやHDDが含まれる。光ディスクには、CDやDVDが含まれる。
【0174】
媒体リーダ56は、たとえば、記録媒体56aから読み取ったプログラムやデータを、RAM52やHDD53などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU51によって実行される。なお、記録媒体56aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体56aやHDD53を、コンピュータ読み取り可能な記録媒体ということがある。
【0175】
通信インタフェース57は、ネットワーク57aに接続され、ネットワーク57aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース57は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0176】
(変形例)
前述の第2の実施の形態のデータ処理装置20などでは、現在の多値変数の値や遷移先候補の値に応じて距離行列の列または行が入れ替えられる。このような入れ替えは、第1識別番号=iの要素を、第2識別番号=φの割当先に割り当てる問題の解を探索する際に適用できる。
【0177】
しかし、第1識別番号=iの割当先を第2識別番号=ψの要素に割り当てる問題として、組合せ最適化問題が定式化されている場合、フロー行列と距離行列の役割が上記の場合と逆になる。その場合、現在の多値変数の値や遷移先候補の値に応じてフロー行列の列または行が入れ替えられる。
【0178】
フロー行列の列または行の入れ替えが行われる場合、たとえば、式(11)、式(12)の代わりに、以下の式(18)、式(19)に基づいた処理が行われる。
【0179】
【数18】
【0180】
【数19】
【0181】
式(19)において、k=ψまたはk=ψ’である。
式(18)、式(19)に基づいた処理を、ψ(i=1~n)に関して並列に行うために、式(19)の差分値Δfik(あるいは識別番号=ψ,ψ’の要素と識別番号=kの要素との間のフロー量)を第1識別番号がi、第2識別番号がkのメモリに格納すればよい。
【0182】
第2の実施の形態以外の実施の形態に関しても、フロー行列と距離行列の役割を入れ替え、φの代わりにψを用いれば、フロー行列の列または行の入れ替えに対応したものに変換可能である。
【0183】
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0184】
10 データ処理装置
11 記憶部
11a 評価関数情報
12 処理部
12a 多色スピンマシン
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16