(57)【要約】【課題】計算速度の低下を抑制する。【解決手段】記憶部１１ｂ１〜１１ｂｎは、重み係数Ｗ１１〜ＷＮＮを２つ以上のビットに関する重み係数をそれぞれ含むように分割したｎ個の重み係数群のうちの１つをそれぞれ記憶し、ビット値演算回路部１１ｃ１〜１１ｃｎは、重み係数群と更新ビットの値と識別情報と熱励起エネルギーとに基づき、上記２つ以上のビットの各々について更新を許容するか否かを判定した判定結果（フラグ情報）と更新を許容する許容ビットの更新後の値を出力し、選択回路部１１ｄ１〜１１ｄｎは、フラグ情報に基づき許容ビットを１つ選択し、その許容ビットについてのフラグ情報、更新後の値及び識別情報を含む状態信号を出力し、選択回路部１２ａは、選択回路部１１ｄ１〜１１ｄｎが出力する状態信号に含まれるフラグ情報に基づき更新ビットを決定し、更新ビットの値と識別情報を、最適化装置１１ａ１〜１１ａｎに供給する。【選択図】図１
2020027426.tif 000002
【特許請求の範囲】
【請求項１】
計算対象の問題を変換したイジングモデルに含まれる全スピンに対応する全ビットの間の相互作用の大きさを示す複数の重み係数を、２つ以上のビットに関する重み係数をそれぞれ含むように分割した、ｎ（ｎは２以上の整数）個の重み係数群のうちの１つの重み係数群を記憶する記憶部と、
前記１つの重み係数群と、前記全ビットのうち更新された更新ビットの値と、前記更新ビットを識別する第１の識別情報に基づいて、前記２つ以上のビットの何れか１つが変化することによる前記イジングモデルのエネルギー変化を前記２つ以上のビットのそれぞれについて算出し、乱数と温度パラメータとに基づいて決定される熱励起エネルギーと、前記エネルギー変化との大小関係に基づいて、前記２つ以上のビットのそれぞれについて更新を許容するか否かを判定し、更新を許容するか否かの判定結果を示すフラグ情報と、前記２つ以上のビットのうち更新が許容された許容ビットの更新後の値を出力するビット値演算回路部と、
前記フラグ情報に基づいて、１つの前記許容ビットを選択し、選択した前記許容ビットについての前記フラグ情報、前記更新後の値及び、選択した前記許容ビットを識別する第２の識別情報と、を含む状態信号を出力する第１の選択回路部と、
をそれぞれが有し、互いに異なる前記１つの重み係数群に基づいて、前記状態信号をそれぞれ出力するｎ個の最適化装置と、
前記ｎ個の最適化装置の前記第１の選択回路部がそれぞれ出力する前記状態信号に含まれる前記フラグ情報に基づいて前記更新ビットを決定し、前記更新ビットの値と、前記更新ビットを識別する前記第１の識別情報を、前記ｎ個の最適化装置のそれぞれに供給する第２の選択回路部と、
を有する最適化システム。
【請求項２】
前記ｎは、前記全ビットの数の二乗を、前記ｎ個の最適化装置の前記記憶部がそれぞれ記憶可能な前記重み係数の数の上限で割った値以上であり、
前記ｎ個の最適化装置の前記記憶部は、前記全ビットの数を前記ｎで割った数のビットに関する前記重み係数を含む前記１つの重み係数群をそれぞれ記憶する、
請求項１に記載の最適化システム。
【請求項３】
前記第２の選択回路部は、前記更新ビットの値と前記第１の識別情報を、前記第２の選択回路部に設けられた第１のパスを介して、前記ｎ個の最適化装置のそれぞれの前記第１の選択回路部に供給し、
前記ｎ個の最適化装置のそれぞれの前記第１の選択回路部は、前記第２の選択回路部から供給された前記更新ビットの値と前記第１の識別情報を、前記第１の選択回路部に設けられた第２のパスを介して、自身と同じ最適化装置に含まれる前記ビット値演算回路部に供給する、
請求項１または２に記載の最適化システム。
【請求項４】
計算対象の問題を変換したイジングモデルに含まれる全スピンに対応する全ビットの間の相互作用の大きさを示す複数の重み係数を、２つ以上のビットに関する重み係数をそれぞれ含むように分割した、ｎ（ｎは２以上の整数）個の重み係数群のうちの１つの重み係数群を記憶する記憶部と、前記１つの重み係数群と、前記全ビットのうち更新された更新ビットの値と、前記更新ビットを識別する第１の識別情報に基づいて、前記２つ以上のビットの何れか１つが変化することによる前記イジングモデルのエネルギー変化を前記２つ以上のビットのそれぞれについて算出し、乱数と温度パラメータとに基づいて決定される熱励起エネルギーと、前記エネルギー変化との大小関係に基づいて、前記２つ以上のビットのそれぞれについて更新を許容するか否かを判定し、更新を許容するか否かの判定結果を示すフラグ情報と、前記２つ以上のビットのうち更新が許容された許容ビットの更新後の値を出力するビット値演算回路部と、前記フラグ情報に基づいて、１つの前記許容ビットを選択し、選択した前記許容ビットについての前記フラグ情報、前記更新後の値及び、選択した前記許容ビットを識別する第２の識別情報と、を含む状態信号を出力する第１の選択回路部と、をそれぞれが有し、互いに異なる前記１つの重み係数群に基づいて、前記状態信号をそれぞれ出力するｎ個の最適化装置と、
前記ｎ個の最適化装置の前記第１の選択回路部がそれぞれ出力する前記状態信号に含まれる前記フラグ情報に基づいて前記更新ビットを決定し、前記更新ビットの値と、前記更新ビットを識別する前記第１の識別情報を、前記ｎ個の最適化装置のそれぞれに供給する第２の選択回路部と、
を有する最適化システムに対して、
制御装置が、前記複数の重み係数を前記ｎ個の重み係数群に分割し、分割した前記ｎ個の重み係数群のそれぞれを、前記ｎ個の最適化装置のうち、互いに異なる最適化装置の前記記憶部に記憶し、
前記制御装置が、前記温度パラメータの大きさを制御する、
最適化システムの制御方法。
【請求項５】
計算対象の問題を変換したイジングモデルに含まれる全スピンに対応する全ビットの間の相互作用の大きさを示す複数の重み係数を、２つ以上のビットに関する重み係数をそれぞれ含むように分割した、ｎ（ｎは２以上の整数）個の重み係数群のうちの１つの重み係数群を記憶する記憶部と、前記１つの重み係数群と、前記全ビットのうち更新された更新ビットの値と、前記更新ビットを識別する第１の識別情報に基づいて、前記２つ以上のビットの何れか１つが変化することによる前記イジングモデルのエネルギー変化を前記２つ以上のビットのそれぞれについて算出し、乱数と温度パラメータとに基づいて決定される熱励起エネルギーと、前記エネルギー変化との大小関係に基づいて、前記２つ以上のビットのそれぞれについて更新を許容するか否かを判定し、更新を許容するか否かの判定結果を示すフラグ情報と、前記２つ以上のビットのうち更新が許容された許容ビットの更新後の値を出力するビット値演算回路部と、前記フラグ情報に基づいて、１つの前記許容ビットを選択し、選択した前記許容ビットについての前記フラグ情報、前記更新後の値及び、選択した前記許容ビットを識別する第２の識別情報と、を含む状態信号を出力する第１の選択回路部と、をそれぞれが有し、互いに異なる前記１つの重み係数群に基づいて、前記状態信号をそれぞれ出力するｎ個の最適化装置と、
前記ｎ個の最適化装置の前記第１の選択回路部がそれぞれ出力する前記状態信号に含まれる前記フラグ情報に基づいて前記更新ビットを決定し、前記更新ビットの値と、前記更新ビットを識別する前記第１の識別情報を、前記ｎ個の最適化装置のそれぞれに供給する第２の選択回路部と、
を有する最適化システムに対して、
前記複数の重み係数を前記ｎ個の重み係数群に分割し、分割した前記ｎ個の重み係数群のそれぞれを、前記ｎ個の最適化装置のうち、互いに異なる最適化装置の前記記憶部に記憶し、
前記温度パラメータの大きさを制御する、
処理をコンピュータに実行させる最適化システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化システム、最適化システムの制御方法及び最適化システムの制御プログラムに関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
最適化装置は、たとえば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビットのそれぞれが、他のビットの値と、他のビットと自身のビットとの相互作用の大きさを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の値（以下エネルギーという）の最小値が得られる各ビットの値の組み合わせを、解として求める。
【０００４】
従来、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでエネルギーが最小となる各ビットの値の組み合わせを計算する最適化装置がある（たとえば、特許文献１及び非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−２１９９４８号公報
【特許文献２】特開平５−２５９８４７号公報
【非特許文献】
【０００６】
【非特許文献１】Satoshi Matsubara et al., “Ising-Model Optimizer with Parallel-Trial Bit-Sieve Engine”, CISIS-2017, Pages 432-438
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、問題の規模の増大に応じてビット数が増えると重み係数の数も増加し、従来の最適化装置（たとえば、１チップの半導体集積回路）では内部の記憶部に重み係数を記憶しきれなくなる。最適化装置の外部のメモリに重み係数を記憶しておく方法があるが、メモリからの重み係数の読み出しにかかる時間により計算速度が低下してしまう問題がある。
【０００８】
１つの側面では、本発明は、計算速度の低下を抑制可能な最適化システム、最適化システムの制御方法及び最適化システムの制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの実施態様では、計算対象の問題を変換したイジングモデルに含まれる全スピンに対応する全ビットの間の相互作用の大きさを示す複数の重み係数を、２つ以上のビットに関する重み係数をそれぞれ含むように分割した、ｎ（ｎは２以上の整数）個の重み係数群のうちの１つの重み係数群を記憶する記憶部と、前記１つの重み係数群と、前記全ビットのうち更新された更新ビットの値と、前記更新ビットを識別する第１の識別情報に基づいて、前記２つ以上のビットの何れか１つが変化することによる前記イジングモデルのエネルギー変化を前記２つ以上のビットのそれぞれについて算出し、乱数と温度パラメータとに基づいて決定される熱励起エネルギーと、前記エネルギー変化との大小関係に基づいて、前記２つ以上のビットのそれぞれについて更新を許容するか否かを判定し、更新を許容するか否かの判定結果を示すフラグ情報と、前記２つ以上のビットのうち更新が許容された許容ビットの更新後の値を出力するビット値演算回路部と、前記フラグ情報に基づいて、１つの前記許容ビットを選択し、選択した前記許容ビットについての前記フラグ情報、前記更新後の値及び、選択した前記許容ビットを識別する第２の識別情報と、を含む状態信号を出力する第１の選択回路部と、をそれぞれが有し、互いに異なる前記１つの重み係数群に基づいて、前記状態信号をそれぞれ出力するｎ個の最適化装置と、前記ｎ個の最適化装置の前記第１の選択回路部がそれぞれ出力する前記状態信号に含まれる前記フラグ情報に基づいて前記更新ビットを決定し、前記更新ビットの値と、前記更新ビットを識別する前記第１の識別情報を、前記ｎ個の最適化装置のそれぞれに供給する第２の選択回路部と、を有する最適化システムが提供される。
【００１０】
また、１つの実施態様では、最適化システムの制御方法が提供される。また、１つの実施態様では、最適化システムの制御プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、計算速度の低下を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の最適化システムの一例を示す図である。
【図２】ビット値演算回路の一例を示す図である。
【図３】選択回路部の一例を示す図である。
【図４】選択回路の一例を示す図である。
【図５】第１の実施の形態の最適化システムの動作の一例の流れを示すフローチャートである。
【図６】第２の実施の形態の最適化システムの一例を示す図である。
【図７】制御装置のハードウェア例を示す図である。
【図８】制御装置による最適化システムの制御方法の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化システムは、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビットのそれぞれの値の組み合わせ（状態）のうち、エネルギー関数が最小値となるときの各ビットの値（基底状態）を探索するものである。
【００１４】
イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００１５】
【数１】
2020027426.tif 000003
【００１６】
右辺の１項目は、イジングモデルに含まれる全ビットから選択可能な２つのビットの全組み合わせについて、漏れと重複なく、２つのビットの値（０または１）と結合係数との積を積算したものである。ｘｉは、ｉ番目のビットの値を表す変数（状態変数とも呼ばれる）、ｘｊは、ｊ番目のビットの値を表す変数であり、Ｗｉｊは、ｉ番目とｊ番目のビットの相互作用の大きさを示す重み係数である。なお、Ｗｉｉ＝０である。また、Ｗｉｊ＝Ｗｊｉであることが多い（つまり、重み係数による係数行列は対称行列である場合が多い）。
【００１７】
右辺の２項目は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。ｂｉは、ｉ番目のビットのバイアス係数を示している。
また、変数ｘｉの値が変化して１−ｘｉとなると、変数ｘｉの増加分は、Δｘｉ＝（１−ｘｉ）−ｘｉ＝１−２ｘｉと表せる。スピン反転（値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（２）で表される。
【００１８】
【数２】
2020027426.tif 000004
【００１９】
式（２）において、変数ｘｉが１から０に変化するとき、Δｘｉは−１となり、変数ｘｉが０から１に変化するとき、Δｘｉは１となる。なお、ｈｉはローカルフィールド（局所場）と呼ばれ、Δｘｉに応じてローカルフィールドｈｉに符号（＋１または−１）を乗じたものがエネルギー変化ΔＥｉである。変数ｘｊが０から１に変化するときのローカルフィールドｈｉの変化分は、Δｈｉ（ｊ）＝＋Ｗｉｊ、変数ｘｊが１から０に変化するときのローカルフィールドｈｉの変化分は、Δｈｉ（ｊ）＝−Ｗｉｊである。同様に、変数ｘｉが変化したときのローカルフィールドｈｊの変化分は、Δｈｊ（ｉ）＝ΔｘｉＷｉｊ＝Ｗｊｉと表せる。
【００２０】
したがって、変数ｘｉが変化したときのローカルフィールドｈｊ（ｊ＝１〜Ｎ）を更新する処理は、以下の式（３）で表されるように、並列処理が可能である。
【００２１】
【数３】
2020027426.tif 000005
【００２２】
（第１の実施の形態）
図１は、第１の実施の形態の最適化システムの一例を示す図である。
第１の実施の形態の最適化システム１０は、最適化装置１１ａ１〜１１ａｎ、制御部１２、制御装置１３を有する。
【００２３】
最適化装置１１ａ１〜１１ａｎは、たとえば、それぞれ１チップの半導体集積回路（たとえば、ＦＰＧＡ（Field Programmable Gate Array）など）である。
全ビット数＝Ｎの場合、重み係数の総数はＮ２である。１つのチップ当たりに記憶できる重み係数の数の上限をＷとした場合、チップ数（最適化装置の数）＝ｎは、ｎ≧Ｎ２／Ｗとなる。ただ、各チップのリソースを効率よく利用するために、ｎは、ｎ≧Ｎ２／Ｗを満たす最小値とすればよい。たとえば、Ｎ＝４０００、Ｗ＝４×１０６の場合、Ｎ２／Ｗ＝４となるため、ｎ＝４とすればよい。その場合、１つ目のチップが識別情報（ｉｎｄｅｘ）＝１〜１０００のビットに関する重み係数群を記憶し、２つ目のチップがｉｎｄｅｘ＝１００１〜２０００のビットに関する重み係数群を記憶する。そして、３つ目のチップがｉｎｄｅｘ＝２００１〜３０００のビットに関する重み係数群を記憶し、４つ目のチップがｉｎｄｅｘ＝２００１〜４０００のビットに関する重み係数群を記憶すればよい。なお、各チップは、互いに異なる数のビットに関する重み係数群を記憶してもよい。
【００２４】
最適化装置１１ａ１は、記憶部１１ｂ１、ビット値演算回路部１１ｃ１、選択回路部１１ｄ１を有する。
記憶部１１ｂ１は、イジングモデルに含まれる全スピンに対応する全ビットの間の相互作用の大きさを示す重み係数Ｗ１１〜ＷＮＮのうち、ｍ（ｍは２以上の整数）個のビット（ｉｎｄｅｘ＝１〜ｍのビット）に関する重み係数群を保持している。重み係数Ｗ１１，Ｗ１２，…，Ｗ１Ｎは、ｉｎｄｅｘ＝１のビットに関する重み係数群、重み係数Ｗ２１，Ｗ２２，…，Ｗ２Ｎは、ｉｎｄｅｘ＝２のビットに関する重み係数群、重み係数Ｗｍ１，Ｗｍ２，…，ＷｍＮは、ｉｎｄｅｘ＝ｍのビットに関する重み係数群である。
【００２５】
記憶部１１ｂ１は、たとえば、レジスタやＳＲＡＭ（Static Random Access Memory）などである。
ビット値演算回路部１１ｃ１は、記憶部１１ｂ１に記憶された重み係数群を取得し、制御部１２から、全ビットのうち更新された更新ビットの値と、更新ビットを識別するｉｎｄｅｘとを受ける。そして、ビット値演算回路部１１ｃ１は、それらに基づいて、ｍ個のビットの何れか１つが変化することによるイジングモデルのエネルギー変化をｍ個のビットのそれぞれについて算出する。さらに、ビット値演算回路部１１ｃ１は、熱励起エネルギーと、ｍ個のビットのそれぞれについて算出したエネルギー変化との大小関係に基づいて、更新を許容するか否かを判定する。そして、ビット値演算回路部１１ｃ１は、ｍ個のビットのそれぞれについての更新を許容するか否かの判定結果を示すフラグ情報と、ｍ個のビットのうち更新が許容されたビット（許容ビット）の更新後の値と、を出力する。
【００２６】
熱励起エネルギーは、たとえば、後述の乱数発生回路が生成した乱数と、制御部１２から入力される温度パラメータＴとに基づいて決定される。
図１の例では、ビット値演算回路部１１ｃ１は、ｍ個のビット値演算回路１１ｃ１１，１１ｃ１２，…，１１ｃ１ｍを有する。
【００２７】
ビット値演算回路１１ｃ１１は、ｉｎｄｅｘ＝１のビットが変化することによるイジングモデルのエネルギー変化を算出し、熱励起エネルギーと、その算出したエネルギー変化との大小関係に基づいて、更新を許容するか否かを判定する。そして、ビット値演算回路１１ｃ１１は、フラグ情報と、そのビットの更新後の値（ｉｎｄｅｘ＝１のビットの更新が許容された場合）とを出力する。なお、ビット値演算回路１１ｃ１１は、ｉｎｄｅｘ＝１のビットの更新を許容しないと判定した場合には、現在の（更新前の）ｉｎｄｅｘ＝１のビットの値を出力する。ビット値演算回路１１ｃ１２〜１１ｃ１ｍは、ｉｎｄｅｘ＝２〜Ｎのビットについて、ビット値演算回路１１ｃ１１と同様の処理を行う。
【００２８】
ビット値演算回路１１ｃ１１〜１１ｃ１ｍの回路例については後述する。
選択回路部１１ｄ１は、フラグ情報に基づいて、１つの許容ビットを選択し、選択した許容ビットについてのフラグ情報、更新後の値及び、その許容ビットを識別する識別情報を含む状態信号を出力する。選択回路部１１ｄ１の例については後述する。
【００２９】
最適化装置１１ａ１〜１１ａｎのうち、最適化装置１１ａ１以外も最適化装置１１ａ１と同様の要素を有し、互いに異なる重み係数群に基づいて、状態信号をそれぞれ出力する。
【００３０】
たとえば、最適化装置１１ａｎの記憶部１１ｂｎは、ｉｎｄｅｘ＝ｋ〜Ｎのビットに関する重み係数群を記憶している。重み係数Ｗｋ１，Ｗｋ２，…，ＷｋＮは、ｉｎｄｅｘ＝ｋのビットに関する重み係数群、重み係数Ｗｋ＋１，１，Ｗｋ＋１，２，…，Ｗｋ＋１，Ｎは、ｉｎｄｅｘ＝ｋ＋１のビットに関する重み係数群である。また、重み係数ＷＮ１，ＷＮ２，…，ＷＮＮは、ｉｎｄｅｘ＝Ｎのビットに関する重み係数群である。
【００３１】
ビット値演算回路部１１ｃｎは、ビット値演算回路１１ｃｎ１，１１ｃｎ２，…，１１ｃｎｍを有する。そして、ビット値演算回路部１１ｃｎは、ビット値演算回路部１１ｃ１と同様の処理により、ｉｎｄｅｘ＝ｋ〜Ｎのビットのそれぞれについてのフラグ情報と、ｉｎｄｅｘ＝ｋ〜Ｎのビットのうち許容ビットの更新後の値と、を出力する。
【００３２】
選択回路部１１ｄｎは、フラグ情報に基づいて、１つの許容ビットを選択し、選択した許容ビットについてのフラグ情報、更新後の値及び、その許容ビットを識別する識別情報を含む状態信号を出力する。
【００３３】
制御部１２は、制御装置１３（たとえば、ＰＣ（Personal Computer））との間で情報の送受信を行う。たとえば、制御部１２は、制御装置１３からイジングモデルを表現する重み係数やバイアス係数を受け、重み係数を記憶部１１ｂ１〜１１ｂｎに記憶し、バイアス係数をビット値演算回路部１１ｃ１〜１１ｃｎが計算するローカルフィールドの初期値に設定する。
【００３４】
また、制御部１２は、制御装置１３から、アニーリング条件（温度パラメータＴの最大値、最小値、温度パラメータＴの値の下げ方についての情報など）を受け、アニーリング条件に基づいて、ビット値演算回路部１１ｃ１〜１１ｃｎに温度パラメータＴを設定する。制御部１２は、アニーリング条件に基づいて、温度パラメータＴの値を徐々に小さくしていく。また、制御部１２は、たとえば、温度パラメータＴの値を所定回数、小さくした場合（または温度パラメータＴが最小値に達した場合）の状態保持部１２ｂに保持されている各ビットの値を解として制御装置１３に送信する。
【００３５】
図１の最適化システム１０の例では、制御部１２は、選択回路部１２ａと状態保持部１２ｂが含まれる。
選択回路部１２ａは、選択回路部１１ｄ１〜１１ｄｎがそれぞれ出力する状態信号を受け、状態信号に含まれるフラグ情報に基づいて更新ビットを決定し、更新ビットの値と、更新ビットのｉｎｄｅｘとを、最適化装置１１ａ１〜１１ａｎのそれぞれに供給する。図１の例では、選択回路部１２ａは、ｉｎｄｅｘ＝ｉのビットの値（変数ｘｉ）及びｉｎｄｅｘ＝ｉの他に、フラグ情報（ｆｌｇｉ）についてもビット値演算回路部１１ｃ１〜１１ｃｎに供給している。
【００３６】
状態保持部１２ｂは、各ビットの値を保持し、選択回路部１２ａが出力するビットの更新後の値により、保持内容を更新する。
制御部１２は、たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡなどの特定用途の電子回路にて実現できる。なお、制御部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサを含んでいてもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記のような重み係数の記憶制御や温度パラメータＴの制御を行う。また、重み係数を設定する機能や温度パラメータＴを制御する機能は、制御装置１３に含まれていてもよい。
【００３７】
なお、選択回路部１２ａは、最適化装置１１ａ１〜１１ａｎの数が増えても、比較的小さな回路規模で実現できる。そのため、選択回路部１２ａは、最適化装置１１ａ１〜１１ａｎの何れか１つに設けられていてもよい。状態保持部１２ｂについても最適化装置１１ａ１〜１１ａｎの何れか１つに設けられていてもよい。また、選択回路部１２ａや状態保持部１２ｂは、最適化装置１１ａ１〜１１ａｎ及び制御部１２とは独立に設けられていてもよい。また、重み係数の記憶制御や温度パラメータＴの制御は、最適化装置１１ａ１〜１１ａｎのそれぞれに設けられた制御部が行ってもよい。
【００３８】
（ビット値演算回路の一例）
図２は、ビット値演算回路の一例を示す図である。図２では、図１に示したビット値演算回路１１ｃ１１の例が示されている。図１に示した他のビット値演算回路についても同様の回路により実現できる。
【００３９】
ビット値演算回路１１ｃ１１は、ΔＥ計算部２０、状態遷移判定部２１、ビット更新部２２を有する。
ΔＥ計算部２０は、選択回路２０ａ，２０ｂ、乗算器２０ｃ、加算器２０ｄ、レジスタ２０ｅ、乗算器２０ｆ、選択回路２０ｇを有する。
【００４０】
選択回路２０ａは、図１に示した選択回路部１２ａから供給されるｉｎｄｅｘ＝ｉに基づき、記憶部１１ｂ１に格納されている重み係数Ｗ１ｉ（ｉ＝１〜Ｎ）のうち１つを選択して出力する。
【００４１】
たとえば、ｉｎｄｅｘ＝Ｎが選択回路２０ａに入力されたとき、選択回路２０ａは、重み係数Ｗ１Ｎを選択する。
選択回路２０ｂは、式（３）のΔｘｉの演算を実現するものである。前述のように、変数ｘｉが１から０に変化するとき、Δｘｉは−１となり、変数ｘｉが０から１に変化するとき、Δｘｉは１となる。選択回路２０ｂは、選択回路部１２ａから供給される変数ｘｉ（ｉｎｄｅｘ＝ｉのビットの値の更新値）が０のときには、−１を選択して出力し、変数ｘｉが１のときには、１を選択して出力する。
【００４２】
乗算器２０ｃは、選択回路２０ａが出力する重み係数Ｗ１ｉと、選択回路２０ｂが出力する値との積を出力する。
加算器２０ｄは、乗算器２０ｃが出力する値と、レジスタ２０ｅに格納されている値とを加算して出力する。
【００４３】
レジスタ２０ｅは、図示しないクロック信号に同期して、加算器２０ｄが出力する値（ローカルフィールドｈ１）を取り込む。レジスタ２０ｅは、たとえば、フリップフロップである。なお、レジスタ２０ｅに格納されるローカルフィールドｈ１の初期値はバイアス係数ｂ１である。
【００４４】
乗算器２０ｆは、レジスタ２０ｅが出力するローカルフィールドｈ１と選択回路２０ｇが出力する値との積を出力する。この積が、エネルギー変化ΔＥ１である。
選択回路２０ｇは、Δｘ１の演算を実現するものである。選択回路２０ｇは、変数ｘ１ａ（ｉｎｄｅｘ＝１のビットが変化した場合の値）が０のときは、１を出力し、変数ｘ１ａが１のときは−１を出力する。
【００４５】
状態遷移判定部２１は、符号反転部２１ａ、オフセット加算部２１ｂ、乱数発生回路２１ｃ、選択法則適用部２１ｄ、乗算器２１ｅ、比較回路２１ｆを有する。
符号反転部２１ａは、エネルギー変化ΔＥ１に−１を掛けて符号を反転させる。
【００４６】
オフセット加算部２１ｂは、符号反転部２１ａの出力値（−ΔＥ１）に、オフセット値を加える。オフセット加算部２１ｂは、前述の選択回路部１２ａから供給されるｆｌｇｉが、状態遷移を許容しないことを示すとき（つまり状態遷移が生じないとき）、オフセット値を増加していく。一方、オフセット加算部２１ｂは、ｆｌｇｉが、状態遷移を許容することを示すとき（つまり状態遷移が生じるとき）には、オフセット値を０にする。オフセット値が大きくなると状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【００４７】
乱数発生回路２１ｃは、０以上、１以下の一様乱数ｒを発生する。
選択法則適用部２１ｄは、シミュレーテッド・アニーリングを行うための選択法則（メトロポリス法またはギブス法）に基づいた値を出力する。
【００４８】
シミュレーテッド・アニーリングが行われる場合、あるエネルギー変化ΔＥを引き起こす状態遷移の許容確率Ａ（ΔＥ，Ｔ）を以下の式（４）のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
【００４９】
【数４】
2020027426.tif 000006
【００５０】
式（４）においてＴは、前述の温度パラメータＴである。
式（４）で表される許容確率Ａ（ΔＥ，Ｔ）を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００５１】
許容確率Ａ（ΔＥ，Ｔ）でエネルギー変化ΔＥを引き起こす状態遷移を許容することを示すフラグ情報（＝１）を出力する回路は、式（４）のｆ（−ΔＥ／Ｔ）と、一様乱数ｒとの比較結果に基づいた値を出力する比較器によって実現できる。
【００５２】
ただ、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、ｆ（−ΔＥ／Ｔ）に作用させる単調増加関数としてｆ（−ΔＥ／Ｔ）の逆関数ｆ−１（−ΔＥ／Ｔ）、一様乱数ｒに作用させる単調増加関数としてｆ−１（−ΔＥ／Ｔ）の−ΔＥ／Ｔをｒとしたｆ−１（ｒ）を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、−ΔＥ／Ｔがｆ−１（ｒ）より大きいとき１を出力する回路でよいことがわかる。さらに温度パラメータＴが正であることから、その回路は、−ΔＥがＴ・ｆ−１（ｒ）より大きいとき１を出力する回路でよい。
【００５３】
選択法則適用部２１ｄは、入力される一様乱数ｒを上記のｆ−１（ｒ）の値に変換する変換テーブルを用いて、ｆ−１（ｒ）の値を出力する。メトロポリス法が適用される場合、ｆ−１（ｒ）は、ｌｏｇ（ｒ）である。変換テーブルは、たとえば、ＲＡＭ（Random Access Memory）、フラッシュメモリなどのメモリに記憶されている。
【００５４】
乗算器２１ｅは、制御部１２から供給される温度パラメータＴと、ｆ−１（ｒ）との積（Ｔ・ｆ−１（ｒ））を出力する。Ｔ・ｆ−１（ｒ）は、熱励起エネルギーに相当する。
比較回路２１ｆは、オフセット加算部２１ｂによる加算結果と、Ｔ・ｆ−１（ｒ）とを比較し、加算結果が、Ｔ・ｆ−１（ｒ）より大きい場合、ｆｌｇ１＝１を出力し、Ｔ・ｆ−１（ｒ）より小さい場合、ｆｌｇ１＝０を出力する。
【００５５】
ビット更新部２２は、選択回路２２ａ、レジスタ２２ｂ、インバータ回路２２ｃを有している。
選択回路２２ａは、ｆｌｇ１＝０のときは、変数ｘ１（ｉｎｄｅｘ＝１のビットの現在の値）を選択して出力し、ｆｌｇ１＝１のときはインバータ回路２２ｃの出力値（前述の変数ｘ１ａに相当する）を選択して出力する。変数ｘ１として、たとえば、図１に示した状態保持部１２ｂに保持されている値が用いられる。
【００５６】
レジスタ２２ｂは、たとえば、フリップフロップであり、図示しないクロック信号に同期して選択回路２２ａが出力する値を取り込み、その値を変数ｘ１として出力する。レジスタ２２ｂに格納される値の初期値は、たとえば、変数ｘ１の初期値である。
【００５７】
インバータ回路２２ｃは、レジスタ２２ｂの出力値を反転して（０から１または１から０へ変えて）出力する。なお、このインバータ回路２２ｃの出力値を、ΔＥ計算部２０の選択回路２０ｇに供給される選択信号である変数ｘ１ａとして用いることができる。
【００５８】
このようなビット更新部２２では、ｆｌｇ１＝０のときは、現在の変数ｘ１が出力され、ｆｌｇ１＝１のときは、更新後の変数ｘ１＝ｘ１ａが出力される。
（選択回路部の一例）
図３は、選択回路部の一例を示す図である。
【００５９】
選択回路部１１ｄ１は、乱数ビット発生回路３０ａ１，３０ａ２，…，３０ａｐと、複数段にわたってツリー状に接続された複数の選択回路を有する。
乱数ビット発生回路３０ａ１〜３０ａｐのそれぞれは、１ビットの乱数を出力する。
【００６０】
初段の選択回路３１ａ１，３１ａ２，３１ａ３，３１ａ４，…，３１ａｑのそれぞれは、ビット値演算回路１１ｃ１１〜１１ｃ１ｍのそれぞれが出力する変数ｘｉとｆｌｇｉ（ｉ＝１〜ｍ）による組を２組ずつ入力する。たとえば、選択回路３１ａ１には、ビット値演算回路１１ｃ１１が出力する変数ｘ１とｆｌｇ１による組と、ビット値演算回路１１ｃ１２が出力する変数ｘ２とｆｌｇ２による組が入力される。また、選択回路３１ａ２には、変数ｘ３とｆｌｇ３による組と変数ｘ４とｆｌｇ４による組が入力され、選択回路３１ａ３には、変数ｘ５とｆｌｇ５による組と変数ｘ６とｆｌｇ６による組が入力される。さらに、選択回路３１ａ４には、変数ｘ７とｆｌｇ７による組と変数ｘ８とｆｌｇ８による組が入力され、選択回路３１ａｑには、変数ｘｍ−１とｆｌｇｍ−１による組と変数ｘｍとｆｌｇｍによる組が入力される。
【００６１】
そして選択回路３１ａ１〜３１ａｑのそれぞれは、入力した２組の変数ｘｉとｆｌｇｉと、乱数ビット発生回路３０ａ１が出力する１ビット乱数に基づいて、一方の組の変数ｘｉとｆｌｇｉを選択する。また、選択回路３１ａ１〜３１ａｑのそれぞれは、どちらの組の変数ｘｉとｆｌｇｉを選択したかを示す１ビットの識別値を生成し、選択した変数ｘｉとｆｌｇｉと識別値とを含む状態信号を出力する。なお、初段の選択回路３１ａ１〜３１ａｑの数は、ビット値演算回路１１ｃ１１〜１１ｃ１ｍの数の１／２、つまり、ｍ／２である。
【００６２】
２段目の選択回路３１ｂ１，３１ｂ２，…，３１ｂｒのそれぞれは、選択回路３１ａ１〜３１ａｑが出力する状態信号を２つずつ入力する。たとえば、選択回路３１ｂ１には、選択回路３１ａ１，３１ａ２が出力する状態信号が入力され、選択回路３１ｂ２には、選択回路３１ａ３，３１ａ４が出力する状態信号が入力される。
【００６３】
そして、選択回路３１ｂ１〜３１ｂｒのそれぞれは、２つの状態信号と、乱数ビット発生回路３０ａ２が出力する１ビット乱数に基づいて、２つの状態信号の何れか一方を選択する。また、選択回路３１ｂ１〜３１ｂｒのそれぞれは、選択した状態信号に含まれる識別値の最上位ビットとして、何れの状態信号を選択したかを示す１ビットの値を加えて、選択した状態信号を出力する。
【００６４】
３段目以降の選択回路においても同様の処理が行われ、各段の選択回路で１ビットずつ識別値のビット幅が増えていき、最後段の選択回路３１ｐから、選択回路部１１ｄ１の出力である状態信号が出力される。
【００６５】
選択回路部１１ｄ１〜１１ｄｎのうち、選択回路部１１ｄ１以外も同様の回路構成である。
また、選択回路部１２ａも選択回路部１１ｄ１と同様の回路構成であり、それぞれ１ビットの乱数を出力する乱数ビット発生回路３２ａ１〜３２ａｓと、複数段にわたってツリー状に接続された複数の選択回路を有する。
【００６６】
初段の選択回路３３ａ１〜３３ａｔのそれぞれは、選択回路部１１ｄ１〜１１ｄｎが出力するｎ個の状態信号を２つずつ入力する。そして選択回路３３ａ１〜３３ａｔのそれぞれは、２つの状態信号と、乱数ビット発生回路３２ａ１が出力する１ビット乱数に基づいて、２つの状態信号の何れか一方を選択する。また、選択回路３３ａ１〜３３ａｔのそれぞれは、選択した状態信号に含まれる識別値の最上位ビットとして、何れの状態信号を選択したかを示す１ビットの値を加えて、選択した状態信号を出力する。なお、初段の選択回路３３ａ１〜３３ａｔの数は、ｎ／２である。
【００６７】
２段目以降の選択回路においても同様の処理が行われ、各段の選択回路で１ビットずつ識別値のビット幅が追加されていき、最後段の選択回路３３ｓから、選択回路部１２ａの出力である状態信号が出力される。選択回路部１２ａが出力する状態信号に含まれる識別値が、２進数で表された更新ビットのｉｎｄｅｘである。
【００６８】
図４は、選択回路の一例を示す図である。図４では、図３の選択回路３１ｂ１の例が示されている。
選択回路３１ｂ１は、ＯＲ（論理和）回路４０、ＮＡＮＤ（否定論理積）回路４１、選択回路４２，４３，４４を有する。
【００６９】
ＯＲ回路４０は、前段の選択回路３１ａ１が出力する状態信号ｓｔａに含まれるフラグ情報（ｆｌｇａ）と、前段の選択回路３１ａ２が出力する状態信号ｓｔｂに含まれるフラグ情報（ｆｌｇｂ）とを入力する。そして、ＯＲ回路４０は、ｆｌｇａ，ｆｌｇｂの何れか一方または両方が１ならば１を出力し、ｆｌｇａ，ｆｌｇｂの両方が０ならば、０を出力する。ＯＲ回路４０の出力が、選択回路３１ｂ１が出力する状態信号ｓｔｃに含まれるフラグ情報（ｆｌｇｃ）となる。
【００７０】
ＮＡＮＤ回路４１は、ｆｌｇａ，ｆｌｇｂを入力し、ｆｌｇａとｆｌｇｂの否定論理積を出力する。
選択回路４２は、ＮＡＮＤ回路４１の出力が０のときは、乱数ビット発生回路３０ａ２が出力する乱数（０または１）を選択して出力し、ＮＡＮＤ回路４１の出力が１のときは、ｆｌｇｂの値を選択して出力する。
【００７１】
選択回路４３は、状態信号ｓｔａに含まれる識別値（ｉｄａ）と状態信号ｓｔｂに含まれる識別値（ｉｄｂ）を入力する。選択回路４３は、選択回路４２の出力が０のときは、ｉｄａの値を選択して出力し、選択回路４２の出力が１のときは、ｉｄｂの値を選択して出力する。選択回路４３が出力するｉｄａまたはｉｄｂに、最上位ビットとして選択回路４２が出力する０または１の１ビットの値を追加したものが、状態信号ｓｔｃに含まれる識別値（ｉｄｃ）となる。
【００７２】
選択回路４４は、状態信号ｓｔａに含まれる変数ｘａと状態信号ｓｔｂに含まれる変数ｘｂを入力する。選択回路４４は、選択回路４２の出力が０のときは、変数ｘａを選択して出力し、選択回路４２の出力が１のときは、変数ｘｂを選択して出力する。選択回路４４が出力する変数ｘａまたは変数ｘｂが、状態信号ｓｔｃに含まれる変数ｘｃとなる。
【００７３】
図３に示した、選択回路３１ｂ２〜３１ｂｒや３段目以降の選択回路、選択回路部１２ａに含まれる各選択回路も、選択回路３１ｂ１と同様の回路構成で実現できる。
図３に示した選択回路部１１ｄ１の初段の選択回路３１ａ１〜３１ａｑも、図４に示した選択回路３１ｂ１の回路構成とほぼ同様の回路構成で実現できるが、選択回路４３はない。
【００７４】
なお、上記の説明では、選択回路部１１ｄ１〜１１ｄｎ，１２ａによってｉｎｄｅｘが生成される例を示したがこれに限定されない。たとえば、ビット値演算回路１１ｃ１１〜１１ｃｎｍのそれぞれにｉｎｄｅｘを記憶する記憶部（たとえば、レジスタ）がある場合、選択回路部１１ｄ１〜１１ｄｎは、各記憶部からｉｎｄｅｘを読み出す。その場合、選択回路部１１ｄ１〜１１ｄｎ，１２ａに含まれる複数の選択回路のそれぞれは、たとえば、図４において、選択回路４３の出力に１ビットの値を加えずにｉｄｃを生成するような回路構成となる。そして、ｉｄａ，ｉｄｂが、互いに異なるビットのｉｎｄｅｘを表し、ｉｄｃが、互いに異なるビットの何れか一方のｉｎｄｅｘを表すことになる。
【００７５】
以下、第１の実施の形態の最適化システム１０の動作例を示す図である。
図５は、第１の実施の形態の最適化システムの動作の一例の流れを示すフローチャートである。
【００７６】
まず、制御部１２は、制御装置１３から受けた全重み係数を、前述のようにｎ（ｎ≧Ｎ２／Ｗ）個の重み係数群に分割して、最適化装置１１ａ１〜１１ａｎの記憶部１１ｂ１〜１１ｂｎに記憶する（ステップＳ１）。
【００７７】
また、制御部１２は、制御装置１３から受けたアニーリング条件に基づいて、ビット値演算回路部１１ｃ１〜１１ｃｎに温度パラメータＴの初期値を設定する（ステップＳ２）。なお、制御部１２は、制御装置１３から受けたバイアス係数を、ビット値演算回路部１１ｃ１〜１１ｃｎに設定してもよい。
【００７８】
ビット値演算回路１１ｃ１１〜１１ｃｎｍのそれぞれは、前述の方法により、ローカルフィールドｈｉを計算するとともに（ステップＳ３）、エネルギー変化ΔＥｉを計算する（ステップＳ４）。
【００７９】
また、ビット値演算回路１１ｃ１１〜１１ｃｎｍのそれぞれは、計算したエネルギー変化ΔＥｉの符号を反転させた値に対して、オフセット値を加算する（ステップＳ５）。
そして、ビット値演算回路１１ｃ１１〜１１ｃｎｍのそれぞれと、選択回路部１１ｄ１〜１１ｄｎ，１２ａによる前述の処理により、更新ビットの選択が行われる（ステップＳ６）。
【００８０】
そして、選択回路部１２ａは、更新ビットの値（変数ｘｉ）と、更新ビットのｉｎｄｅｘ＝ｉと、ｆｌｇｉとを、全最適化装置（最適化装置１１ａ１〜１１ａｎ）に供給する（ステップＳ７）。
【００８１】
また、状態保持部１２ｂは、選択回路部１２ａが出力する変数ｘｉにより、保持内容である状態を更新する（ステップＳ８）。
制御部１２は、ステップＳ３〜Ｓ８の更新処理が所定回数Ｎ１、繰り返されたか否かを判定する（ステップＳ９）。更新処理が所定回数Ｎ１、繰り返されていない場合には、ステップＳ３〜Ｓ８の更新処理が繰り返される。
【００８２】
更新処理が所定回数Ｎ１、繰り返された場合、制御部１２は、温度パラメータの変更回数（温度変更回数）が、所定回数Ｎ２に達したか否かを判定する（ステップＳ１０）。
温度変更回数が所定回数Ｎ２に達していない場合、制御部１２は、温度パラメータを変更する（温度を下げる）（ステップＳ１１）。所定回数Ｎ１，Ｎ２、温度パラメータの値の変更の仕方（一度に値をどのくらい小さくするかなど）は、アニーリング条件に基づいて決定される。ステップＳ１１の処理後、ステップＳ３からの処理が繰り返される。
【００８３】
温度変更回数が所定回数Ｎ２に達している場合、制御部１２は、そのとき状態保持部１２ｂに保持されている状態を、解（計算結果）として制御装置１３に送信（出力）する（ステップＳ１２）。
【００８４】
以上のような第１の実施の形態の最適化システム１０では、全ビットについての重み係数が最適化装置１１ａ１〜１１ａｎに分散して保持されている。そして、保持した重み係数を用いて最適化装置１１ａ１〜１１ａｎが決定した許容ビットから選択回路部１２ａが更新ビットを選択し、更新ビットの値やｉｎｄｅｘを最適化装置１１ａ１〜１１ａｎに供給する。これにより、ビット数が多くなる大規模な問題を計算する際にも、外部メモリ（たとえば、制御装置１３内のメモリ）から重み係数を部分的に読み出しながら計算を行うようなことが不要で、メモリアクセスが減るため、計算速度の低下を抑制できる。また、各最適化装置間での重み係数の移動がないため、最適化装置間での通信による計算速度の低下も抑制できる。
【００８５】
（第２の実施の形態）
図６は、第２の実施の形態の最適化システムの一例を示す図である。図６において、図１に示した要素と同じ要素については同一符号が付されている。
【００８６】
第２の実施の形態の最適化システム５０において、最適化装置５１ａ１〜５１ａｎに含まれる選択回路部５１ｂ１〜５１ｂｎと、制御部５２に含まれる選択回路部５２ａは、双方向のパスを有している。なお、選択回路部５２ａは、最適化装置５１ａ１〜５１ａｎの何れか１つに含まれていてもよいし、最適化装置５１ａ１〜５１ａｎ及び制御部５２とは独立に設けられていてもよい。
【００８７】
選択回路部５２ａは、第１の実施の形態の最適化システム１０の選択回路部５２ａと同様に、更新ビットの値（変数ｘｉ）、ｉｎｄｅｘ＝ｉ、ｆｌｇｉを最適化装置５１ａ１〜５１ａｎに供給する。ただし、選択回路部５２ａは、選択回路部５２ａ内に設けられたパスを使用して、変数ｘｉ、ｉｎｄｅｘ＝ｉ、ｆｌｇｉを最適化装置５１ａ１〜５１ａｎに供給する。
【００８８】
選択回路部５１ｂ１〜５１ｂｎは、選択回路部１１ｄ１〜１１ｄｎと同様の機能を有するとともに、選択回路部５２ａから変数ｘｉ、ｉｎｄｅｘ＝ｉ、ｆｌｇｉを受ける。そして、選択回路部５１ｂ１〜５１ｂｎは、それらを選択回路部５１ｂ１〜５１ｂｎ内に設けられたパスを使用して、ビット値演算回路部１１ｃ１〜１１ｃｎに供給する。
【００８９】
たとえば、選択回路部５１ｂ１は、選択回路部５２ａから受けた変数ｘｉ、ｉｎｄｅｘ＝ｉ、ｆｌｇｉを、選択回路部５１ｂ１内に設けられたパスを使用して、ビット値演算回路１１ｃ１１〜１１ｃ１ｍのそれぞれに供給する。
【００９０】
なお、第２の実施の形態の最適化システム５０の全体の動作の流れは、図５に示した第１の実施の形態の最適化システム１０の動作の流れと同じである。
第２の実施の形態の最適化システム５０では、選択回路部５１ｂ１〜５１ｂｎと、選択回路部５２ａ内に設けられたパスを用いて、変数ｘｉ、ｉｎｄｅｘ＝ｉ、ｆｌｇｉがビット値演算回路部１１ｃ１〜１１ｃｎに供給される。これにより、第１の実施の形態の最適化システム１０のように、選択回路部１２ａが、変数ｘｉ、ｉｎｄｅｘ＝ｉ、ｆｌｇｉを、ビット値演算回路部１１ｃ１〜１１ｃｎにブロードキャストするよりも、配線リソースの増加を抑制できる。
【００９１】
第２の実施の形態の最適化システム５０のその他の効果については、第１の実施の形態の最適化システム１０の効果と同じである。
ところで、上記の第１及び第２の実施の形態の最適化システム１０，５０において制御部１２，５２の重み係数の記憶制御や温度パラメータＴの制御を行う機能は、たとえば、ＰＣなどの制御装置内のプロセッサが制御プログラムを実行することで実現してもよい。
【００９２】
図７は、制御装置のハードウェア例を示す図である。
制御装置６０は、ＣＰＵ６１、ＲＡＭ６２、ＨＤＤ（Hard Disk Drive）６３、画像信号処理部６４、入力信号処理部６５、媒体リーダ６６、通信インタフェース６７及びインタフェース６８を有する。上記ユニットは、バスに接続されている。
【００９３】
ＣＰＵ６１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ６１は、ＨＤＤ６３に記憶されたプログラム（たとえば、前述の制御プログラム）やデータの少なくとも一部をＲＡＭ６２にロードし、プログラムを実行する。なお、ＣＰＵ６１は複数のプロセッサコアを備えてもよく、制御装置６０は複数のプロセッサを備えてもよく、前述の処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。
【００９４】
ＲＡＭ６２は、ＣＰＵ６１が実行するプログラムやＣＰＵ６１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、制御装置６０は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００９５】
ＨＤＤ６３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、重み係数の記憶制御や温度パラメータＴの制御を行う機能を制御装置６０に実行させる制御プログラムが含まれる。なお、制御装置６０は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００９６】
画像信号処理部６４は、ＣＰＵ６１からの命令にしたがって、制御装置６０に接続されたディスプレイ６４ａに画像（たとえば、最適化問題の計算結果を表す画像）を出力する。ディスプレイ６４ａとしては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００９７】
入力信号処理部６５は制御装置６０に接続された入力デバイス６５ａから入力信号を取得し、ＣＰＵ６１に出力する。入力デバイス６５ａとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、制御装置６０に、複数の種類の入力デバイスが接続されていてもよい。
【００９８】
媒体リーダ６６は、記録媒体６６ａに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体６６ａとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００９９】
媒体リーダ６６は、たとえば、記録媒体６６ａから読み取ったプログラムやデータを、ＲＡＭ６２やＨＤＤ６３などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、ＣＰＵ６１によって実行される。なお、記録媒体６６ａは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体６６ａやＨＤＤ６３を、コンピュータ読み取り可能な記録媒体ということがある。
【０１００】
通信インタフェース６７は、ネットワーク６７ａに接続され、ネットワーク６７ａを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース６７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【０１０１】
インタフェース６８は、最適化装置６８ａ１〜６８ａｎと通信を行うインタフェースである。最適化装置６８ａ１〜６８ａｎは、たとえば、図１に示した最適化装置１１ａ１〜１１ａｎまたは図６に示した最適化装置５１ａ１〜５１ａｎである。
【０１０２】
図８は、制御装置による最適化システムの制御方法の流れを示すフローチャートである。
制御装置６０は、全重み係数を、前述のようにｎ（ｎ≧Ｎ２／Ｗ）個の重み係数群に分割して、最適化装置６８ａ１〜６８ａｎのそれぞれの記憶部に記憶する（ステップＳ２０）。
【０１０３】
また、制御装置６０は、最適化装置６８ａ１〜６８ａｎに温度パラメータＴの初期値を送信する（ステップＳ２１）。
その後、制御装置６０は、たとえば、最適化装置６８ａ１〜６８ａｎが前述の更新処理を行うたびに送信する信号を受信し、更新処理が所定回数Ｎ１、繰り返されたか否かを判定する（ステップＳ２２）。更新処理が所定回数Ｎ１、繰り返されていない場合には、ステップＳ２２の処理が繰り返される。
【０１０４】
更新処理が所定回数Ｎ１、繰り返された場合、制御装置６０は、温度パラメータＴの変更回数（温度変更回数）が、所定回数Ｎ２に達したか否かを判定する（ステップＳ２３）。
【０１０５】
温度変更回数が所定回数Ｎ２に達していない場合、制御装置６０は、温度パラメータＴを変更する（温度を下げる）（ステップＳ２４）。ステップＳ２４の処理では、制御装置６０は、前回送信した値よりも小さい温度パラメータＴの値を、最適化装置６８ａ１〜６８ａｎに送信する。所定回数Ｎ１，Ｎ２、温度パラメータの値の変更の仕方（一度に値をどのくらい小さくするかなど）は、アニーリング条件に基づいて決定される。ステップＳ２４の処理後、ステップＳ２２からの処理が繰り返される。
【０１０６】
温度変更回数が所定回数Ｎ２に達している場合、制御装置６０は、そのときの各ビットの値（変数ｘｉ（ｉ＝１〜Ｎ））を、たとえば、図１に示した状態保持部１２ｂから、最適化問題の計算結果として取得する（ステップＳ２５）。
【０１０７】
その後、制御装置６０は、受信した計算結果を、たとえば、図７に示したディスプレイ６４ａに表示し（ステップＳ２６）、最適化システムの制御を終える。
なお、前述のように、上記の制御装置６０の処理内容は、コンピュータにプログラムを実行させることで実現できる。
【０１０８】
プログラムは、コンピュータ読み取り可能な記録媒体（たとえば、記録媒体６６ａ）に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤ及びＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤ及びＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体（たとえば、ＨＤＤ６３）にプログラムをコピーして実行してもよい。
【０１０９】
以上、実施の形態に基づき、本発明の最適化システム、最適化システムの制御方法及び最適化システムの制御プログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１１０】
１０  最適化システム
１１ａ１〜１１ａｎ  最適化装置
１１ｂ１〜１１ｂｎ  記憶部
１１ｃ１〜１１ｃｎ  ビット値演算回路部
１１ｃ１１〜１１ｃｎｍ  ビット値演算回路
１１ｄ１〜１１ｄｎ，１２ａ  選択回路部
１２  制御部
１２ｂ  状態保持部
１３  制御装置
【図１】
2020027426.tif 000007
【図２】
2020027426.tif 000008
【図３】
2020027426.tif 000009
【図４】
2020027426.tif 000010
【図５】
2020027426.tif 000011
【図６】
2020027426.tif 000012
【図７】
2020027426.tif 000013
【図８】
2020027426.tif 000014