(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-10
(45)【発行日】2024-01-18
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240111BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2020031406
(22)【出願日】2020-02-27
【審査請求日】2022-11-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】小山 純平
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2019-160169(JP,A)
【文献】小西 健三,温度並列シミュレーテッド・アニーリング法とその評価,情報処理学会論文誌,第36巻,第4号,社団法人情報処理学会,1995年04月15日,pp.797-807
【文献】福島 孝治,確率的情報処理と統計力学 様々なアプローチとそのチュートリアル 第5回,数理科学,株式会社サイエンス社,2005年05月01日,第43巻,第5号 ,pp.69-75
【文献】岡本 啓吾,レプリカ数と温度の自動設定機能を持つレプリカ交換法,電子情報通信学会 2018年 基礎・境界ソサイエティ/NOLTAソサイエティ大会 講演論文集,一般社団法人電子情報通信学会,2018年08月28日,p.86
【文献】岡本 啓吾,レプリカのコスト分布の重なり率を用いた温度調節機能を持つレプリカ交換法,FIT2017 第16回情報科学技術フォーラム 講演論文集 第1分冊,一般社団法人情報処理学会,2017年09月05日,pp.125-132
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
それぞれが互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索する複数の探索部と、
前記複数の探索部に含まれる2つの探索部を含む探索部の組で得られた前記エネルギー値の組に応じた交換確率に基づいて、前記探索部の組で前記複数の状態変数の値または前記温度値を交換する制御部と、
前記交換確率に基づいて前記温度値を決定する温度調整部と、
を有する情報処理装置。
【請求項2】
前記温度調整部は、前記交換確率と閾値との比較を行い、前記比較に応じて最高温度値および最低温度値の両方または何れか一方を決定する、
請求項1記載の情報処理装置。
【請求項3】
前記温度調整部は、前記温度値の降順に、前記探索部の組に対応する前記交換確率を第1閾値と比較し、前記交換確率が最初に前記第1閾値よりも小さくなる前記探索部の組の前記交換確率に基づいて前記最高温度値を決定する、
請求項2記載の情報処理装置。
【請求項4】
前記温度調整部は、前記温度値の昇順に、前記探索部の組に対応する前記交換確率を第2閾値と比較し、前記交換確率が最初に前記第2閾値よりも大きくなる前記探索部の組の前記交換確率に基づいて前記最低温度値を決定する、
請求項2記載の情報処理装置。
【請求項5】
前記温度調整部は、所定期間内に得られた複数の前記交換確率の平均値に基づいて前記温度値を決定する、
請求項1記載の情報処理装置。
【請求項6】
前記温度調整部は、前記探索部の組に対応する温度値の組と前記探索部の組に対応する前記探索部の組で得られた平均エネルギー値の組とに基づいて前記交換確率を計算する、
請求項1記載の情報処理装置。
【請求項7】
前記制御部は、前記温度調整部により決定された前記最高温度値および前記最低温度値の両方または何れか一方に基づいて、前記複数の探索部に設定する複数の前記温度値を更新する、
請求項2記載の情報処理装置。
【請求項8】
複数の探索部が、互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索し、
制御部が、前記複数の探索部に含まれる2つの探索部を含む探索部の組で得られた前記エネルギー値の組に応じた交換確率に基づいて、前記探索部の組で前記複数の状態変数の値または前記温度値を交換し、
温度調整部が、前記交換確率に基づいて前記温度値を決定する、
情報処理方法。
【請求項9】
コンピュータに、
複数の探索部により互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索させ、
前記複数の探索部に含まれる2つの探索部を含む探索部の組で得られた前記エネルギー値の組に応じた交換確率に基づいて、前記探索部の組で前記複数の状態変数の値または前記温度値を交換し、
前記交換確率に基づいて前記温度値を決定する、
処理を実行させるプログラム。
【請求項10】
コンピュータに、
それぞれが互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索する複数の探索部と、前記複数の探索部に含まれる2つの探索部を含む探索部の組における前記複数の状態変数の値または前記温度値の交換を行う制御部と、を有する情報処理装置から、前記複数の探索部で得られた複数のエネルギー値を取得し、
前記探索部の組で得られた前記エネルギー値の組に応じた前記交換の交換確率に基づいて前記温度値を決定する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする多変数の最適化問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する情報処理装置がある。情報処理装置は、例えばシミュレーテッド・アニーリング(Simulated Annealing)法やレプリカ交換法などのマルコフ連鎖モンテカルロ法により、問題に対応するエネルギー関数の値が最小または最大となる基底状態を探索する。基底状態は、最適化問題の最適解に対応する。
【0003】
例えば、等価回路を設計パラメータとする最適化問題にシミュレーテッド・アニーリングを適用する弾性表面波フィルタの設計方法の提案がある。提案の設計方法では、予備実験による、弾性表面波フィルタ設計問題に対する誤差関数の分布形状の調査の結果に基づいて、シミュレーテッド・アニーリングの温度プロファイルにおける最高温度と最低温度とが決定される。
【0004】
また、第1の温度でのシミュレーテッド・アニーリング処理で得られた状態を第2の温度でのシミュレーテッド・アニーリング処理で得られた状態と確率的に交換する温度並列シミュレーテッド・アニーリング用恒温槽装置の提案がある。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2008-140210号公報
【文献】特開平9-231197号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
レプリカ交換法のように温度値が設定された複数の探索部で確率的探索を行う場合、当該温度値を問題に応じて適切に決定することは容易ではない。
1つの側面では、本発明は、温度値を適切に決定できる情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、情報処理装置が提供される。情報処理装置は、複数の探索部と制御部と温度調整部とを有する。複数の探索部は、それぞれが互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索する。制御部は、複数の探索部に含まれる2つの探索部を含む探索部の組で得られたエネルギー値の組に応じた交換確率に基づいて、探索部の組で複数の状態変数の値または温度値を交換する。温度調整部は、交換確率に基づいて温度値を決定する。
【0008】
また、1つの態様では、情報処理方法が提供される。
また、1つの態様では、プログラムが提供される。
【発明の効果】
【0009】
1つの側面では、温度値を適切に決定できる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】イタレーション数と各探索部の温度値との関係の例を示す図である。
【
図3】温度値と平均エネルギー値との関係の例を示す図である。
【
図4】第2の実施の形態の情報処理装置の例を示す図である。
【
図9】レプリカ交換の全体制御処理の例を示すフローチャートである。
【
図11】データ収集処理例を示すフローチャートである。
【
図12】交換制御処理例を示すフローチャートである。
【
図13】第3の実施の形態の情報処理システムの例を示す図である。
【
図14】情報処理装置のハードウェア例を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置1は、組合せ最適化問題を定式化したイジング型のエネルギー関数に基づいて、レプリカ交換法により、イジングモデルの最低エネルギーの状態、すなわち、基底状態の探索を行う。基底状態は組合せ最適化問題の最適解に対応する。エネルギー関数は、複数の状態変数の値により表される状態に対応するエネルギー値を表し、評価関数や目的関数とも呼ばれる。状態変数は、「0」または「1」の値を取るバイナリ変数である。
【0013】
イジング型のエネルギー関数E(x)は、例えば式(1)により表される。
【0014】
【0015】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。エネルギーを最大化する問題の場合には、エネルギー関数の符号を逆にすればよい。
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と結合係数との積を積算したものである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。
【0016】
式(1)の右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアス係数を示している。
【0017】
例えば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を0または1の値をとるビットと呼ぶこともできる。
【0018】
情報処理装置1は、探索部1a1,1a2,…,1aN、制御部1bおよび温度調整部1cを有する。情報処理装置1は、例えば、FPGA(Field Programmable Gate Array)などの半導体集積回路を用いて実現される。この場合、半導体集積回路を用いて実現される探索回路、制御回路、および温度調整回路が、探索部1a1,1a2,…,1aN、制御部1bおよび温度調整部1c、探索部1a1,1a2,…,1aN、制御部1bおよび温度調整部1cとしてそれぞれ機能する。
【0019】
探索部1a1~1aNそれぞれは、互いに異なる温度値を用いて複数の状態変数で表されるエネルギー値の基底状態を探索する。Nは探索部の数である。探索部1a1~1aNそれぞれは、レプリカと呼ばれることがある。温度値は、温度の値である。
【0020】
ここで、ある状態変数、すなわち、ビットが変化することによる、ある状態から次の状態への遷移確率の決定には、メトロポリス法やギブス法が用いられる。例えば、探索部1a1~1aNそれぞれは、複数のビットの何れかのビットを変化させたときのエネルギー変化と、ノイズ値との比較結果に基づいて、ビットの変化を許容するか否かを判定する。探索部1a1~1aNそれぞれは、許容すると判定した場合、ビットの値を変えることで、状態遷移を発生させる。ノイズ値は、温度値や乱数に基づいて求められる。温度値が大きいほど、ノイズ値の振幅が大きくなる。
【0021】
制御部1bは、探索部1a1~1aNそれぞれに互いに異なる温度値を設定する。制御部1bは、最初の最高温度値として、比較的高い温度値を設定する。制御部1bは、最初の最低温度値として、比較的低い温度値を設定する。例えば、制御部1bは、探索部1a1~1aNに設定する温度値tmp[i]を式(2)、(3)に基づいて決定する。
【0022】
【0023】
【0024】
iは、0≦i≦N-1の整数であり、探索部1a1~1aNそれぞれの識別番号である。tmp_maxは、最高温度値である。tmp_minは、最低温度値である。制御部1bは、探索部1a1~1aNそれぞれに設定する初期温度値を、初期最高温度値および初期最低温度値を用いて、式(2)、(3)により計算する。
【0025】
制御部1bは、探索部1a1~1aNに基底状態の探索を開始させる。制御部1bは、探索部1a1~1aNそれぞれが、所定期間の探索により到達したエネルギー値を得る。
制御部1bは、探索部の組で得られたエネルギー値の組から計算される交換確率に基づいて、当該探索部の組で複数の状態変数の値または温度値を交換する。探索部の組で複数の状態変数の値または温度値を交換することを、「レプリカ交換」と呼ぶことがある。交換確率pは、式(4)で表される。
【0026】
【0027】
ここで、Eiは、i番目の探索部で得られたエネルギー値である。Ejは、j番目の探索部で得られたエネルギー値である。Tiは、i番目の探索部の温度値である。Tjは、j番目の探索部の温度値である。kは、ボルツマン定数である。温度値の差が大きいと交換確率pは小さい傾向にある。このため、制御部1bは、隣り合う温度値の組に対応する探索部の組に対してだけ交換確率pを評価し、レプリカ交換を行うか否かを判定してもよい。
【0028】
温度調整部1cは、交換確率pに基づいて温度値を決定する。例えば、温度調整部1cは、制御部1bにより設定される温度値のうちの最高温度値および最低温度値の両方または何れか一方を決定する。
【0029】
例えば、温度調整部1cは、現在の最高温度値から温度値の降順に、隣り合う2つの温度値の組ごとの交換確率pを取得し、交換確率pが最初に第1閾値よりも小さくなる温度値の組に基づいて、新たな最高温度値を決定する。一例では、温度調整部1cは、交換確率pが最初に第1閾値よりも小さくなる温度値の組のうちの大きい方を、新たな最高温度値とする。ただし、温度調整部1cは、交換確率pが最初に第1閾値よりも小さくなる温度値の組のうちの小さい方を、新たな最高温度値としてもよい。第1閾値は、問題に応じて、温度調整部1cに予め設定される。
【0030】
また、例えば、温度調整部1cは、現在の最低温度値から温度値の昇順に、隣り合う2つの温度値の組ごとの交換確率pを取得し、交換確率pが最初に第2閾値よりも大きくなる温度値の組に基づいて、新たな最低温度値を決定する。一例では、温度調整部1cは、交換確率pが最初に第2閾値よりも大きくなる温度値の組のうちの小さい方を新たな最低温度値とする。ただし、温度調整部1cは、交換確率pが最初に第2閾値よりも大きくなる温度値の組のうちの大きい方を、新たな最低温度値としてもよい。第2閾値は、問題に応じて、温度調整部1cに予め設定される。
【0031】
温度調整部1cは、上記の温度値の決定のために、温度値の組ごとの交換確率pを制御部1bから取得してもよいし、温度調整部1cが探索部1a1~1aNで得られたエネルギー値を取得して、交換確率pを計算してもよい。例えば、温度調整部1cは、探索部1a1~1aNで、ある温度値に対して得られたエネルギー値の平均、すなわち、平均エネルギー値を、交換確率pの計算に用いてもよい。更に、温度調整部1cは、閾値判定に用いる交換確率pとして、一定期間内に複数回取得された交換確率pの平均値を用いてもよいし、最新の交換確率pのみを用いてもよい。
【0032】
ここで、比較例の方法により決定される温度値の例を説明する。
図2は、イタレーション数と各探索部の温度値との関係の例を示す図である。
グラフ50は、レプリカ交換法におけるイタレーション数と各探索部の温度値との関係の例を示す。1イタレーションは、各探索部における1回の状態遷移に相当する。グラフ50の横軸は、イタレーション数/1000である。グラフ50の縦軸は、探索部に設定された温度値である。探索部の数、すなわち、レプリカ数は、40である。グラフ50の1つの系列が1つの探索部(レプリカ)に対応する。
【0033】
温度値Twijは、グラフ50で示される探索に用いられた最高温度値である。当該探索での最低温度値は0.1である。
グラフ50において探索部の温度値が変化している箇所が、レプリカ交換が行われたタイミングに相当する。グラフ50を低温側から、レプリカ交換頻度に注目してみると、最低温度領域に近い探索部では、温度値が低過ぎるため、ほとんど交換が起こらない。最低温度領域から中間の温度帯に近づくにつれて、レプリカ交換が起こるようになる。しかし、平均エネルギー値が比較的大きく変化する中間領域Rの温度帯でレプリカ交換がほとんど起こらなくなる。グラフ50では、温度値10000~100000程度の中間領域Rでは、ほとんどレプリカ交換が起こっていない。更に、中間領域Rを超えた最高温度領域では、レプリカ交換はほぼランダムに発生する。
【0034】
ここで、温度値T1は、ユーザによる問題の分析など、手動の調査で特定された適切な最高温度値である。温度値T1は、中間領域Rの上限とほぼ同じか当該上限よりもやや高い温度値である。
【0035】
上記のように、中間領域Rよりも比較的高い温度帯では、同温度帯に属する温度値が設定された探索部同士で高頻度にレプリカ交換が行われるだけで、当該探索部に設定される温度値が低くなり難くなることがある。この場合、比較的高い温度帯での交換処理は、単なるランダムウォークに過ぎず、基底状態の探索に寄与しない。したがって、ユーザの手動の調査に応じた設定では、こうした比較的高い温度帯を除去しつつ、中間領域Rの上限近傍の温度値となるように、温度値T1が決定される。すると、中間領域Rに多くの探索部を割り当てることができる。このため、中間領域Rに対応する温度帯における隣り合う2つの温度値の組に対する探索部の組の平均エネルギー値の差が小さくなり、中間領域Rに対応する温度帯での交換確率の増加が期待される。その結果、状態遷移が適切に促進され、探索部1a1~1aNによる求解性能が向上する。
【0036】
一方、温度値T2は、比較例の方法により決定された最高温度値である。温度値T2は、中間領域Rの下限近傍の温度値である。
比較例の方法では、情報処理装置1は、探索部に設定された温度値と探索部が到達した最小のエネルギー値とを観測し、最小のエネルギー値が更新されたときの温度値を探索部ごとに記録する。そして、情報処理装置1は、一定期間において、任意の探索部が最小のエネルギー値を更新したときに設定されていた温度値のヒストグラムを生成し、当該ヒストグラムにおいて頻度の最も高かった温度値を、新たな最高温度値とする。
【0037】
しかし、グラフ50に示されるように、中間領域Rにおいてレプリカ交換が起こっていない温度範囲がある。したがって、比較例の方法では、最初に中間領域Rよりも低い温度が設定された比較的多くの探索部は、その後も中間領域R以上の温度が設定されず、温度値T1まで到達しない。よって、探索部における温度遷移に基づく比較例の方法では、適切な最高温度値として温度値T1を得ることはできない。このため、探索部1a1~1aNに設定される温度値が、温度値T1ほど十分高くならず、低めに設定される。その結果、状態遷移が滞ってしまうことになり、求解性能を十分向上することができない。
【0038】
グラフ50で示される傾向は、ビット間の重み係数の表現に比較的大きな諧調数が必要な、例えばスピングラスのような問題で顕著に現れることがある。中間領域Rにおいて、ボルツマン分布が与える平均エネルギー値が温度値の上昇に対して急激に大きくなり、そのため、中間領域Rでのレプリカ交換の交換確率が低くなってしまう。すなわち、スピングラスのような温度の上昇に対して急激に平均エネルギーが大きくなるような問題においては、比較例の方法のように探索部の温度遷移から適切な最大温度値を推定することは難しい。
【0039】
図3は、温度値と平均エネルギー値との関係の例を示す図である。
グラフ60は、温度値と該当の温度値が設定された探索部が到達した平均エネルギー値との関係の例を示す。グラフ60の横軸は温度値である。グラフ60の横軸は対数スケールとなっている。グラフ60の縦軸は平均エネルギー値である。
【0040】
範囲61は、交換確率が小さくレプリカ交換が発生しない最低温度値付近の温度帯である。範囲62は、範囲61よりも高温側の温度帯であり、レプリカ交換が適度に発生する交換確率となる温度帯である。範囲63は、範囲62よりも高温側の温度帯であり、グラフ50の中間領域Rに相当し、交換確率が小さく、レプリカ交換が発生しない温度帯である。範囲64は、範囲63よりも高温側の温度帯であり、交換確率pが非常に大きく、レプリカ交換が頻繁に発生し過ぎる最高温度値付近の温度帯である。
【0041】
そこで、前述のように、温度調整部1cは、レプリカ交換の交換確率pに基づいて、最高温度値が範囲63の上限に近くなるように、当該最高温度値を決定する。最高温度値が範囲63の上限に近くなるように第1閾値が予め決定される。例えば、第1閾値を0.01とすると、温度調整部1cは、最高温度値である温度値Twijから温度降順で、初めて交換確率pが0.01よりも小さくなる温度値を、新たな最高温度値とする。
【0042】
これにより、新たな最高温度値を、
図2の温度値T
1に近い適切な温度値に決定することができる。そして、制御部1bにより、式(2)、(3)に基づいて、探索部1a1~1aNの温度値を適切に設定できる。すると、範囲63、すなわち、中間領域Rの温度帯に割り当てられる探索部の数が増え、探索部間の平均エネルギー値の差が小さくなることで、当該温度帯での交換確率が増加する。こうして、当該温度帯での探索部の温度遷移が促進され、探索部1a1~1aNによる求解性能を向上できる。
【0043】
また、グラフ60によれば、範囲63よりも低温側の温度帯では、各探索部は、ほぼ最低エネルギー値に到達している。更に、前述のように、範囲62よりも小さい最低温度値付近の温度帯では、探索部間でのレプリカ交換の発生頻度が比較的小さい傾向にある。
【0044】
そこで、温度調整部1cは、交換確率pに基づいて、例えば、最低温度値が範囲62の下限に近くなるように、当該最低温度値を決定する。最低温度値が範囲62の下限に近くなるように第2閾値が予め決定される。例えば、第2閾値を0.01とすると、温度調整部1cは、最低温度値0.1から温度昇順で、初めて交換確率が0.01よりも大きくなる温度値を、新たな最低温度値とする。
【0045】
これにより、新たな最低温度値を、適切に決定することができる。そして、制御部1bにより、式(2)、(3)に基づいて、探索部1a1~1aNの温度値を適切に設定できる。その結果、ほとんどレプリカ交換が発生しない低温側の温度帯が除去され、探索部が様々な温度値を取って解を探索できるようになる。例えば、各探索部に設定される範囲63、すなわち、中間領域Rの温度帯に多くの探索部を割り当てることができ、探索部間の平均エネルギー値の差が小さくなることで、当該温度帯での交換確率が増加する。こうして、状態遷移が促進され、探索部1a1~1aNによる求解性能を向上できる。
【0046】
ここで、交換確率pと比較する第1閾値、第2閾値は、経験的に決定される値であり、情報処理装置1の外部から温度調整部1cに設定されてもよい。第1閾値と第2閾値とは同じ値でもよいし、異なる値でもよい。
【0047】
また、温度調整部1cは、上記の方法により、最高温度値および最低温度値の何れか一方のみを決めてもよいし、最高温度値および最低温度値の両方を決めてもよい。何れの場合でも、探索部1a1~1aNに設定される温度値を適切に決定できる。
【0048】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図4は、第2の実施の形態の情報処理装置の例を示す図である。
【0049】
情報処理装置2は、レプリカ交換法を用いて、計算対象の最適化問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビットのそれぞれの値の組合せのうち、エネルギー関数が最小値となるときの各ビットの値を探索する。複数のビットの値の組合せは、イジングモデルの状態に相当し、そのうち、エネルギー関数が最小値となるものは、イジングモデルの基底状態に相当する。以下の説明では、イジングモデルの状態を、単にステートと呼ぶことがある。イジング型のエネルギー関数E(x)は、前述の式(1)で定義される。情報処理装置2は、イジングマシンや最適化装置などと呼ばれることもある。
【0050】
情報処理装置2は、例えば、FPGAなどの半導体集積回路を用いて実現される。情報処理装置2は、探索部2a1~2aN、温度制御部2b、温度調整部2cおよび全体制御部2dを有する。
【0051】
探索部2a1~2aNは、第1の実施の形態の探索部1a1~1aNの一例である。Nは、2以上の整数であり、探索部の数を示す。温度制御部2bは、第1の実施の形態の制御部1bの一例である。温度調整部2cは、第1の実施の形態の温度調整部1cの一例である。
【0052】
探索部2a1~2aNには、互いに異なる温度値T1~TNが設定される。温度値T1~TNは、例えば、予め与えられる最低温度値tmp_minおよび最高温度値tmp_maxを用いた式(2)、(3)に基づいて定められる。探索部2a1~2aNの各々は、式(1)で表されるイジング型の評価関数に基づく基底状態探索を下記のような回路により実現する。以下では、探索部2a1を主に説明するが、探索部2a2~2aNも同様の回路構成となる。
【0053】
探索部2a1は、ΔE計算部20a1,20a2,…,20an、セレクタ21、状態更新部22およびエネルギー計算部23を有する。nは、2以上の整数であり、探索部2a1における総ビット数を示す。
【0054】
ΔE計算部20a1~20anそれぞれは、1つのビットに対応し、何れかのビットの変化に伴い、変化したビットと自ビットとの重み係数に基づいて、自ビットが次に変化する場合のエネルギー変化値の計算を行う。ΔE計算部20a1~20anそれぞれは、計算したエネルギー変化値とノイズ値との比較に応じて、自ビットが次に変化することを許容するか否かを示すフラグをセレクタ21に出力する。ここで、ノイズ値は、温度値や乱数に基づいて求められる。温度値が大きいほど、ノイズ値の振幅が大きくなる。
【0055】
セレクタ21は、ΔE計算部20a1~20anそれぞれから受け付けたフラグに基づいて、次に変化することが許容されたビットの中から、次に変化させるビットを選択する。例えば、セレクタ21は、乱数を用いて、次に変化することが許容されたビットの中から、次に変化させるビットを選択する。セレクタ21は、選択したビットのインデックスjを状態更新部22に出力する。
【0056】
状態更新部22は、複数のビット、すなわち、ステートを保持する。状態更新部22は、ステートのうち、セレクタ21から受け付けたインデックスjに対応するビットを反転させることで、ステートを更新する。
【0057】
状態更新部22は、ΔE計算部20a1~20anにインデックスjを出力する。また、状態更新部22は、現在のステート、すなわち、ビット列x1,x2,…,xnをエネルギー計算部23に出力する。また、状態更新部22は、全体制御部2dにステートを出力する。
【0058】
エネルギー計算部23は、状態更新部22から受け付けた現在のステートと、エネルギー関数とに基づいて、現在のステートに対応するエネルギー値を計算する。エネルギー計算部23は、計算したエネルギー値を温度制御部2bおよび温度調整部2cに出力する。
【0059】
温度制御部2bは、探索部2a1~2aNそれぞれに異なる温度値T1~TNを設定する。例えば、温度制御部2bは、探索部のインデックスと、温度値のインデックスとを対応付けた第1対応情報および温度値のインデックスと温度値とを対応付けた第2対応情報を、温度制御部2b内のレジスタに保持することで、各探索部の温度値を管理する。温度制御部2bは、温度値を更新する場合、第2対応情報における温度値を更新する。
【0060】
温度制御部2bは、探索の全期間のうちの初期の所定期間では、予め与えられる最低温度値tmp_minおよび最高温度値tmp_maxを用いた式(2)、(3)に基づいて初期温度値T1~TNを計算し、当該初期温度値を用いる。ここで、探索の初期の所定期間は、温度調整用の期間、すなわち、温度調整期間である。
【0061】
温度制御部2bは、全体制御部2dから受け付ける起動信号に応じて、探索部2a1~2aNによる探索を開始させる。温度制御部2bは、探索部2a1~2aNそれぞれでの所定数のイタレーション後、または、探索開始から所定時間経過後に、探索部2a1~2aNそれぞれで得られたエネルギー値を取得する。温度制御部2bは、取得したエネルギー値に応じた交換確率pに基づいて、隣り合う温度値が設定される2つの探索部の組で、温度値を交換する。交換確率pは、式(4)により計算される。なお、温度制御部2bは、温度値に代えて、ステートを交換してもよい。
【0062】
温度制御部2bは、温度値T1~TNを温度調整部2cに出力する。温度制御部2bは、温度調整期間が終了すると、新たな最高温度値tmp_maxおよび新たな最低温度値tmp_minを温度調整部2cから取得する。温度制御部2bは、新たな最高温度値tmp_maxおよび最低温度値tmp_minを用いて、式(2)、(3)に基づいて、新たな温度値T1~TNを計算する。温度制御部2bは、新たな温度値T1~TNを、探索部2a1~2aNに設定し、温度調整期間後の探索を開始させる。
【0063】
温度調整部2cは、温度調整期間内では、レプリカ交換のタイミングごと、または、複数回のレプリカ交換のたびに、隣り合う温度値の組ごとにレプリカ交換の交換確率を計算し、計算した交換確率を保持する。温度調整部2cは、温度調整期間が終了すると、隣り合う温度値の組ごとに計算された交換確率に基づいて、最高温度値tmp_maxおよび最低温度値tmp_minを更新する。温度調整部2cは、新たな最高温度値tmp_maxおよび最低温度値tmp_minを、温度制御部2bに出力する。
【0064】
全体制御部2dは、外部から探索の開始を指示する起動信号を受け付けると、温度制御部2bに起動信号を出力する。
全体制御部2dは、探索部2a1~2aNによる探索の全期間が終了すると、探索部2a1~2aNそれぞれが保持するステートを取得する。全体制御部2dは、外部に終了信号を出力する。例えば、終了信号は、探索部2a1~2aNそれぞれが最終的に得られたステート、あるいは、当該ステートのうちの最小のエネルギー値に対応するステートを含む。全体制御部2dは、情報処理装置2に接続された表示装置に当該ステートの情報を表示させてもよいし、情報処理装置2とネットワークを介して接続された他のコンピュータに当該ステートの情報を送信してもよい。
【0065】
図5は、温度調整部の例を示す図である。
温度調整部2cは、交換確率計算部31、レジスタ32、交換確率閾値確認部33および温度決定部34を有する。
【0066】
交換確率計算部31は、探索部2a1~2aNそれぞれから取得したエネルギー値、および、温度制御部2bから取得した温度値T1~TNに基づいて、交換確率pを計算する。交換確率pは、式(4)により計算される。交換確率計算部31は、隣り合う温度値の組について、交換確率pを計算すればよい。交換確率計算部31は、温度値の各組に対して計算した交換確率pを、レジスタ32に格納する。
【0067】
ここで、交換確率計算部31は、温度調整期間における温度値の組ごとの交換確率pの平均値を求める。そのため、交換確率計算部31は、例えば、交換確率pを2回目以降に計算する場合には、前回までの平均値を用いて、今回までの平均値を計算し、レジスタ32に格納してもよい。
【0068】
レジスタ32は、交換確率計算部31により計算された、温度値の各組に対する交換確率p、または、交換確率pの平均値を記憶する。
交換確率閾値確認部33は、交換確率計算部31により計算された、温度調整期間における温度値の組ごとの交換確率pの平均値と、閾値との比較を行う。交換確率閾値確認部33には、前述の最高温度値を決定するための閾値(第1閾値)、および、最低温度値を決定するための閾値(第2閾値)が予め設定される。
【0069】
交換確率閾値確認部33は、温度調整期間における温度値の組ごとの交換確率pの平均値を、現在の最高温度値から温度値の降順に第1閾値と比較する。そして、交換確率閾値確認部33は、交換確率pの平均値が初めて第1閾値を下回ったときの温度値の組の大きい方の温度値のインデックスを、温度決定部34に出力する。当該インデックスは、新たな最高温度値のインデックスである。ただし、交換確率閾値確認部33は、交換確率pの平均値が初めて第1閾値を下回ったときの温度値の組の小さい方の温度値のインデックスを、温度決定部34に出力してもよい。
【0070】
また、交換確率閾値確認部33は、温度調整期間における温度値の組ごとの交換確率pの平均値を、現在の最低温度値から温度値の昇順に第2閾値と比較する。そして、交換確率閾値確認部33は、交換確率pの平均値が初めて第2閾値を上回ったときの温度値の組の小さい方の温度値のインデックスを、温度決定部34に出力する。当該インデックスは、新たな最低温度値のインデックスである。ただし、交換確率閾値確認部33は、交換確率pの平均値が初めて第2閾値を上回ったときの温度値の組の大きい方の温度値のインデックスを、温度決定部34に出力してもよい。
【0071】
温度決定部34は、現在の温度値T1~TNと、各温度値に対応するインデックスとを、温度制御部2bから取得する。温度決定部34は、新たな最高温度値のインデックスを交換確率閾値確認部33から取得すると、現在の温度値T1~TNのうち、新たな最高温度値のインデックスに対応する温度値を、新たな最高温度値と決定する。温度決定部34は、新たな最低温度値のインデックスを交換確率閾値確認部33から取得すると、現在の温度値T1~TNのうち、新たな最低温度値のインデックスに対応する温度値を、新たな最低温度値と決定する。温度決定部34は、新たな最高温度値および最低温度値を、温度制御部2bに出力する。
【0072】
図6は、温度値の調整例を示す図である。
図6の横軸は、イタレーション数を示す。単位期間ST1,ST2,ST3,ST4,ST5,…それぞれは、探索部2a1~2aNにより、ある温度での探索が行われる探索期間の1単位である。単位期間は、所定のイタレーション数、あるいは、所定の時間間隔として定められる。ある単位期間の終了時刻と、次の単位期間の開始時刻との間の時間帯で、レプリカ交換が行われる。このとき、前の単位期間で到達したステートは該当の探索部で保持され、次の単位期間での探索に引き継がれる。
図6の例では、探索の全期間のうち、単位期間ST1~ST4を含む期間が、温度調整期間である。また、単位期間ST5以降の期間が、温度調整後の確率的探索、すなわち、最適化処理が行われる期間である。なお、
図6では、エネルギー値を「eg値」と略記することがある。
【0073】
この場合、交換確率計算部31は、単位期間ST1,ST2,ST3,ST4それぞれの終了直後の時刻に、探索部2a1~2aNから取得したエネルギー値を基に、隣り合う温度値の組に対する交換確率を計算する。単位期間ST4の終了直後の時刻では、交換確率計算部31は、単位期間ST1,ST2,ST3,ST4それぞれで計算された交換確率の平均を、隣り合う温度値の組ごとに計算する(ステップS1)。なお、交換確率計算部31は、単位期間ST1,ST2,ST3,ST4それぞれの終了直後の時刻において、それまでの総単位期間での交換確率の平均を計算してもよい。また、交換確率計算部31は、エネルギー値として、探索部2a1~2aNそれぞれが該当の温度値で遷移した状態に対するエネルギー値の平均、すなわち、平均エネルギー値を、探索部2a1~2aNから取得してもよい。
【0074】
単位期間ST5の前に、交換確率閾値確認部33および温度決定部34は、ステップS1で計算された、隣り合う温度値の組ごとの交換確率の平均と閾値との比較に基づいて、新たな最高温度値および最低温度値を決定する(ステップS2)。そして、温度決定部34は、新たな最高温度値および最低温度値を、温度制御部2bに出力する。
【0075】
温度制御部2bは、新たな最高温度値および最低温度値を用いて、式(2)、(3)により温度値T1~TNを計算し、計算した温度値T1~TNを、それぞれ探索部2a1~2aNに設定する。そして、温度制御部2bは、探索部2a1~2aNによる単位期間ST5以降の最適化処理を開始させる。
【0076】
なお、温度調整期間に含まれる単位期間の数を4としたが、他の数でもよい。また、温度調整部2cによる交換確率の計算が、レプリカ交換のタイミングごとに行われるものとしたが、2回以上のレプリカ交換のたびに行われてもよい。
【0077】
また、
図6では、温度調整期間を最適化処理の全期間のうちの初期のみとしたが、全期間の途中に、複数回、温度調整期間を設けてもよい。また、温度調整期間を定期的に設けてもよい。
【0078】
次に、温度調整部2cによる交換確率の計算処理の例を詳細に説明する。
図7は、温度調整部の第1の処理例を示す図である。
交換確率計算部31は、探索部2a1~2aNそれぞれからエネルギー値eg_i_tを受け付ける。エネルギー値eg_i_tは、時刻tにおけるi番目の探索部のステートに対応するエネルギー値である。なお、エネルギー値eg_i_tは、該当の探索部における、時刻tの直前の単位期間での平均エネルギー値でもよい。
【0079】
また、交換確率計算部31は、温度制御部2bから、探索部2a1~2aNの温度値T_i_tを受け付ける。温度値T_i_tは、時刻tにおけるi番目の探索部の温度値である。
【0080】
交換確率計算部31は、レプリカ交換の交換確率p_i_tを、式(4)に基づいて計算する。具体的には、p_i_t=exp{(eg_i_t-eg_j_t)(1/(kT_i_t)-1/(kT_j_t))}である。ここで、右辺のi,jは、隣り合う温度値の組に対応するインデックスの組である。
【0081】
交換確率計算部31は、次の式(5)で平均交換確率p_ave_i_tを計算する。
【0082】
【0083】
αは予め与えられる0<α<1の実数であり、例えば、α=0.3である。
交換確率計算部31は、時刻tにおける平均交換確率p_ave_i_tを、レジスタ32に格納する。
【0084】
ここで、交換確率は、隣り合う温度値の組に対して計算されるので、全部でN-1個計算される。したがって、p_i_tおよびp_ave_i_tにおけるインデックスiは、0始まりとすると、0からN-2までの値を取る。
【0085】
例えば、交換確率計算部31は、単位期間ST1~ST4それぞれの終了直後の時刻で、p_i_tおよびp_ave_i_tを計算し、p_ave_i_tをレジスタ32に格納する。交換確率計算部31は、
図6の単位期間ST4の終了直後の時刻で計算されたp_ave_i_tを、交換確率閾値確認部33に出力する。
【0086】
図8は、温度調整部の第2の処理例を示す図である。
レジスタ32は、交換確率p_i_tを、一定期間M(すなわち、t-M+1~tの期間)の分、保存してもよい。この場合、交換確率計算部31は次の処理を実行する。
【0087】
交換確率計算部31は、探索部2a1~2aNそれぞれからエネルギー値eg_i_tを受け付ける。エネルギー値eg_i_tは、該当の探索部における、時刻tの直前の単位期間での平均エネルギー値でもよい。また、交換確率計算部31は、温度制御部2bから、探索部2a1~2aNの温度値T_i_tを受け付ける。
【0088】
交換確率計算部31は、レプリカ交換の交換確率p_i_tを、式(4)に基づいて計算する。具体的には、p_i_t=exp{(eg_i_t-eg_j_t)(1/(kT_i_t)-1/(kT_j_t))}である。ここで、右辺のi,jは、隣り合う温度値の組に対応するインデックスの組である。交換確率計算部31は、計算した交換確率p_i_tを、レジスタ32に格納する。
【0089】
交換確率計算部31は、次の式(6)で平均交換確率p_ave_i_tを計算する。
【0090】
【0091】
レジスタ32は、時刻t-M+1から時刻tまでの交換確率p_i_tを保存する。
交換確率は、隣り合う温度値の組に対して計算されるので、全部でN-1個計算される。したがって、p_i_tにおけるインデックスiは、0始まりとすると、0からN-2までの値を取る。
【0092】
例えば、交換確率計算部31は、単位期間ST1~ST4それぞれの終了直後の時刻で、p_i_tを計算し、p_i_tをレジスタ32に格納する。交換確率計算部31は、
図6の単位期間ST4の終了直後の時刻でp_ave_i_tを計算し、p_ave_i_tを交換確率閾値確認部33に出力する。
【0093】
次に、情報処理装置2の処理手順の例を説明する。
図9は、レプリカ交換の全体制御処理の例を示すフローチャートである。
(S1)全体制御部2dは、外部から入力データとして初期温度値を示す温度情報を取得し、当該温度情報とともに起動信号を温度制御部2bに出力する。
【0094】
(S2)温度制御部2bは、全体制御部2dからの起動信号を受けて、探索部2a1~2aNそれぞれに異なる初期温度値T1~TNを設定し、確率的探索を実行させる。探索部2a1~2aNそれぞれによる探索処理の詳細は後述される。
【0095】
(S3)温度調整部2cは、探索部2a1~2aNそれぞれで単位期間の探索が実行されると、探索部2a1~2aNそれぞれで計算されたエネルギー値の取得を含むデータ収集処理を行う。データ収集処理の詳細は後述される。
【0096】
(S4)探索部2a1~2aNは、隣接探索部毎のエネルギー値を温度制御部2bに伝達する。すなわち、温度制御部2bは、探索部2a1~2aNで計算されたエネルギー値を、温度値が隣り合う探索部毎に取得する。
【0097】
(S5)温度制御部2bは、式(4)に基づく交換確率を計算し、当該交換確率により温度値の交換制御処理を行う。温度制御部2bは、温度が隣り合う探索部のペア毎に、温度値の交換制御処理を行う。交換制御処理の詳細は後述される。
【0098】
(S6)温度調整部2cは、次の単位期間が温度調整期間内であるか否かを判定する。次の単位期間が温度調整期間内である場合、温度調整部2cは、ステップS2に処理を進める。次の単位期間が温度調整期間内ではない場合、温度調整部2cは、ステップS7に処理を進める。
【0099】
(S7)温度調整部2cは、交換確率の閾値に基づく温度計算を行う。すなわち、交換確率閾値確認部33は、交換確率計算部31から隣り合う温度値の組ごとの平均交換確率を取得する。交換確率閾値確認部33は、隣り合う温度値の組ごとの平均交換確率と、温度降順での第1閾値との比較により、新たな最高温度値のインデックスを取得し、温度決定部34に出力する。交換確率閾値確認部33は、隣り合う温度値の組ごとの平均交換確率と、温度昇順での第2閾値との比較により、新たな最低温度値のインデックスを取得し、温度決定部34に出力する。温度決定部34は、新たな最高温度値のインデックスに対応する温度値を新たな最高温度値と決定し、温度制御部2bに出力する。また、温度決定部34は、新たな最低温度値のインデックスに対応する温度値を新たな最低温度値と決定し、温度制御部2bに出力する。
【0100】
(S8)温度制御部2bは、更新後の最高温度値および最低温度値を用いて、式(2)、(3)により更新後の温度値T1~TNを計算する。温度制御部2bは、探索部2a1~2aNに、更新後の温度値T1~TNを設定し、探索部2a1~2aNそれぞれによる確率的探索を実行させる。
【0101】
(S9)探索部2a1~2aNは、隣接探索部毎のエネルギー値を温度制御部2bに伝達する。すなわち、温度制御部2bは、探索部2a1~2aNで計算されたエネルギー値を、温度値が隣り合う探索部毎に取得する。
【0102】
(S10)温度制御部2bは、式(4)に基づく交換確率を計算し、当該交換確率により温度値の交換制御処理を行う。温度制御部2bは、温度が隣り合う探索部のペア毎に、温度値の交換制御処理を行う。
【0103】
(S11)探索部2a1~2aNは、規定回数、最低温度値の探索部におけるステートに変化がなくなったか否かを判定する。最低温度値の探索部におけるステートに変化がなくなると、探索部2a1~2aNは、全体制御部2dにステートを出力し、レプリカ交換の全体制御処理を終了する。最低温度値の探索部におけるビットステートに変化がある場合、探索部2a1~2aNは、ステップS8に処理を進め、確率的探索の処理を継続する。
【0104】
全体制御部2dは、探索部2a1~2aNから最終的に得られたステートを取得すると、外部に終了信号を出力する。例えば、終了信号は、探索部2a1~2aNそれぞれが最終的に得られたステート、あるいは、当該ステートのうちの最小のエネルギー値に対応するステートを含む。全体制御部2dは、情報処理装置2に接続された表示装置に当該ステートの情報を表示させてもよいし、情報処理装置2とネットワークを介して接続された他のコンピュータに当該ステートの情報を送信してもよい。
【0105】
図10は、探索処理例を示すフローチャートである。
探索処理は、ステップS2,S8に相当する。
(S20)温度制御部2bは、探索部2a1~2aNに互いに異なる温度値を設定する。探索部2a1~2aNそれぞれに設定される初期温度値は、問題などに応じて予め定められる。ステップS7で温度値が更新された後は、更新後の温度値が探索部2a1~2aNに設定される。
【0106】
(S21)探索部2a1~2aNそれぞれは、ビットごとにエネルギー変化値ΔEを計算する。
(S22)探索部2a1~2aNそれぞれは、ビットごとのエネルギー変化値ΔEに基づいて、反転させるビットを選択する。
【0107】
(S23)探索部2a1~2aNそれぞれは、ステップS22で選択されたビットを反転させることでステートを更新する。
(S24)探索部2a1~2aNそれぞれは、単位期間が終了したか否かを判定する。単位期間が終了した場合、探索部2a1~2aNそれぞれは、ステップS25に処理を進める。単位期間が終了していない場合、探索部2a1~2aNそれぞれは、ステップS21に処理を進める。ここで、単位期間が終了したか否かの判定は、前述のように、単位期間に対応する規定のイタレーション回数に到達したか、または、単位期間に対応する規定時間が経過したか否かにより判定される。
【0108】
(S25)探索部2a1~2aNそれぞれは、現在のステートに対応するエネルギー値を計算する。探索部2a1~2aNそれぞれは、計算したエネルギー値を、温度制御部2bおよび温度調整部2cに出力し、探索処理を終了する。
【0109】
なお、温度調整部2cに対して、平均エネルギー値を提供する場合、探索部2a1~2aNそれぞれは、単位期間内で複数回のエネルギー値の計算を行い、当該単位期間内での平均エネルギー値を計算して、温度調整部2cに出力してもよい。
【0110】
図11は、データ収集処理例を示すフローチャートである。
データ収集処理は、ステップS3に相当する。
(S30)交換確率計算部31は、データ収集タイミングであるか否かを判定する。データ収集タイミングである場合、交換確率計算部31は、ステップS31に処理を進める。データ収集タイミングでない場合、交換確率計算部31は、データ収集処理を終了する。ここで、データ収集タイミングは、探索部2a1~2aNの単位期間での探索処理の完了ごとのタイミングでもよいし、2以上の単位期間での探索処理の完了ごとのタイミングでもよい。データ収集タイミングをどのようなタイミングとするかは、温度調整部2cに予め設定される。
【0111】
(S31)交換確率計算部31は、温度値の全ての組でステップS32を繰り返し実行する。ここで、温度値の組は、隣り合う2つの温度値の組である。
(S32)交換確率計算部31は、隣り合う2つの温度値の組に対して、探索部2a1~2aNから取得したエネルギー値および式(4)に基づく交換確率を計算する。交換確率計算部31は、計算した交換確率をレジスタ32に格納する。前述のように、交換確率計算部31は、ステップS32において、平均交換確率の計算まで行ってもよい。その場合、交換確率計算部31は、計算した平均交換確率を、レジスタ32に格納する。
【0112】
(S33)交換確率計算部31は、温度値の全ての組でステップS32を実行すると、データ収集処理を終了する。
図12は、交換制御処理例を示すフローチャートである。
【0113】
交換制御処理は、ステップS5,S10に相当する。
(S40)温度制御部2bは、温度値昇順(または降順)での偶数番目の探索部に関し、式(4)の交換確率に基づいて、隣り合う上位(または下位)温度の探索部と温度値を交換するか否かを判定する。温度値の交換の判定は、探索部のペア毎に行われる。温度値を交換すると判定された探索部のペアがある場合、温度制御部2bは、ステップS41に処理を進める。温度値を交換すると判定された探索部のペアがない場合、温度制御部2bは、ステップS42に処理を進める。
【0114】
(S41)温度制御部2bは、ステップS40で温度を交換すると判定された探索部のペアについて、温度を交換する。
(S42)温度制御部2bは、温度値昇順(または降順)での奇数番目の探索部に関し、式(4)の交換確率に基づいて、隣り合う上位(または下位)温度の探索部と温度値を交換するか否かを判定する。温度値の交換の判定は、探索部のペア毎に行われる。温度制御部2bは、ステップS40において、偶数番目の探索部について上位温度の探索部と温度値を交換するか否かを判定した場合、ステップS42では奇数番目の探索部について上位温度の探索部と温度値を交換するか否かを判定する。温度制御部2bは、ステップS40において、偶数番目の探索部について下位温度の探索部と温度値を交換するか否かを判定した場合、ステップS42では奇数番目の探索部について下位温度の探索部と温度値を交換するか否かを判定する。温度値を交換すると判定された探索部のペアがある場合、温度制御部2bは、ステップS43に処理を進める。温度値を交換すると判定された探索部のペアがない場合、温度制御部2bは、交換制御処理を終了する。
【0115】
(S43)温度制御部2bは、ステップS42で温度値を交換すると判定された探索部のペアについて、温度値を交換する。そして、温度制御部2bは、交換制御処理を終了する。
【0116】
なお、上記の例では、偶数番目の探索部の次に奇数番目の探索部に着目して、温度値の交換制御を行うものとしたが、奇数番目の探索部の次に偶数番目の探索部に着目して、温度値の交換制御を行ってもよい。すなわち、ステップS42,S43の後に、ステップS40,S41を実行してもよい。また、前述のように、温度制御部2bは、温度値の代わりにステートを交換してもよい。
【0117】
ここで、
図3で説明したように、レプリカ交換の交換確率が小さくなる、グラフ60の範囲63の温度帯が存在する。一方、グラフ60の範囲64の温度帯では、同じ温度帯に属する探索部同士だけで頻繁に交換が行われる傾向にある。
【0118】
そこで、前述のように、温度調整部2cは、レプリカ交換の交換確率pに基づいて、最高温度値が範囲63の上限に近くなるように、当該最高温度値を決定する。例えば、最高温度値を決定するための第1閾値を0.01とすると、温度調整部2cは、初期の最高温度値である温度値Twijから温度降順で、初めて交換確率pが0.01よりも小さくなる温度値を、新たな最高温度値とする。
【0119】
また、グラフ60の範囲62よりも低温側の温度帯では、探索部間でのレプリカ交換の発生頻度が比較的小さい傾向にある。
そこで、温度調整部2cは、交換確率pに基づいて、最低温度値が範囲62の下限に近くなるように、新たな最低温度値を決定する。例えば、最低温度値を決定するための第2閾値を0.01とすると、温度調整部2cは、初期の最低温度値から温度昇順で、初めて交換確率が0.01よりも大きくなる温度値を、新たな最低温度値とする。
【0120】
すなわち、温度調整部2cは、最低温度値付近および最高温度値付近の各領域におけるレプリカ交換確率に注目する。まず、最低温度値から高い温度値に向かうにつれて交換確率は大きくなるため、ある閾値よりも交換確率が大きくなったところを新たな最低温度値とすることで、最低温度値付近での交換確率が閾値以下の領域に属する探索部をなくすことができる。また、最高温度値から低い温度値に向かうにつれて交換確率は小さくなるため、ある閾値よりも交換確率が小さくなったところを新たな最高温度値とすることで、最高温度値付近での交換確率が閾値以上の領域に属する探索部をなくすことができる。
【0121】
このように、新たな最高温度値および最低温度値を、適切に設定することができる。そして、温度制御部2bにより、式(2)、(3)に基づいて、探索部2a1~2aNの温度値を適切に設定できる。例えば、スピングラスや係数が拡大スケーリングされた問題でも適切な温度を設定することが可能になる。
【0122】
その結果、初期温度値における最高温度近傍の温度帯および最低温度近傍の温度帯に割り当てられる探索部が削減され、中間の温度帯に多くの探索部を割り当てられるようになる。すると、中間の温度帯に属する温度値が設定された探索部間での平均エネルギー値の差が比較的小さくなり、レプリカ交換の交換確率が増加する。これにより、探索部の温度遷移を促進し、求解性能を向上させることができる。
【0123】
また、スピングラスなどの問題に応じた温度値を、情報処理装置2により適応的に自動決定できるので、温度値の調整のユーザによる手間を省くことが可能になる。すなわち、温度値の調整を容易化できる。
【0124】
以上をまとめると、情報処理装置2は例えば次の機能を有する。
温度調整部2cは、レプリカ交換の交換確率と閾値との比較を行い、当該比較に応じて新たな最高温度値および最低温度値の両方または何れか一方を決定する。これにより、例えば該確率が低い低温度帯や該確率が高い高温度帯などの不要な温度帯を削減して、温度値を適切に決定できる。また、スピングラスなどの問題で交換確率が低くなる中間温度帯での交換確率を大きくすることができ、温度遷移の促進およびそれに伴う状態遷移の促進を図れ、求解性能を向上できる。
【0125】
温度調整部2cは、温度値の降順に、探索部の組に設定された温度値の組に対応する交換確率を第1閾値と比較し、交換確率が最初に第1閾値よりも小さくなる探索部の組の交換確率に基づいて、最高温度値を決定する。すなわち、温度調整部2cは、現在の最高温度値からの温度降順で、探索部の組の交換確率が最初に第1閾値よりも小さくなる温度値を最高温度値とする。例えば、温度調整部2cは、交換確率が最初に第1閾値よりも小さくなる探索部の組に対応する温度値の組に基づいて、最高温度値を決定する。1つの例では、温度調整部2cは、当該温度値の組に属する何れか1つの温度値を最高温度値とする。あるいは、温度調整部2cは、当該温度値の組に属する各温度値から計算される温度値、例えば、中間の温度値などを最高温度値とすることも考えられる。
【0126】
これにより、交換確率が第1閾値以上となる初期最高温度近傍の温度帯を省け、交換確率が低い中間温度帯での交換確率を向上できる。その結果、各探索部の温度遷移が促進され、求解性能が向上する。
【0127】
また、温度調整部2cは、温度値の昇順に、探索部の組に設定された温度値の組に対応する交換確率を第2閾値と比較し、交換確率が最初に第2閾値よりも大きくなる探索部の組の交換確率に基づいて、最低温度値を決定する。すなわち、温度調整部2cは、現在の最低温度値からの温度昇順で、探索部の組の交換確率が最初に第2閾値よりも大きくなる温度値を最低温度値とする。例えば、温度調整部2cは、交換確率が最初に第2閾値よりも大きくなる探索部の組に対応する温度値の組に基づいて、最低温度値を決定する。1つの例では、温度調整部2cは、当該温度値の組に属する何れか1つの温度値を最低温度値とする。あるいは、温度調整部2cは、当該温度値の組に属する各温度値から計算される温度値、例えば、中間の温度値などを最低温度値とすることも考えられる。
【0128】
これにより、交換確率が第2閾値以下となる初期最低温度値近傍の温度帯を省け、交換確率が低い中間温度帯での交換確率を向上できる。その結果、各探索部の温度遷移が促進され、求解性能が向上する。
【0129】
なお、温度調整部2cにより、最高温度値および最低温度値の両方を決定すると一層効果的である。
また、温度調整部2cは、所定期間内に得られた複数の交換確率の平均値に基づいて、温度値を決定する。交換確率を平均化することで、該当の温度値の組に対する交換確率を適切に評価でき、温度値を適切に決定できる。
【0130】
また、温度調整部2cは、探索部の組に対応する温度値の組と当該探索部の組で得られた平均エネルギー値の組とに基づいて、交換確率を計算する。これにより、該当の温度値の組が設定された探索部の組で得られるエネルギー値の傾向を適切に評価でき、温度値を適切に決定できる。
【0131】
更に、温度制御部2bは、温度調整部2cにより決定された最高温度値および最低温度値の両方または何れか一方に基づいて、探索部2a1~2aNに設定する温度値T1~TNを更新する。これにより、全ての探索部2a1~2aNに設定される全ての温度値T1~TNを適切に決定することができる。なお、温度制御部2bは、温度値T1~TNの更新に、例えば、式(2)、(3)を用いることができる。また、温度調整部2cが、最高温度値および最低温度値に基づく温度値T1~TNの計算を行い、温度制御部2bに出力してもよい。
【0132】
[第3の実施の形態]
次に第3の実施の形態を説明する。前述の第1,第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0133】
図13は、第3の実施の形態の情報処理システムの例を示す図である。
情報処理システム3は、情報処理装置4および情報処理装置5を有する。情報処理装置4,5は、所定のIO(Input / Output)インタフェースを介して接続される。
【0134】
情報処理装置4は、例えばFPGAなどの半導体集積回路により実現される。情報処理装置4は、探索部4a1,4a2,…,4aNおよび制御部4bを有する。探索部4a1~4aNは、第1の実施の形態の探索部1a1~1aNに対応し、探索部1a1~1aNと同じ機能を有する。制御部4bは、第1の実施の形態の制御部1bに対応し、制御部1bと同じ機能を有する。
【0135】
情報処理装置5は、例えばコンピュータにより実現される。温度調整部5aを有する。温度調整部5aは、第1の実施の形態の温度調整部1cに対応し、温度調整部1cと同じ機能を有する。
【0136】
温度調整部5aは、制御部4bにより探索部4a1~4aNに設定されている温度値T1~TNを情報処理装置5から取得する。温度調整部5aは、探索部4a1~4aNで得られた複数のエネルギー値を情報処理装置5から取得する。温度調整部5aは、探索部の組に対応するエネルギー値の組に基づいてレプリカ交換の交換確率を計算し、計算した交換確率に基づいて、制御部4bにより探索部4a1~4aNに設定される温度値を決定する。具体的な温度値の決定方法には、
図3で例示した方法を用いることができる。
【0137】
図13で示されるように、第3の実施の形態では、探索部4a1,4a2,…,4aNおよび制御部4bが情報処理装置4に設けられ、温度調整部5aが、情報処理装置4とは異なる情報処理装置5に設けられる点が第1,第2の実施の形態と異なる。
【0138】
次に、情報処理装置5のハードウェアを例示する。
図14は、情報処理装置のハードウェア例を示す図である。
情報処理装置5は、CPU101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、IOインタフェース104、画像信号処理部105、入力信号処理部106、媒体リーダ107およびNIC(Network Interface Card)108を有する。
【0139】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置5は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。温度調整部5aは、CPU101により実現される。
【0140】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置5は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。RAM102は、第2の実施の形態のレジスタ32に格納されるデータを記憶する記憶部として用いられる。
【0141】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置5は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0142】
IOインタフェース104は、情報処理装置4と接続され、CPU101からの命令に従って、情報処理装置4に対するデータの入出力を行う。例えば、IOインタフェース104は、CPU101の命令に応じて、RAM102のデータを情報処理装置4のレジスタまたはメモリに書き込んだり、情報処理装置4からデータを読み出して、RAM102に書き込んだりする。IOインタフェース104としては、例えば、PCI-e(Peripheral Component Interconnect - Express)などが用いられる。
【0143】
画像信号処理部105は、CPU101からの命令に従って、情報処理装置5に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0144】
入力信号処理部106は、情報処理装置5に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置5に、複数の種類の入力デバイスが接続されていてもよい。
【0145】
媒体リーダ107は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0146】
媒体リーダ107は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0147】
NIC108は、ネットワーク6に接続され、ネットワーク6を介して他のコンピュータと通信を行うインタフェースである。NIC108は、例えば、ネットワーク6に含まれるスイッチやルータなどの通信装置とケーブルで接続される。
【0148】
情報処理装置4は、エネルギー関数の情報に基づいて、レプリカ交換法による基底状態探索をハードウェアにより行うアクセラレータである。情報処理装置4は、イジングマシン、最適化装置などと呼ばれてもよい。情報処理装置4に代えて、CPU101が所定のソフトウェアを実行することで、レプリカ交換法を実行する複数の探索部や温度制御部の機能を実現することもできる。
【0149】
第3の実施の形態の情報処理システム3においても、温度調整部5aにより、温度調整部1cや温度調整部2cと同様にして、制御部4bにより探索部4a1~4aNに設定される温度値が調整される。これにより、第1,第2の実施の形態と同様に、探索部4a1~4aNに設定される温度値を適切に決定できる。
【0150】
なお、第2の実施の形態の探索部2a1~2aN、温度制御部2b、温度調整部2cおよび全体制御部2dの機能は、CPU101にプログラムを実行させることで実現されてもよい。また、第3の実施の形態の温度調整部5aの機能は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0151】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0152】
1 情報処理装置
1a1,1a2,…,1aN 探索部
1b 制御部
1c 温度調整部