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

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

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

特開2022-161128プログラム、データ処理方法及びデータ処理装置
<>
  • 特開-プログラム、データ処理方法及びデータ処理装置 図1
  • 特開-プログラム、データ処理方法及びデータ処理装置 図2
  • 特開-プログラム、データ処理方法及びデータ処理装置 図3
  • 特開-プログラム、データ処理方法及びデータ処理装置 図4
  • 特開-プログラム、データ処理方法及びデータ処理装置 図5
  • 特開-プログラム、データ処理方法及びデータ処理装置 図6
  • 特開-プログラム、データ処理方法及びデータ処理装置 図7
  • 特開-プログラム、データ処理方法及びデータ処理装置 図8
  • 特開-プログラム、データ処理方法及びデータ処理装置 図9
  • 特開-プログラム、データ処理方法及びデータ処理装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022161128
(43)【公開日】2022-10-21
(54)【発明の名称】プログラム、データ処理方法及びデータ処理装置
(51)【国際特許分類】
   G06F 17/10 20060101AFI20221014BHJP
【FI】
G06F17/10 Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021065710
(22)【出願日】2021-04-08
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】特許業務法人扶桑国際特許事務所
(72)【発明者】
【氏名】佐沢 真一
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB91
(57)【要約】
【課題】組合せ最適化問題の計算時間を短縮する。
【解決手段】記憶部11は、乱数値に基づく対数計算により得られるノイズ関数の上下限値を、乱数値の範囲を分割した各区間について記憶する。処理部12は、記憶部11から、イジング型の評価関数に含まれる各状態変数について生成した乱数値が属する区間の上下限値を各状態変数について取得し、1つの状態変数の値が変化した場合の評価関数の値の変化量と0のうちの大きい方の値と温度パラメータとの積と、その状態変数について取得した下限値との和である下限評価値と、その積とその状態変数について取得した上限値との和である上限評価値とを各状態変数について計算し、上下限評価値に基づいて各状態変数の間の評価値の大小関係を判定することで評価値が最小の状態変数を決定し、決定した状態変数の値を変える、処理を繰り返すことで、評価関数の値が極小または極大になる複数の状態変数の値を探索する。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値を、乱数値を用いて探索する処理をコンピュータに実行させるプログラムであって、
前記乱数値の範囲を分割した複数の区間のそれぞれについて、前記乱数値に基づく対数計算により得られるノイズ関数の下限値と上限値を記憶した記憶部から、前記評価関数に含まれる前記複数の状態変数のそれぞれについて生成した前記乱数値が属する区間の前記下限値と前記上限値を、前記複数の状態変数のそれぞれについて取得し、
前記複数の状態変数のうちの1つの状態変数の値が変化した場合の前記評価関数の値の変化量と0のうちの大きい方の値と温度パラメータとの積と、前記状態変数について取得した前記下限値との和である下限評価値と、前記積と前記状態変数について取得した前記上限値との和である上限評価値とを、前記複数の状態変数のそれぞれについて計算し、
前記下限評価値と前記上限評価値に基づいて、前記複数の状態変数のそれぞれの間の、前記積と前記ノイズ関数の和による評価値の大小関係を判定することで、前記評価値が最小となる更新対象の状態変数を決定し、
決定した前記更新対象の状態変数の値を変える、
処理を繰り返すことで、前記評価関数の値が極小または極大になる前記複数の状態変数の値を探索する、
処理をコンピュータに実行させるプログラム。
【請求項2】
前記複数の状態変数のうちの第1の状態変数について計算した前記下限評価値が、前記複数の状態変数のうちの第2の状態変数について計算した前記上限評価値よりも大きい場合、前記第2の状態変数の前記評価値は、前記第1の状態変数の前記評価値よりも小さいと判定し、
前記第1の状態変数について計算した前記上限評価値が、前記第2の状態変数について計算した前記下限評価値よりも小さい場合、前記第1の状態変数の前記評価値は、前記第2の状態変数の前記評価値よりも小さいと判定する、
処理をコンピュータに実行させる請求項1に記載のプログラム。
【請求項3】
前記第1の状態変数について計算した前記下限評価値が、前記第2の状態変数について計算した前記上限評価値以下であり、前記第1の状態変数について計算した前記上限評価値が、前記第2の状態変数について計算した前記下限評価値以上である場合、前記第1の状態変数と前記第2の状態変数のそれぞれについて、前記評価値を計算し、
前記第1の状態変数について計算した前記評価値と、前記第2の状態変数について計算した前記評価値との比較結果に基づいて、前記大小関係を判定する、
処理を前記コンピュータに実行させる請求項2に記載のプログラム。
【請求項4】
前記乱数値の範囲を分割した前記複数の区間のそれぞれについて、前記乱数値に基づく対数計算により得られる前記ノイズ関数の前記下限値と前記上限値とを計算し、前記記憶部に記憶する、
処理を前記コンピュータに実行させる請求項1乃至3の何れか一項に記載のプログラム。
【請求項5】
所定の繰り返し回数ごとに、前記温度パラメータの値を変化させる、処理を前記コンピュータに実行させる請求項1乃至4の何れか一項に記載のプログラム。
【請求項6】
複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値を、乱数値を用いて探索するデータ処理方法であって、
コンピュータが、
前記乱数値の範囲を分割した複数の区間のそれぞれについて、前記乱数値に基づく対数計算により得られるノイズ関数の下限値と上限値を記憶した記憶部から、前記評価関数に含まれる前記複数の状態変数のそれぞれについて生成した前記乱数値が属する区間の前記下限値と前記上限値を、前記複数の状態変数のそれぞれについて取得し、
前記複数の状態変数のうちの1つの状態変数の値が変化した場合の前記評価関数の値の変化量と0のうちの大きい方の値と温度パラメータとの積と、前記状態変数について取得した前記下限値との和である下限評価値と、前記積と前記状態変数について取得した前記上限値との和である上限評価値とを、前記複数の状態変数のそれぞれについて計算し、
前記下限評価値と前記上限評価値に基づいて、前記複数の状態変数のそれぞれの間の、前記積と前記ノイズ関数の和による評価値の大小関係を判定することで、前記評価値が最小となる更新対象の状態変数を決定し、
決定した前記更新対象の状態変数の値を変える、
処理を繰り返すことで、前記評価関数の値が極小または極大になる前記複数の状態変数の値を探索する、
データ処理方法。
【請求項7】
複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値を、乱数値を用いて探索するデータ処理装置であって、
前記乱数値に基づく対数計算により得られるノイズ関数の下限値と上限値を、前記乱数値の範囲を分割した複数の区間のそれぞれについて記憶した記憶部と、
前記記憶部から、前記評価関数に含まれる前記複数の状態変数のそれぞれについて生成した前記乱数値が属する区間の前記下限値と前記上限値を、前記複数の状態変数のそれぞれについて取得し、前記複数の状態変数のうちの1つの状態変数の値が変化した場合の前記評価関数の値の変化量と0のうちの大きい方の値と温度パラメータとの積と、前記状態変数について取得した前記下限値との和である下限評価値と、前記積と前記状態変数について取得した前記上限値との和である上限評価値とを、前記複数の状態変数のそれぞれについて計算し、前記下限評価値と前記上限評価値に基づいて、前記複数の状態変数のそれぞれの間の、前記積と前記ノイズ関数の和による評価値の大小関係を判定することで、前記評価値が最小となる更新対象の状態変数を決定し、決定した前記更新対象の状態変数の値を変える、処理を繰り返すことで、前記評価関数の値が極小または極大になる前記複数の状態変数の値を探索する処理部と、
を有するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、データ処理方法及びデータ処理装置に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算するデータ処理装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある(たとえば、特許文献1参照)。
【0003】
イジング装置は、組合せ最適化問題を磁性体のスピンの振る舞いを表すイジングモデルに変換する。そして、イジング装置は、疑似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法により、イジング型の評価関数の値(イジングモデルのエネルギーに相当する)が極小になるイジングモデルの状態の探索を行う。評価関数の極小値のうちの最小値になる状態が最適解となる。なお、イジング装置は、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。以下、マルコフ連鎖モンテカルロ法を、MCMC(Markov-Chain Monte Carlo)法と略す。イジングモデルの状態は、複数の状態変数の値の組合せにより表現できる。各状態変数の値として、0または1を用いることができる。
【0004】
イジング型の評価関数は、たとえば、以下の式(1)で定義される。
【0005】
【数1】
【0006】
右辺の1項目は、イジングモデルの全状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値(0または1)と重み値(2つの状態変数の間の相互作用の強さを表す)との積を積算したものである。xは、識別番号がiの状態変数、xは、識別番号がjの状態変数であり、Wijは、識別番号がiとjの状態変数間の相互作用の大きさを示す重み値である。右辺の2項目は、各識別番号についてのバイアス係数と状態変数との積の総和を求めたものである。bは、識別番号=iについてのバイアス係数を示している。cは定数である。
【0007】
また、xの値の変化に伴うエネルギーの変化量(ΔE)は、以下の式(2)で表される。
【0008】
【数2】
【0009】
式(2)において、xが1から0に変化するとき、Δxは-1となり、状態変数xが0から1に変化するとき、Δxは1となる。
イジング装置は、解が局所解に陥ることを防ぐために、エネルギーが上がる状態遷移についても所定の確率で受け入れる。xの値の変化を受け入れる確率として、たとえば、確率A=min(1,exp(-ΔE/T))を用いることができる。Tは温度パラメータである。イジング装置は、たとえば、x(i=1,2,…,N)をシーケンシャルまたはランダムに選択し、0<u[i]<1の一様乱数u[i]を用いて、u[i]<Aの場合に、xの値を変化させ、それ以外の場合にはxの値を変化させない。
【0010】
しかし、上記の確率を用いた場合、状態遷移がいつまでも許容されず、同じ状態が繰り返される可能性がある。
そこで、各試行において状態遷移を発生させる棄却フリー(リジェクション-フリー)MCMC法と呼ばれる手法が用いられる場合がある。リジェクション-フリーMCMC法では、N個の状態変数のうち、以下の式(3)に示す重み付き確率Pに基づいて、各試行において値を変化させる状態変数が1つ選択される。これにより、通常のMCMC法を行った場合と等価な結果を少ない試行回数で得ることができる。
【0011】
【数3】
【0012】
重み付き確率Pに基づいて値を変化させる状態変数を1つ選択するアルゴリズムとして、以下に示すような重み付けサンプリングのアルゴリズム(たとえば、非特許文献1参照)を用いることができる。
【0013】
そのアルゴリズムは、x~xのそれぞれについてのA~Aに基づいて、k=u[i](1/Ai)が最大となるiを識別番号としてもつxを選択するという手法である。ここで、A=min(1,exp(-ΔE/T))であるから、k=u[i](1/Ai)が最大となるiという条件は、以下の式(4)で表せる。
【0014】
【数4】
【0015】
式(4)において、ノイズ関数log(-log(u[i]))に、温度パラメータ(T)を乗じた値は熱ノイズに相当する。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2020-140631号公報
【非特許文献】
【0017】
【非特許文献1】P.S. Efraimidis, P.G. Spirakis, “Weighted random sampling with a reservoir”, Information Processing Letters. 97, 181-185, 2006
【発明の概要】
【発明が解決しようとする課題】
【0018】
上記のように重み付き確率に基づいて値を変化させる状態変数を選択するためには、ノイズ関数を計算することになる。ノイズ関数の計算は対数計算を含むため、計算に時間がかかり、それに伴って組合せ最適化問題の計算時間が長くなる可能性がある。
【0019】
1つの側面では、本発明は、組合せ最適化問題の計算時間を短縮するプログラム、データ処理方法及びデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【0020】
1つの実施態様では、複数の状態変数を含むイジング型の評価関数の値が極小または極大となる前記複数の状態変数の値を、乱数値を用いて探索する処理をコンピュータに実行させるプログラムであって、前記乱数値の範囲を分割した複数の区間のそれぞれについて、前記乱数値に基づく対数計算により得られるノイズ関数の下限値と上限値を記憶した記憶部から、前記評価関数に含まれる前記複数の状態変数のそれぞれについて生成した前記乱数値が属する区間の前記下限値と前記上限値を、前記複数の状態変数のそれぞれについて取得し、前記複数の状態変数のうちの1つの状態変数の値が変化した場合の前記評価関数の値の変化量と0のうちの大きい方の値と温度パラメータとの積と、前記状態変数について取得した前記下限値との和である下限評価値と、前記積と前記状態変数について取得した前記上限値との和である上限評価値とを、前記複数の状態変数のそれぞれについて計算し、前記下限評価値と前記上限評価値に基づいて、前記複数の状態変数のそれぞれの間の、前記積と前記ノイズ関数の和による評価値の大小関係を判定することで、前記評価値が最小となる更新対象の状態変数を決定し、決定した前記更新対象の状態変数の値を変える、処理を繰り返すことで、前記評価関数の値が極小または極大になる前記複数の状態変数の値を探索する、処理をコンピュータに実行させるプログラムが提供される。
【0021】
また、1つの実施態様では、データ処理方法が提供される。
また、1つの実施態様では、データ処理装置が提供される。
【発明の効果】
【0022】
1つの側面では、本発明は、組合せ最適化問題の計算時間を短縮できる。
【図面の簡単な説明】
【0023】
図1】第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
図2】ノイズ関数の一例を示す図である。
図3】第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
図4】データ処理装置の機能例を示すブロック図である。
図5】ノイズ関数上限下限テーブルの一例を示す図である。
図6】第2の実施の形態のデータ処理方法の一例の流れを示すフローチャートである。
図7】探索処理の一例の流れを示すフローチャートである。
図8】iminの選択処理の一例の流れを示すフローチャートである。
図9】評価値とノイズ関数とβΔEの計算例を示す図である。
図10】第3の実施の形態のデータ処理装置の一例を示す図である。
【発明を実施するための形態】
【0024】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
前述のリジェクション-フリーMCMC法では、各試行において、n個の状態変数のうち、式(4)の関係を満たすiで示される状態変数の値を変更していくことで、評価関数の値(エネルギー)を最小にするn個の状態変数の値(最適解)の探索が行われる。
【0025】
ところで、上記のiを決定することは、式(4)のmax(0,ΔE)+Tlog(-log(u[i]))において、β=1/Tとして、f(i)=β×max(0,ΔE)+log(-log(u[i]))を最小にするiを決定することに等しい。以下では、Tの代わりに、Tの逆数であるβを温度パラメータと呼ぶことにする。また、以下、f(i)を評価値と呼ぶ場合もある。
【0026】
以下に示すデータ処理装置及びデータ処理方法は、このような評価値を最小にするiで示される状態変数の値を変更していくことで、エネルギーを最小にする最適解の探索を行うものである。
【0027】
(第1の実施の形態)
図1は、第1の実施の形態のデータ処理装置及びデータ処理方法の一例を示す図である。
【0028】
データ処理装置10は、たとえば、コンピュータであり、記憶部11、処理部12を有する。
記憶部11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの電子回路である不揮発性の記憶装置である。
【0029】
記憶部11は、ノイズ関数上限下限テーブル11aを記憶する。
ノイズ関数は、前述のようにlog(-log(u[i]))と表すことができ、u[i]は、0<u[i]<1の一様乱数である。
【0030】
図2は、ノイズ関数の一例を示す図である。横軸xはu[i]を表し、縦軸yはノイズ関数の値の大きさを表す。
u[i]は疑似乱数r[i]を用いて生成することができる。r[i]が32ビットの整数の疑似乱数であるものとした場合、u[i]=r[i]/232である。以下の例では、r[i]を乱数値として説明するが、u[i]を直接、乱数値として扱ってもよい。
【0031】
図1には、ノイズ関数上限下限テーブル11aの一例が示されている。
ノイズ関数上限下限テーブル11aは、乱数値に基づく対数計算により得られるノイズ関数の下限値(lb[k])と上限値(ub[k])を、乱数値の範囲を分割した複数の区間のそれぞれについて含む。
【0032】
kは、各区間の識別番号であり、r[i]がとり得る値の範囲をK個に分割した場合、図1のように、k=1~Kである。たとえば、k=1の区間は、r[i]の下限が1、上限が1×D-1の区間である。r[i]が32ビットの整数の疑似乱数とした場合、D=232/Kである。
【0033】
lb[k]は、各区間におけるr[i]の上限から求めることができ、ub[k]は、各区間におけるr[i]の下限から求めることができる。たとえば、上記のようにu[i]=r[i]/232で、K=256の場合、lb[1]=log(-log(D/232))=1.7129となり、ub[1]=log(-log(1/232))=3.099となる。
【0034】
前述のf(i)は、r[i]が区間kに属する場合、lb[k]、ub[k]を用いて表されるg(i)=β×max(0,ΔE)+lb[k]、h(i)=β×max(0,ΔE)+ub[k]に対して、g(i)≦f(i)≦h(i)という関係を満たす。以下、g(i)を下限評価値、h(i)を上限評価値という場合もある。
【0035】
なお、記憶部11は、処理部12にデータ処理処理を実行させるプログラムを記憶する。また記憶部11は、たとえば外部から入力された問題情報(式(1)のWij、b、c)や計算条件(たとえばβを変化させるための情報、最大試行回数(試行回数の上限値)など)、n個の状態変数の値、エネルギーの計算結果など各種の情報を記憶してもよい。
【0036】
処理部12は、たとえば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのハードウェアであるプロセッサにより実現できる。また、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路により実現されるようにしてもよい。処理部12は、記憶部11に記憶されたプログラム(プログラム)を実行して、以下に示すような処理をデータ処理装置10に行わせる。なお、処理部12は、複数のプロセッサの集合であってもよい。
【0037】
処理部12は、f(i)を最小にするiで示される状態変数の値を変更していくことで、エネルギーが極小となる解の探索を行う。評価関数の極小値のうちの最小値になる割当状態が最適解となる。なお、式(1)に示した評価関数の符号を変えれば、処理部12は、評価関数の値が極大になる解を探索することもできる(この場合、最大値が最適解となる)。
【0038】
f(i)>f(j=i+1)であるか否かは、上記のf(i)とf(j)についての下限評価値と上限評価値(前述のlb[k]とub[k]を用いて得られる)とを用いて判定できる場合がある。すなわち、h(j)<g(i)であれば、f(i)>f(j)である。これに対して、h(i)<g(j)であれば、f(i)<f(j)である。したがって、これら2つの場合には、f(i)>f(j)であるか否かを判定するために、f(i)とf(j)を直接計算しなくてもよい。
【0039】
処理部12は、上記のような関係を利用して、f(i)を最小にするiを決定する。
図1には、処理部12がプログラム(プログラム)を実行したときの一部の処理(f(i)を最小にするiで示される状態変数の値を変える部分の処理)の流れの例が示されている。
【0040】
ステップS1:処理部12は、乱数値であるr[1]を生成し、imin=1とする。iminは、f(i)を最小にするiの候補を示す識別番号であり、更新候補の状態変数を示す。また、処理部12は、入力された問題情報(式(1)のWij、b、c)、x(i=1,2,…,n)の初期値に基づいて、式(2)により、xが変化したときのエネルギーの変化量(ΔE)を計算する。また、処理部12は、g(imin)=g(1)とh(imin)=h(1)を計算する。処理部12は、r[1]が属する区間のlb[k]、ub[k]を記憶部11から取得して(読み出して)、g(1)=β×max(0,ΔE)+lb[k]、h(1)=β×max(0,ΔE)+ub[k]を計算する。
【0041】
ステップS2:処理部12は、x(i=2,3,…,n)を選択する。nは状態変数の数である。なお、ステップS1の処理の直後は、i=2である。
ステップS3:処理部12は、r[i]を生成する。
【0042】
ステップS4:処理部12は、r[i]が属する区間のlb[k]とub[k]を記憶部11から取得する(読み出す)。1×D≦r[i]≦2×D-1の場合、図1の例のように、k=2の区間のlb[2]とub[2]が取得される。
【0043】
ステップS5:処理部12は、選択したxの値が変化した場合のエネルギーの変化量であるΔEを計算するとともに、g(i)=β×max(0,ΔE)+lb[k]、h(i)=β×max(0,ΔE)+ub[k]を計算する。
【0044】
ステップS6:処理部12は、h(i)とg(imin)との比較結果、または、g(i)とh(imin)の比較結果に基づいて、選択したxを更新候補とするか否かを決定する。すなわち、iをiminとするか、これまでのiminを維持するかが決定される。
【0045】
前述の関係を用いて、h(i)<g(imin)の場合、f(imin)>f(i)と判定される。このため、処理部12は、iをiminとする。一方、h(imin)<g(i)の場合、f(imin)<f(i)と判定される。このため、処理部12は、これまでのiminを維持する。
【0046】
なお、これら以外の場合(g(i)~h(i)の区間と、g(imin)~h(imin)の区間が重なっている場合)、処理部12は、f(imin)とf(i)を計算する。そして、処理部12は、f(imin)>f(i)であれば、iをiminとし、f(imin)≦f(i)であれば、これまでのiminを維持する。
【0047】
ステップS7,S8:処理部12は、i=i+1とし、i≦nであるか否かを判定する。i≦nであると判定された場合には、ステップS2からの処理が繰り返され、i≦nではないと判定された場合、ステップS9の処理が行われる。
【0048】
ステップS9:処理部12は、iminにより識別される更新候補の状態変数であるximinを、更新対象の状態変数として決定し、その値を変化(フリップ)する。
処理部12は、ステップS1~S9の処理を繰り返すことで、エネルギーが極小になるn個の状態変数の値を探索する。
【0049】
処理部12は、疑似焼き鈍し法を行う場合、所定の温度パラメータ変更スケジュールにしたがって、βの値を大きくしていく(Tの値を小さくしていくことに相当する)。そして、処理部12は、ステップS1~S9の処理が所定回数、繰り返された場合に得られたn個の状態変数の値を、組合せ最適化問題の計算結果として出力する(たとえば、図示しない表示装置に表示する)。なお、処理部12は、ステップS9の処理のたびに、式(1)で表される評価関数の値(エネルギー)を更新し、これまでの最小エネルギーとなった場合のエネルギーとn個の状態変数の値とを保持しておいてもよい。その場合、処理部12は、ステップS1~S9の処理が所定回数、繰り返された後に記憶されている最小エネルギーに対応するn個の状態変数の値を、計算結果として出力してもよい。
【0050】
処理部12は、レプリカ交換法を行う場合、それぞれ異なる温度パラメータの値が設定された複数のレプリカのそれぞれにおいて、図1に示したステップS1~S9の処理を行う。そして、処理部12は、ステップS1~S9の処理が一定回数繰り返されるごとに、レプリカ交換を行う。たとえば、処理部12は、複数のレプリカのうち2つをランダムに選択して、選択された2つのレプリカの間で、レプリカ間のエネルギー差や温度パラメータの値の差に基づいた所定の交換確率で、温度パラメータの値を交換する。処理部12は、たとえば、各レプリカにおいてステップS9の処理のたびに、式(1)で表される評価関数の値(エネルギー)を更新し、これまでの最小エネルギーとなった場合のエネルギーとn個の状態変数の値とを保持する。処理部12は、そして、各レプリカにおいてステップS1~S9の処理が所定回数、繰り返された後に記憶されている最小エネルギーのうち、全レプリカにおいて最小のエネルギーに対応する配置情報を、計算結果として出力する。
【0051】
以上のような第1の実施の形態のデータ処理装置10及びデータ処理方法によれば、予め記憶したノイズ関数の区間の下限値及び上限値を用いて、各状態変数についての評価値(f(i))がとり得る下限評価値(g(i))と上限評価値(h(i))が計算される。そして、f(i)がこれまでで最小の状態変数である更新候補についてのg(imin)とh(imin)を用い、h(i)とg(imin)、g(i)とh(imin)の比較結果から、xを更新候補とするか判定できる場合がある。すなわち、f(i)の計算をする頻度を少なくできる。f(i)は前述のように、対数計算により得られるノイズ関数を含むため、計算に時間がかかるが、第1の実施の形態のデータ処理装置10及びデータ処理方法によれば、f(i)の計算頻度を少なくできるため、組合せ最適化問題の計算時間を短縮できる。
【0052】
(第2の実施の形態)
図3は、第2の実施の形態のデータ処理装置のハードウェア例を示すブロック図である。
【0053】
データ処理装置20は、たとえば、コンピュータであり、CPU21、RAM22、HDD23、GPU(Graphics Processing Unit)24、入力インタフェース25、媒体リーダ26及び通信インタフェース27を有する。上記ユニットは、バスに接続されている。
【0054】
CPU21は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU21は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM22にロードし、プログラムを実行する。なお、CPU21は複数のプロセッサコアを備えてもよく、データ処理装置20は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0055】
RAM22は、CPU21が実行するプログラムやCPU21が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置20は、RAM22以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0056】
HDD23は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、組合せ最適化問題の最適解を探索する処理をデータ処理装置20に実行させるプログラムが含まれる。なお、データ処理装置20は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0057】
GPU24は、CPU21からの命令にしたがって、データ処理装置20に接続されたディスプレイ24aに画像を出力する。ディスプレイ24aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0058】
入力インタフェース25は、データ処理装置20に接続された入力デバイス25aから入力信号を取得し、CPU21に出力する。入力デバイス25aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置20に、複数の種類の入力デバイスが接続されていてもよい。
【0059】
媒体リーダ26は、記録媒体26aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体26aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0060】
媒体リーダ26は、たとえば、記録媒体26aから読み取ったプログラムやデータを、RAM22やHDD23などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU21によって実行される。なお、記録媒体26aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体26aやHDD23を、コンピュータ読み取り可能な記録媒体ということがある。
【0061】
通信インタフェース27は、ネットワーク27aに接続され、ネットワーク27aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース27は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0062】
次に、データ処理装置20の機能及び処理手順を説明する。
図4は、データ処理装置の機能例を示すブロック図である。
データ処理装置20は、入力部30、制御部31、テーブル作成部32、記憶部33、探索部34、出力部35を有する。
【0063】
入力部30、制御部31、テーブル作成部32、探索部34、出力部35は、たとえば、CPU21が実行するプログラムモジュールを用いて実装できる。記憶部33は、たとえば、RAM22またはHDD23に確保した記憶領域を用いて実装できる。
【0064】
入力部30は、たとえば、問題情報(式(1)のWij、b、c)や計算条件(たとえば、βを変化させるための情報、最大試行回数など)の入力を受け付ける。これらの情報は、ユーザによる入力デバイス25aの操作により入力されてもよいし、記録媒体26aまたはネットワーク27aを介して入力されてもよい。
【0065】
制御部31は、データ処理装置20の各部を制御して、後述の処理を実行させる。
テーブル作成部32は、ノイズ関数上限下限テーブルを作成し、記憶部33に記憶する。テーブル作成部32は、乱数値の範囲を分割した複数の区間のそれぞれについて、乱数値に基づく対数計算により得られるノイズ関数の下限値と上限値とを計算することで、ノイズ関数上限下限テーブルを作成する。
【0066】
記憶部33は、ノイズ関数上限下限テーブルを記憶する。また、記憶部33は、問題情報や計算条件、n個の状態変数の値、エネルギーの計算結果など各種の情報を記憶してもよい。
【0067】
探索部34は、評価値(f(i))を最小にするiで示される状態変数の値を変更していくことで、エネルギーを極小にする解の探索を行う。
出力部35は、たとえば、探索処理を所定回数行った後に得られるn個の状態変数の値と、計算結果として出力する。出力部35は、たとえば、計算結果を、ディスプレイ24aに出力して表示させてもよいし、ネットワーク27aを介して、他の情報処理装置に送信してもよいし、外部の記憶装置に記憶してもよい。
【0068】
図5は、ノイズ関数上限下限テーブルの一例を示す図である。
ノイズ関数上限下限テーブルは、32ビットの整数の疑似乱数であるr[i]に基づく対数計算により得られるノイズ関数の下限値(lb[k])と上限値(ub[k])を、乱数値の範囲を分割した複数の区間のそれぞれについて含む。ノイズ関数は、log(-log(r[i]/232))と表すことができる。
【0069】
kは、各区間の識別番号であり、図5では、r[i]がとり得る値の範囲を256個に分割した例、すなわち、分割区間数K=256である例が示されている。なお、図5では、見やすさのため、D=232/Kとおいている。
【0070】
lb[k]は、各区間におけるr[i]の上限から求めることができ、ub[k]は、各区間におけるr[i]の下限から求めることができる。
次に、CPU21がプログラムを実行したときのデータ処理装置20の処理(データ処理方法)の手順を説明する。なお、以下の例では、疑似焼き鈍し法を適用したデータ処理方法について説明する。
【0071】
図6は、第2の実施の形態のデータ処理方法の一例の流れを示すフローチャートである。
ステップS10:入力部30は、問題情報(式(1)のWij、b、c)や計算条件(温度パラメータ(Tまたはβ(=1/T))の初期値、温度減衰率、1探索処理当たりの最大試行回数、探索処理の最大呼び出し回数など)の入力を受け付ける。
【0072】
ステップS11:テーブル作成部32は、図5に示したようなノイズ関数上限下限テーブルを作成し、記憶部33に記憶する。
ステップS12:制御部31は、初期化を行う。たとえば、制御部31は、n個の状態変数の初期値を設定する。また、制御部31は、n個の状態変数の初期値と、問題情報とから、式(1)により、エネルギーの初期値を計算する。なお、n個の状態変数の初期値、またはエネルギーの初期値は、ステップS10の処理でデータ処理装置20の外部から入力されるようにしてもよい。制御部31は、たとえば、n個の状態変数の初期値と、エネルギーの初期値を記憶部33に記憶する。また、制御部31は、探索部34に温度パラメータの初期値を設定する。
【0073】
ステップS13:制御部31は、探索部34に、探索処理を実行させる。探索処理の例は後述する。
ステップS14:制御部31は、探索処理の実行回数(呼び出し回数)であるcallをcall=call+1とする。また、制御部31は、T=T×α(β=(1/α)β)、とする。αは温度減衰率であり、たとえば、0.99などの1より小さい値をもつ。
【0074】
ステップS15:制御部31は、call≦Nであるか否かを判定する。Nは、探索処理の最大呼び出し回数である。制御部31は、call≦Nであると判定した場合、ステップS13からの処理を繰返し、call≦Nではないと判定した場合、ステップS16の処理が行われる。
【0075】
ステップS16:出力部35は、たとえば、現在のn個の状態変数の値を、計算結果として出力する。
図7は、探索処理の一例の流れを示すフローチャートである。
【0076】
ステップS20:探索部34は、試行回数を示すitrをitr=1に初期化する。
ステップS21:探索部34は、乱数値であるr[1]を生成する。また、探索部34は、問題情報(式(1)のWij、b、c)、x(i=1,2,…,n)の初期値に基づいて、式(2)により、xが変化した場合のエネルギーの変化量(ΔE)を計算する。さらに、探索部34は、r[1]が属する区間のlb[k]、ub[k]を図5に示したようなノイズ関数上限下限テーブルから読み出して、g(1)=β×max(0,ΔE)+lb[k]、h(1)=β×max(0,ΔE)+ub[k]を計算する。また、探索部34は、imin=1、i=2とする。
【0077】
ステップS22:探索部34は、r[i]を生成し、ΔE、g(i)、h(i)を計算する。ステップS22の処理では、探索部34は、g(i)、h(i)を計算するために、r[i]が属する区間のlb[k]とub[k]を図5に示したようなノイズ関数上限下限テーブルから読み出す。そして、探索部34は、g(i)=β×max(0,ΔE)+lb[k]、h(i)=β×max(0,ΔE)+ub[k]を計算する。
【0078】
ステップS23:探索部34は、iminの選択処理を行う。iminの選択処理については後述する。
ステップS24,S25:探索部34は、i=i+1とし、i≦nであるか否かを判定する。i≦nであると判定された場合には、ステップS22からの処理が繰り返され、i≦nではないと判定された場合、ステップS26の処理が行われる。
【0079】
ステップS26:探索部34は、iminにより識別される更新候補の状態変数であるximinを、更新対象の状態変数である決定し、その値をフリップする。
ステップS27,S28:探索部34は、itr=itr+1とし、itr≦maxであるか否かを判定する。maxは、1探索処理当たりの最大試行回数である。itr≦maxであると判定された場合には、ステップS21からの処理が繰り返され、itr≦maxではないと判定された場合、探索処理が終了する。
【0080】
図8は、iminの選択処理の一例の流れを示すフローチャートである。
ステップS30:探索部34は、h(i)<g(imin)であるか否かを判定する。h(i)<g(imin)ではないと判定された場合、ステップS31の処理が行われ、h(i)<g(imin)であると判定された場合、ステップS35の処理が行われる。
【0081】
ステップS31:探索部34は、g(i)>h(imin)であるか否かを判定する。g(i)>h(imin)ではないと判定された場合、ステップS32の処理が行われ、g(i)>h(imin)であると判定された場合、ステップS34の処理が行われる。
【0082】
ステップS32:探索部34は、f(i)とf(imin)を計算する。f(i)は、f(i)=β×max(0,ΔE)+log(-log(r[i]/232))という式により計算でき、f(imin)も同様に、f(imin)=β×max(0,ΔEimin)+log(-log(r[imin]/232)という式により計算できる。
【0083】
ステップS33:探索部34は、f(i)<f(imin)であるか否かを判定する。f(i)<f(imin)ではないと判定された場合、ステップS34の処理が行われ、f(i)<f(imin)であると判定された場合、ステップS35の処理が行われる。
【0084】
ステップS34:探索部34は、imin=iminとする。つまり、これまでのiminが維持される。
ステップS35:探索部34は、imin=iとする。つまり、iminがiに更新される。
【0085】
ステップS34,S35の処理後、iminの選択処理が終了する。
図9は、評価値とノイズ関数とβΔEの計算例を示す図である。図9では、各iについての評価値(f(i))、ノイズ関数(log(-log(u[i])))、βΔEの計算例が示されている。
【0086】
ΔE>0の場合、f(i)は、f(i)=βΔE+log(-log(u[i]))と表せる。たとえば、βΔE=3.22、βΔE=5.707であり、生成したr[1]の属する区間におけるノイズ関数の下限値が1.37、上限値が3.22であるとする。その場合、1.37+3.22≦f(1)≦1.42+3.22となる。また、生成したr[2]の属する区間におけるノイズ関数の下限値が-0.952、上限値が-0.937であるとする。その場合、-0.952+5.707≦f(2)≦-0.937+5.707となる。
【0087】
この例の場合、f(1)<f(2)となり、f(1)とf(2)を直接計算しなくても、f(1)とf(2)の大小関係がわかる。
(評価例)
正解が既知である32都市の巡回セールスマン問題を、全試行回数(N×max)=100万回で行った場合、上記第2の実施の形態のデータ処理方法を適用せずに、直接、評価値f(i)を計算して行った場合、正解に達した時間は、317.2秒であった。これに対して、上記第2の実施の形態のデータ処理方法を適用した場合、35.7秒で正解に達し、8.9倍の高速化が可能となった。
【0088】
以上のような第2の実施の形態のデータ処理装置20及びデータ処理方法によれば、第1の実施の形態のデータ処理装置10及びデータ処理方法と同様の効果が得られる。すなわち、対数計算により得られるノイズ関数を含む評価値の計算頻度を減らせるため、組合せ最適化問題の計算時間を短縮できるという効果が得られる。
【0089】
なお、前述のように、上記の処理内容は、データ処理装置20にプログラム(プログラム)を実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体26a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD23)にプログラムをコピーして実行してもよい。
【0090】
(第3の実施の形態)
図10は、第3の実施の形態のデータ処理装置の一例を示す図である。図10において、図3に示した要素と同じ要素については同一符号が付されている。
【0091】
第3の実施の形態のデータ処理装置40は、バスに接続されたアクセラレータカード41を有する。
アクセラレータカード41は、組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード41は、FPGA41a及びDRAM41bを有する。
【0092】
第3の実施の形態のデータ処理装置40では、たとえば、FPGA41aが、CPU21の代わりに、図4に示した探索部34の機能を実現する。なお、FPGA41aが、制御部31やテーブル作成部32の機能も実現するようにしてもよい。
【0093】
DRAM41bは、たとえば、図5に示したようなノイズ関数上限下限テーブルを記憶する。
上記のような第3の実施の形態のデータ処理装置40においても、第2の実施の形態のデータ処理装置20と同様の効果が得られる。
【0094】
以上、実施の形態に基づき、本発明のプログラム、データ処理方法及びデータ処理装置の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0095】
10 データ処理装置
11 記憶部
11a ノイズ関数上限下限テーブル
12 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10