(57)【要約】【課題】計算速度の低下を抑制する。【解決手段】記憶部１０ａは、記憶装置１１に記憶された全重み係数のうち、全ビットの一部である複数のビットに関する重み係数群を記憶する。演算回路１０ｂは、その重み係数群と、複数のビットのうちで値が更新されたビットの情報に基づいて、複数のビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化を計算する処理と、エネルギー変化に基づいて、複数のビットのうちの１つの更新を確率的に許容する処理とを含む、更新判定処理を繰り返すことで、イジングモデルの基底状態の探索を行う。制御部１０ｃは、更新判定処理が所定回数繰り返された場合、複数のビットに含まれないビットに関する重み係数群を記憶装置１１から読み出し、その重み係数群を含むように記憶部１０ａに記憶されている重み係数群の一部を更新し、更新後の重み係数群を用いた更新判定処理を演算回路１０ｂに行わせる。【選択図】図１
2020038435.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に接続される最適化装置において、
最適化問題を変換したイジングモデルの全スピンに対応する全ビットの間の相互作用の大きさを示す、前記記憶装置に記憶された全重み係数のうち、前記全ビットの一部である複数のビットに関する第１の重み係数群を記憶する記憶部と、
前記第１の重み係数群と、前記複数のビットのうちで値が更新されたビットの情報に基づいて、前記複数のビットのそれぞれの値が変化することによる前記イジングモデルのエネルギー変化を、前記複数のビットのそれぞれについて計算する処理と、前記エネルギー変化に基づいて、前記複数のビットのうちの１つの更新を確率的に許容する処理とを含む、更新判定処理を繰り返すことで、前記イジングモデルの基底状態の探索を行う演算回路と、
前記更新判定処理が所定回数繰り返された場合、前記複数のビットに含まれないビットに関する第２の重み係数群を前記記憶装置から読み出し、前記第２の重み係数群を含むように前記記憶部に記憶されている前記第１の重み係数群の一部を更新し、更新後の前記第１の重み係数群を用いた前記更新判定処理を前記演算回路に行わせる制御部と、
を有する最適化装置。
【請求項２】
前記制御部は、前記記憶部に記憶されている前記第１の重み係数群の一部を更新するときに、前記複数のビットのうち、識別番号が一番小さい１つのビットに関する第３の重み係数群を、前記複数のビットよりも識別番号が大きいビットのうち、最も識別番号が小さい１つのビットに関する前記第２の重み係数群に更新する、
請求項１に記載の最適化装置。
【請求項３】
前記演算回路は、
前記全ビットのそれぞれが変化することによる前記エネルギー変化を、それぞれ計算する複数のエネルギー変化計算回路と、
前記複数のエネルギー変化計算回路のそれぞれが計算した前記エネルギー変化に基づいて、前記全ビットのそれぞれについて、更新を許容するか否かの判定結果を出力する複数の更新判定回路と、
前記全ビットのうち、前記複数のビットに含まれないビットについての前記判定結果を、更新を許容しないことを示す値に変更する複数の判定結果変更回路と、
を有する請求項１に記載の最適化装置。
【請求項４】
最適化問題を変換したイジングモデルの全スピンに対応する全ビットの間の相互作用の大きさを示す、記憶装置に記憶された全重み係数のうち、前記全ビットの一部である複数のビットに関する第１の重み係数群を記憶する記憶部と、
前記第１の重み係数群と、前記複数のビットのうちで値が更新されたビットの情報に基づいて、前記複数のビットのそれぞれの値が変化することによる前記イジングモデルのエネルギー変化を、前記複数のビットのそれぞれについて計算する処理と、前記エネルギー変化に基づいて、前記複数のビットのうちの１つの更新を確率的に許容する処理とを含む、更新判定処理を繰り返すことで、前記イジングモデルの基底状態の探索を行う演算回路と、
制御部と、
を有し、前記記憶装置に接続された最適化装置における前記制御部が、
前記更新判定処理が所定回数繰り返された場合、前記複数のビットに含まれないビットに関する第２の重み係数群を前記記憶装置から読み出し、
前記第２の重み係数群を含むように前記記憶部に記憶されている前記第１の重み係数群の一部を更新し、更新後の前記第１の重み係数群を用いた前記更新判定処理を前記演算回路に行わせる、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化装置及び最適化装置の制御方法に関する。
【背景技術】
【０００２】
従来、ノイマン型コンピュータが不得意とする多変数の最適化問題を、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）によって計算する方法がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
最適化装置は、たとえば、ニューラルネットワークを用いて問題をモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビットのそれぞれが、他のビットの値と、他のビットと自身のビットとの相互作用の大きさを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、イジングモデルのエネルギー関数の値（以下エネルギーという）の最小値が得られる各ニューロンの状態の組み合わせを、解として求める。
【０００４】
従来、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでエネルギーが最小となる各ビットの値の組み合わせを計算する最適化装置がある（たとえば、特許文献１参照）。
【０００５】
ところで、問題の規模の増大に応じてビット数が増えると重み係数の数も増加する。たとえば、ビット数が１０倍になると、全ビット間の相互作用を考慮する場合、重み係数の数は１００倍となる。そのため、従来の最適化装置（たとえば、１チップの半導体集積回路）では内部の記憶部に重み係数を記憶しきれなくなる場合がある。このため、最適化装置の外部の記憶装置に重み係数を記憶しておく方法がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−２１９９４８号公報
【特許文献２】特開平５−２５０３４６号公報
【特許文献３】特開２０１６−５１３５０号公報
【特許文献４】特開２０１０−１０８２０４号公報
【特許文献５】特開２０１１−７０２５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、最適化装置の外部の記憶装置からの重み係数の読み出しにかかる時間によって、計算速度が低下してしまう問題があった。
１つの側面では、本発明は、計算速度の低下を抑制可能な最適化装置、最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、記憶装置に接続される最適化装置において、最適化問題を変換したイジングモデルの全スピンに対応する全ビットの間の相互作用の大きさを示す、前記記憶装置に記憶された全重み係数のうち、前記全ビットの一部である複数のビットに関する第１の重み係数群を記憶する記憶部と、前記第１の重み係数群と、前記複数のビットのうちで値が更新されたビットの情報に基づいて、前記複数のビットのそれぞれの値が変化することによる前記イジングモデルのエネルギー変化を、前記複数のビットのそれぞれについて計算する処理と、前記エネルギー変化に基づいて、前記複数のビットのうちの１つの更新を確率的に許容する処理とを含む、更新判定処理を繰り返すことで、前記イジングモデルの基底状態の探索を行う演算回路と、前記更新判定処理が所定回数繰り返された場合、前記複数のビットに含まれないビットに関する第２の重み係数群を前記記憶装置から読み出し、前記第２の重み係数群を含むように前記記憶部に記憶されている前記第１の重み係数群の一部を更新し、更新後の前記第１の重み係数群を用いた前記更新判定処理を前記演算回路に行わせる制御部と、を有する最適化装置が提供される。
【０００９】
また、１つの実施態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００１０】
１つの側面では、計算速度の低下を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の最適化装置の一例を示す図である。
【図２】第１の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
【図３】記憶部に記憶される重み係数群の更新例を示す図である。
【図４】比較例の最適化装置の動作の一例の流れを示すフローチャートである。
【図５】第２の実施の形態の最適化装置の一例を示す図である。
【図６】ΔＥ計算回路と更新判定回路の一例を示す図である。
【図７】重み係数群の更新例を示す図である。
【図８】重み係数群の更新がある回数行われた後の記憶部の記憶例を示す図である。
【図９】問題規模と処理時間との関係を表すシミュレーション結果の一例を示す図である。
【図１０】トライアル数と処理時間との関係を表すシミュレーション結果の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化装置は、計算対象の最適化問題を変換したイジングモデルの全スピンに対応する全ビットのそれぞれの値の組み合わせのうち、エネルギー関数が最小値となるときの各ビットの値（イジングモデルの基底状態）を探索するものである。
【００１３】
イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００１４】
【数１】
2020038435.tif 000003
【００１５】
右辺の１項目は、イジングモデルの全ビットの全組み合わせについて、漏れと重複なく、２つのビットの値（０または１）と重み係数との積を積算したものである。ｘｉは、ｉ番目のビットの値を表す変数（状態変数とも呼ばれる）、ｘｊは、ｊ番目のビットの値を表す変数であり、Ｗｉｊは、ｉ番目とｊ番目のビットの相互作用の大きさを示す重み係数である。なお、Ｗｉｉ＝０である。また、Ｗｉｊ＝Ｗｊｉであることが多い（つまり、重み係数による係数行列は対称行列である場合が多い）。また重み係数Ｗｉｊは、所定のビット幅（たとえば、１６ビット、３２ビット、６４ビット、１２８ビットなど）をもつ。
【００１６】
右辺の２項目は、全ビットのそれぞれのバイアス係数とビットの値を表す変数との積の総和を求めたものである。ｂｉは、ｉ番目のビットのバイアス係数を示している。
また、変数ｘｉが変化して１−ｘｉとなると、変数ｘｉの増加分は、Δｘｉ＝（１−ｘｉ）−ｘｉ＝１−２ｘｉと表せる。スピン反転（ビットの値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（２）で表される。
【００１７】
【数２】
2020038435.tif 000004
【００１８】
式（２）において、変数ｘｉが１から０に変化するとき、Δｘｉは−１となり、変数ｘｉが０から１に変化するとき、Δｘｉは１となる。なお、ｈｉはローカルフィールド（局所場）と呼ばれ、Δｘｉに応じてローカルフィールドｈｉに符号（＋１または−１）を乗じたものがエネルギー変化ΔＥｉである。
【００１９】
また、変数ｘｊが０から１に変化したときのローカルフィールドｈｉの変化分Δｈｉは、＋Ｗｉｊ、変数ｘｊが１から０に変化したときの変化分Δｈｉは、−Ｗｉｊと表せる。
（第１の実施の形態）
図１は、第１の実施の形態の最適化装置の一例を示す図である。
【００２０】
第１の実施の形態の最適化装置１０は記憶装置１１に接続されている。
最適化装置１０は、たとえば、１チップの半導体集積回路（たとえば、ＦＰＧＡ（Field Programmable Gate Array）など）である。
【００２１】
記憶装置１１は、全重み係数、バイアス係数などのデータを記憶する。記憶装置１１は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの揮発性の記憶装置、または、フラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）やＨＤＤ（Hard Disk Drive）などの不揮発性の記憶装置である。
【００２２】
最適化装置１０は、記憶部１０ａ、演算回路１０ｂ、制御部１０ｃを有する。
イジングモデルのビット数が多くなると、記憶容量が小さい記憶部１０ａでは、全重み係数を保持しきれなくなる。ビット数が１０倍になると、全ビット間の相互作用を考慮する場合、重み係数の数は１００倍となる。たとえば、あるビット数の重み係数を保持するために１６ＭＢの記憶容量を要する場合、そのビット数が１０倍になると、１．６ＧＢの記憶容量を要することになり、１チップに搭載できる記憶部１０ａの記憶容量を大幅に超えてしまう。
【００２３】
そこで、記憶部１０ａは、記憶装置１１に記憶された全重み係数のうち、全ビットの一部のビット（複数のビット）に関する重み係数群を記憶する。記憶部１０ａの記憶容量は、記憶装置１１の記憶容量よりも小さいが、記憶部１０ａから重み係数を読み出す時間は、記憶装置１１から重み係数を読み出す時間よりも短い（たとえば、１／１００〜１／１０程度）。記憶部１０ａは、たとえば、レジスタまたはＳＲＡＭ（Static Random Access Memory）などである。
【００２４】
演算回路１０ｂは、記憶部１０ａに記憶されている重み係数群と、上記複数ビットのうちで値が更新されたビット（更新ビット）の情報に基づいて、複数のビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化を計算する。エネルギー変化は、複数のビットのそれぞれについて計算される。そして、演算回路１０ｂは、計算したエネルギー変化に基づいて、複数のビットのうちの１つの更新を確率的に許容する処理を行う。演算回路１０ｂは、上記のようなエネルギー変化を計算する処理と、複数ビットのうちの１つの更新を確率的に許容する処理とを含む更新判定処理を繰り返すことで、イジングモデルの基底状態の探索を行う。
【００２５】
たとえば、演算回路１０ｂは、温度パラメータと乱数とから決定される熱励起エネルギー（熱雑音）と、あるビットが変化することによるエネルギー変化との大小関係に基づいて、そのビットの更新を許容するか否かを判定する。また、演算回路１０ｂは、更新が許容されるビットが複数ある場合には、乱数を用いて、そのうちの１つを決定する。また、シミュレーテッド・アニーリングが行われる場合、温度パラメータは、たとえば、制御部１０ｃによって、所定の更新判定処理回数ごとに、値が小さくなるように制御される。
【００２６】
制御部１０ｃは、上記の更新判定処理が所定回数繰り返された場合、上記複数ビットに含まれないビットに関する重み係数群を記憶装置１１から読み出し、読み出した重み係数群を含むように、記憶部１０ａに記憶されている重み係数群の一部を更新する。そして制御部１０ｃは、更新後の重み係数群を用いた上記の更新判定処理を演算回路１０ｂに行わせる。
【００２７】
図２は、第１の実施の形態の最適化装置の動作の一例の流れを示すフローチャートである。
まず、制御部１０ｃは、記憶装置１１に対して、記憶部１０ａに記憶する重み係数群Ｗｋｌを指定し（ステップＳ１）、重み係数群Ｗｋｌを記憶装置１１から読み出して、記憶部１０ａに記憶する（ステップＳ２）。重み係数群Ｗｋｌは、全ビットの一部である複数のビットに関する重み係数群である。
【００２８】
演算回路１０ｂは、重み係数群Ｗｋｌの範囲（上記複数のビットの範囲）で、更新ビットを選択する（ステップＳ３）。そして、演算回路１０ｂは、重み係数群Ｗｋｌと、更新ビットの情報に基づいて、複数のビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化を計算する（ステップＳ４）。
【００２９】
演算回路１０ｂは、計算したエネルギー変化に基づいて、複数のビットのうちの１つの更新を確率的に許容する処理を行い、更新を許容するビットの有無を判定する（ステップＳ５）。更新を許容するビットがある場合、演算回路１０ｂは、そのビットの値を更新する（０から１または１から０に変化させる）ことで、イジングモデルの状態を更新する（ステップＳ６）。
【００３０】
ステップＳ６の処理後、または、ステップＳ５の処理において、更新を許容するビットがない場合、演算回路１０ｂまたは制御部１０ｃは、更新判定処理回数ｃ１が所定の回数Ｎに達したか否かを判定する（ステップＳ７）。更新判定処理回数ｃ１が、回数Ｎに達していない場合、ステップＳ３では、ステップＳ６の処理で変化したビットが更新ビットとして選択され、その後ステップＳ４からの処理が繰り返される。
【００３１】
更新判定処理回数ｃ１が、回数Ｎに達した場合、演算回路１０ｂまたは制御部１０ｃは、重み係数群Ｗｋｌの更新回数ｃ２が所定の回数Ｍに達したか否かを判定する（ステップＳ８）。なお、更新判定処理回数ｃ１が、回数Ｎに達した場合、更新判定処理回数ｃ１は０にリセットされる。
【００３２】
重み係数群Ｗｋｌの更新回数ｃ２が回数Ｍに達していない場合、制御部１０ｃは、ステップＳ１の処理に戻り、記憶装置１１に対して、次に記憶部１０ａに記憶する重み係数群Ｗｋｌを指定する。そして、制御部１０ｃは、ステップＳ２の処理において、記憶部１０ａに記憶する重み係数群Ｗｋｌを更新する。その後、ステップＳ３からの処理が繰り返される。
【００３３】
なお、ある複数のビットに関する重み係数群Ｗｋｌの更新の際、重み係数群Ｗｋｌの一部が、その複数のビットに含まれないビットに関する重み係数群によって更新される。このため、記憶装置１１から新たに読み出す重み係数群は、重み係数群Ｗｋｌよりも少なくてよい。
【００３４】
重み係数群Ｗｋｌの更新回数ｃ２が回数Ｍに達した場合、制御部１０ｃは、イジングモデルの全ビットの値で表される状態を、たとえば、演算回路１０ｂ内の図示しないレジスタから取得し、最適化装置１０の外部に出力し（ステップＳ９）、処理を終える。
【００３５】
図３は、記憶部に記憶される重み係数群の更新例を示す図である。
更新回数ｃ２＝０のとき、図３の例では、１〜３番目のビットに関する重み係数群が重み係数群Ｗｋｌとして記憶部１０ａに記憶されている。
【００３６】
更新回数ｃ２＝１のとき、たとえば、２〜４番目のビットに関する重み係数群が記憶部１０ａに記憶されるように、重み係数群Ｗｋｌが更新される。この場合、制御部１０ｃは、４番目のビットに関する重み係数Ｗ４１，Ｗ４２，…，Ｗ４ｎだけを記憶装置１１から読み出し、１番目のビットに関する重み係数Ｗ１１，Ｗ１２，…，Ｗ１ｎの代りに記憶部１０ａに記憶すればよい。
【００３７】
回数Ｍは、更新回数ｃ２がＭに達した場合に、ｎ番目のビットに関する重み係数Ｗｎ１，Ｗｎ２，…，Ｗｎｎを含む重み係数群を用いた更新判定処理が行われるように、設定される。
【００３８】
なお、上記ステップＳ１〜Ｓ８の処理を、所定回数、繰り返した後に、ステップＳ９の処理が行われるようにしてもよい。
（比較例）
図４は、比較例の最適化装置の動作の一例の流れを示すフローチャートである。
【００３９】
図４では、第１の実施の形態の最適化装置１０に対する比較例として、単に、記憶装置（外部メモリ）に記憶された全重み係数の一部を記憶する記憶部（内部メモリ）を備えた、最適化装置の動作例が示されている。
【００４０】
比較例の最適化装置では、全ビットの範囲で更新ビットが選択される（ステップＳ１０）。そして、その更新ビットの情報に基づいて、全ビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化の計算が可能か否か判定される（ステップＳ１１）。
【００４１】
計算が可能ではない場合（計算に用いる重み係数Ｗｉｊが内部メモリにない場合）、外部メモリから計算に用いる重み係数Ｗｉｊが読み出される（ステップＳ１２）。ステップＳ１１の処理で計算が可能と判定された場合、またはステップＳ１２の処理後、エネルギー変化の計算が行われる（ステップＳ１３）。その後、計算したエネルギー変化に基づいて、全ビットのうちの１つの更新を確率的に許容する処理が行われ、更新を許容するビットの有無が判定される（ステップＳ１４）。更新を許容するビットがある場合、そのビットの値を０から１または１から０に変化させることで、イジングモデルの状態が更新される（ステップＳ１５）。
【００４２】
ステップＳ１５の処理後、または、ステップＳ１４の処理において、更新を許容するビットがない場合、更新判定処理回数ｃ３が所定の回数Ｎ１に達したか否かが判定される（ステップＳ１６）。更新判定処理回数ｃ３が、回数Ｎ１に達していない場合、ステップＳ１０では、ステップＳ１５の処理で変化したビットが更新ビットとして選択され、その後ステップＳ１１からの処理が繰り返される。
【００４３】
更新判定処理回数ｃ３が、回数Ｎ１に達した場合、イジングモデルの全ビットの値で表される状態が、比較例の最適化装置の外部に出力され（ステップＳ１７）、処理が終わる。
【００４４】
このような比較例の最適化装置では、選択される更新ビットによっては、内部メモリに記憶されている重み係数だけではエネルギー変化を計算できない場合があり、重み係数の外部メモリからの読み出し頻度が増加する。
【００４５】
これに対し最適化装置１０は、記憶部１０ａに記憶した一部のビットに関する重み係数群を用いて、その一部のビットから更新ビットを選択する更新判定処理を所定回数行った後に、重み係数群を別のビットに関する重み係数群を含むように更新する。これにより、記憶装置１１からの重み係数の読み出しの頻度を抑えられ、読み出しにかかる時間による計算速度の低下を抑制できる。
【００４６】
また、第１の実施の形態の最適化装置１０は、記憶部１０ａに記憶された重み係数群の更新の際、全てを別のビットに関する重み係数群に変更するのではなく、一部を別のビットに関する重み係数群を含むように変更する。重み係数群の更新の際、全てを別のビットに関する重み係数群に変更した場合、更新前の重み係数群を用いて更新判定処理が行われるビットと、更新後の重み係数群を用いて更新判定処理が行われるビットとの間の相互作用の影響が基底状態の探索に考慮されなくなる。この場合、解の精度が悪化する可能性がある。上記のように、重み係数群の更新の際、一部を別のビットに関する重み係数群を含むように変更することで、相互作用の影響が考慮されなくなるビット対を少なくでき、解の精度が悪化することを抑制できる。また、記憶装置１１から読み出すデータ量も少なくできる。また、記憶部１０ａに記憶された複数ビットに関する重み係数群のうち、１つのビットに関する重み係数群を、上記複数ビットに含まれない１つのビットに関する重み係数群に更新することで、相互作用の影響が考慮されなくなるビット対をより少なくでき、解の精度が悪化することをより抑制できる。
【００４７】
（第２の実施の形態）
図５は、第２の実施の形態の最適化装置の一例を示す図である。
第２の実施の形態の最適化装置２０は、たとえば、１チップの半導体集積回路（たとえば、ＦＰＧＡなど）である。最適化装置２０は記憶装置３０に接続されている。
【００４８】
記憶装置３０は、全重み係数、バイアス係数などのデータを記憶する。記憶装置３０は、ＳＤＲＡＭなどの揮発性の記憶装置、または、フラッシュメモリ、ＥＥＰＲＯＭやＨＤＤなどの不揮発性の記憶装置である。
【００４９】
最適化装置２０は、記憶部２１、演算回路２２、制御部２３を有する。
記憶部２１は、記憶装置３０に記憶された全重み係数のうち、全ビットの一部である複数のビットに関する重み係数群を記憶する。図５の例では、記憶部２１は、ｎ個のビットのうち、１番目からｋ番目のビットに関する重み係数群を記憶している。記憶部２１の記憶容量は、記憶装置３０の記憶容量よりも小さい。記憶部２１は、レジスタまたはＳＲＡＭなどである。
【００５０】
演算回路２２は、選択回路２２ａ、ΔＥ計算回路２２ｂ１，２２ｂ２，…，２２ｂｎ、更新判定回路２２ｃ１，２２ｃ２，…，２２ｃｎ、判定結果変更回路２２ｄ１，２２ｄ２，…，２２ｄｎ、更新ビット選択回路２２ｅ、オフセット生成回路２２ｆを有する。さらに、演算回路２２は、状態更新回路２２ｇ、カウンタ２２ｈ、比較回路２２ｉを有する。
【００５１】
選択回路２２ａは、更新ビット選択回路２２ｅが出力する識別番号ｉｄに基づいて、使用する重み係数を選択して、選択した重み係数を記憶部２１から読み出し、ΔＥ計算回路２２ｂ１〜２２ｂｎに供給する。さらに、選択回路２２ａは、記憶部２１に記憶されている重み係数群がどの複数のビットに関するものかを示す識別番号ｉｄｗを受ける。そして、選択回路２２ａは、識別番号ｉｄｗに基づいて、上記複数のビットに含まれないビットについての、更新判定回路２２ｃ１〜２２ｃｎの判定結果を、更新を許容しないことを示す値に変更するための信号を出力する。
【００５２】
たとえば、図５の例では、記憶部２１には、１〜ｋ番目のビットに関する重み係数群が記憶されているため、選択回路２２ａは、識別番号ｉｄｗとして１を受ける。なお、この場合、識別番号ｉｄｗは、１番目のビットだけではなく、ｋ番目のビットまでを示す。ｋの数は、記憶部２１の記憶容量Ｍｉと全ビットの数ｎと重み係数のデータ量ＭＷから決定され、ｋ≦Ｍｉ／（ｎ・ＭＷ）で表される。ｋはとり得る自然数の中で最大値である場合、最も効率よく演算可能であるが、この限りではない。
【００５３】
ΔＥ計算回路２２ｂ１〜２２ｂｎは、選択回路２２ａから供給される重み係数と、更新ビットの値（図５の例では、ｉ番目のビットの値を表す変数ｘｉ）に基づいて、ｎ個のビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化を計算する。図５の例では、ｎ個のビットのそれぞれの値は変数ｘ１，ｘ２，…，ｘｎで示されている。ΔＥ計算回路２２ｂ１〜２２ｂｎの回路例については後述する。
【００５４】
更新判定回路２２ｃ１〜２２ｃｎは、ΔＥ計算回路２２ｂ１〜２２ｂｎが計算したエネルギー変化、熱励起エネルギー（温度パラメータＴと乱数とから決定される）、オフセット値ｏｆｆに基づいて、各ビットの更新を許容するか否かを判定する。更新判定回路２２ｃ１〜２２ｃｎの回路例については後述する。
【００５５】
判定結果変更回路２２ｄ１〜２２ｄｎは、選択回路２２ａが出力する信号に基づいて、更新判定回路２２ｃ１〜２２ｃｎが出力する各ビットについての判定結果を出力するか、判定結果を、更新を許容しないことを示す値に変更して出力する。判定結果変更回路２２ｄ１〜２２ｄｎは、それぞれ乗算器によって実現できる。以下では、更新を許容することを示す判定結果の値を１、更新を許容しないことを示す判定結果の値を０とする。この場合、判定結果変更回路２２ｄ１〜２２ｄｎのうち、選択回路２２ａから０が供給されるものは、０を出力する。
【００５６】
更新ビット選択回路２２ｅは、判定結果変更回路２２ｄ１〜２２ｄｎのそれぞれが出力する判定結果に基づいて、更新を許容するビットが複数ある場合、そのうちの１つを識別する識別番号ｉｄを出力する。なお、判定結果変更回路２２ｄ１〜２２ｄｎのそれぞれが出力する判定結果が全て０の場合でも、何れかのビットの識別番号ｉｄが出力される。また、更新ビット選択回路２２ｅは、識別番号ｉｄで識別されるビットについての更新を許容するか否かの判定結果をフラグｆｇとして出力する。さらに、更新ビット選択回路２２ｅは、１つのビットの識別番号ｉｄを出力するたびに、トリガ信号ｔｒｇをカウンタ２２ｈに供給する。
【００５７】
オフセット生成回路２２ｆは、更新判定回路２２ｃ１〜２２ｃｎに供給するオフセット値ｏｆｆを生成する。オフセット生成回路２２ｆは、更新ビット選択回路２２ｅが出力するフラグｆｇが、０の場合、オフセット値ｏｆｆを増加する。一方、オフセット生成回路２２ｆは、フラグｆｇが、１の場合、オフセット値ｏｆｆを０にリセットする。オフセット値ｏｆｆが大きくなるとビットの更新が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【００５８】
状態更新回路２２ｇは、フラグｆｇが１の場合、更新ビット選択回路２２ｅが出力した識別番号ｉｄで識別されるビットの値を１から０または０から１に更新する。状態更新回路２２ｇは、記憶部（たとえば、レジスタ）を有しており、ｎ個のビットの値を保持している。
【００５９】
カウンタ２２ｈは、更新判定処理回数ｃ１をカウントする。カウンタ２２ｈは、更新ビット選択回路２２ｅがトリガ信号ｔｒｇを出力するたびに、更新判定処理回数ｃ１をカウントアップする。また、カウンタ２２ｈは、比較回路２２ｉが１を出力するたびに、更新判定処理回数ｃ１を０にリセットする。
【００６０】
比較回路２２ｉは、カウンタ２２ｈの計数値である更新判定処理回数ｃ１と所定の回数Ｎとを比較し、更新判定処理回数ｃ１が、回数Ｎに達するまでは０を出力し、回数Ｎに達した場合に、１を出力する。
【００６１】
制御部２３は、コントローラ２３ａ、カウンタ２３ｂ、比較回路２３ｃを有する。
コントローラ２３ａは、まず、記憶装置３０から、１番目のビットからｋ番目のビットに関する重み係数を読み出して、記憶部２１に記憶する。そして、コントローラ２３ａは、上記の更新判定処理回数ｃ１が回数Ｎ１に達するたびに、記憶部２１に記憶されているｋ個のビットに関する重み係数群のうちの一部を、ｋ個のビットに含まれないビットに関する重み係数群で更新する。たとえば、コントローラ２３ａは、更新判定処理回数ｃ１が回数Ｎ１に達するたびに、ｋ個のビットよりも識別番号が大きいビットのうち、最も識別番号が小さいビットに関する重み係数群を、記憶装置３０から読み出す。そして、コントローラ２３ａは、記憶部２１に記憶されているｋ個のビットに関する重み係数群のうちの識別番号が一番小さいビットに関する重み係数群を、読み出した重み係数群で更新（上書き）する。
【００６２】
また、コントローラ２３ａは、上記の識別番号ｉｄｗとして、上記のｋ個のビットの識別番号のうち、最小の識別番号を出力する。
なお、コントローラ２３ａは、エネルギー変化を計算するためのローカルフィールドの初期値（たとえば、バイアス係数ｂｉ）を、たとえば、記憶装置３０から受け、ΔＥ計算回路２２ｂ１〜２２ｂｎに対して、設定してもよい。
【００６３】
また、コントローラ２３ａは、所定のアニーリング条件（温度パラメータＴの最大値、最小値、温度パラメータＴの値の下げ方についての情報など）に基づいて、更新判定回路２２ｃ１〜２２ｃｎに対して温度パラメータＴを設定する。コントローラ２３ａは、アニーリング条件に基づいて、温度パラメータＴの値を徐々に小さくしていく。また、コントローラ２３ａは、比較回路２３ｃが１を出力した場合、状態更新回路２２ｇに保持されている各ビットの値を解として、たとえば、記憶装置３０に出力する。
【００６４】
コントローラ２３ａは、たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡなどの特定用途の電子回路にて実現できる。なお、コントローラ２３ａは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサであってもよい。その場合、プロセッサは、メモリ（たとえば、記憶部２１）に記憶されたプログラムを実行することで、上記のようなコントローラ２３ａの処理を行う。
【００６５】
カウンタ２３ｂは、記憶部２１に記憶する重み係数群Ｗｋｌの更新回数ｃ２をカウントする。カウンタ２３ｂは、比較回路２２ｉが１を出力するたびに、更新回数ｃ２をカウントアップする。また、カウンタ２３ｂは、比較回路２３ｃが１を出力すると、更新回数ｃ２を０にリセットする。
【００６６】
比較回路２３ｃは、カウンタ２３ｂの計数値である更新回数ｃ２と所定の回数Ｍとを比較し、更新回数ｃ２が、回数Ｍに達するまでは０を出力し、回数Ｍに達した場合に、１を出力する。回数Ｍは、更新回数ｃ２がＭに達した場合に、ｎ番目のビットに関する重み係数Ｗｎ１，Ｗｎ２，…，Ｗｎｎを含む重み係数群を用いた更新判定処理が行われるように、設定される。
【００６７】
なお、カウンタ２３ｂや比較回路２３ｃは、演算回路２２に含まれていてもよい。
（ΔＥ計算回路と更新判定回路の一例）
図６は、ΔＥ計算回路と更新判定回路の一例を示す図である。
【００６８】
図６では、図５に示したΔＥ計算回路２２ｂ１と更新判定回路２２ｃ１の例が示されている。図５に示した他のΔＥ計算回路２２ｂ２〜２２ｂｎ、更新判定回路２２ｃ２〜２２ｃｎについても図６と同様の回路により実現できる。
【００６９】
ΔＥ計算回路２２ｂ１は、選択回路４０、乗算器４１、加算器４２、レジスタ４３、乗算器４４、選択回路４５を有する。
選択回路４０は、更新ビットの値の変化分の演算を実現するものである。ｉ番目（ｉｄ＝ｉ）のビットが更新ビットである場合、その値を示す変数ｘｉが１から０に変化するとき、変化分Δｘｉは−１となり、変数ｘｉが０から１に変化するとき、Δｘｉは１となる。選択回路４０は、状態更新回路２２ｇから供給される変数ｘｉ（ｉ番目のビットの値の更新後の値）が０のときには、−１を選択して出力し、変数ｘｉが１のときには、１を選択して出力する。
【００７０】
乗算器４１は、選択回路２２ａが出力する重み係数と、選択回路４０が出力する値との積を出力する。図６の例では、ｉｄ＝ｉの場合の例が示されており、乗算器４１には、１番目のビットとｉ番目のビットとの間の相互作用の大きさを表す重み係数Ｗ１ｉが入力されている。乗算器４１の出力は、変数ｘｉが変化したことによるローカルフィールドｈ１の変化分Δｈ１を表す。
【００７１】
加算器４２は、乗算器４１が出力する値と、レジスタ４３に格納されている値とを加算して出力する。
レジスタ４３は、図示しないクロック信号に同期して、加算器４２が出力する値（ローカルフィールドｈ１）を取り込む。レジスタ４３は、たとえば、フリップフロップである。なお、レジスタ４３に格納されるローカルフィールドｈ１の初期値は、たとえば、バイアス係数ｂ１である。
【００７２】
乗算器４４は、レジスタ４３が出力するローカルフィールドｈ１と選択回路４５が出力する値との積を出力する。この積が、エネルギー変化ΔＥ１である。
選択回路４５は、Δｘ１の演算を実現するものである。選択回路４５は、状態更新回路２２ｇから供給される現在の１番目のビットの値を示す変数ｘ１が０のときは、−１を出力し、変数ｘ１が１のときは１を出力する。
【００７３】
更新判定回路２２ｃ１は、符号反転部５０、加算器５１、乱数発生回路５２、選択法則適用部５３、乗算器５４、比較回路５５を有する。
符号反転部５０は、ΔＥ計算回路２２ｂ１が出力するエネルギー変化ΔＥ１に−１を掛けて符号を反転させる。
【００７４】
加算器５１は、符号反転部５０の出力値に、オフセット生成回路２２ｆが生成するオフセット値ｏｆｆを加える。
乱数発生回路５２は、０以上、１以下の一様乱数ｒを発生する。
【００７５】
選択法則適用部５３は、シミュレーテッド・アニーリングを行うための選択法則（メトロポリス法またはギブス法）に基づいた値を出力する。
シミュレーテッド・アニーリングが行われる場合、あるエネルギー変化ΔＥを引き起こす状態遷移の許容確率Ａ（ΔＥ，Ｔ）を以下の式（３）のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
【００７６】
【数３】
2020038435.tif 000005
【００７７】
式（３）においてＴは、前述の温度パラメータＴである。
式（３）で表される許容確率Ａ（ΔＥ，Ｔ）を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００７８】
許容確率Ａ（ΔＥ，Ｔ）でエネルギー変化ΔＥを引き起こす状態遷移を許容することを示すフラグ情報（＝１）を出力する回路は、式（３）のｆ（−ΔＥ／Ｔ）と、一様乱数ｒとの比較結果に基づいた値を出力する比較器によって実現できる。
【００７９】
ただ、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、ｆ（−ΔＥ／Ｔ）に作用させる単調増加関数としてｆ（−ΔＥ／Ｔ）の逆関数ｆ−１（−ΔＥ／Ｔ）、一様乱数ｒに作用させる単調増加関数としてｆ−１（−ΔＥ／Ｔ）の−ΔＥ／Ｔをｒとしたｆ−１（ｒ）を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、−ΔＥ／Ｔがｆ−１（ｒ）より大きいとき１を出力する回路でよいことがわかる。さらに温度パラメータＴが正であることから、その回路は、−ΔＥがＴ・ｆ−１（ｒ）より大きいとき１を出力する回路でよい。
【００８０】
図６の選択法則適用部５３は、入力される一様乱数ｒを上記のｆ−１（ｒ）の値に変換する変換テーブルを用いて、ｆ−１（ｒ）の値を出力する。メトロポリス法が適用される場合、ｆ−１（ｒ）は、ｌｏｇ（ｒ）である。変換テーブルは、たとえば、ＲＡＭ（Random Access Memory）、フラッシュメモリなどのメモリに記憶されている。
【００８１】
乗算器５４は、コントローラ２３ａから供給される温度パラメータＴと、ｆ−１（ｒ）との積（Ｔ・ｆ−１（ｒ））を出力する。Ｔ・ｆ−１（ｒ）は、熱励起エネルギーに相当する。
【００８２】
比較回路５５は、加算器５１による加算結果と、Ｔ・ｆ−１（ｒ）とを比較し、加算結果がＴ・ｆ−１（ｒ）より大きい場合、１番目のビットの更新（状態遷移）を許容するか否かの判定結果として１（更新を許容することを示す値）を出力する。また、比較回路５５は、加算結果がＴ・ｆ−１（ｒ）より小さい場合、判定結果として０（更新を許容しないことを示す値）を出力する。
【００８３】
（最適化装置２０の動作例）
第２の実施の形態の最適化装置２０の動作の流れは、図２に示したフローチャートと同様である。
【００８４】
図２のステップＳ１，Ｓ２に相当する処理として、コントローラ２３ａは、記憶装置３０に対して、記憶部２１に記憶する重み係数群Ｗｋｌを指定し、重み係数群Ｗｋｌを記憶部２１に記憶する。
【００８５】
そして、ステップＳ３に相当する処理として、演算回路２２は、重み係数群Ｗｋｌの範囲で、更新ビットを選択する。この処理を行うために、前述のように、コントローラ２３ａは、識別番号ｉｄｗを出力する。たとえば、図５に示されているように記憶部２１に、１番目からｋ番目のビットに関する重み係数群が記憶されている場合、コントローラ２３ａは、識別番号ｉｄｗとして１を出力する。このとき、選択回路２２ａは、判定結果変更回路２２ｄ１〜２２ｄｎのうち、１〜ｋ番目のビットに関する判定結果を入力する判定結果変更回路に対しては、１を供給する。また、選択回路２２ａは、ｋ＋１〜ｎ番目のビットに関する判定結果を入力する判定結果変更回路に対しては、０を供給する。これにより、ｋ＋１〜ｎ番目のビットに関する判定結果は、全て０になる。更新ビット選択回路２２ｅは、判定結果が１になるビットから更新ビットを選択するため、ｋ＋１〜ｎ番目のビットは、更新ビットとして選択されず、１〜ｋ番目のビットの中から更新ビットが選択される。つまり、記憶部２１に記憶されている重み係数群Ｗｋｌの範囲で、更新ビットが選択される。
【００８６】
ステップＳ４に相当する処理として、演算回路２２は、重み係数群Ｗｋｌと、更新ビットの情報（識別番号ｉｄや更新後の値）に基づいて、ｋ個のビットのそれぞれの値が変化することによるイジングモデルのエネルギー変化を計算する。この処理は、演算回路２２のΔＥ計算回路２２ｂ１〜２２ｂｎを用いて行われる。
【００８７】
ステップＳ５に相当する処理として、演算回路２２は、計算したエネルギー変化に基づいて、複数のビットのうちの１つの更新を確率的に許容する処理を行い、更新を許容するビットの有無を判定する。この処理は、演算回路２２の更新判定回路２２ｃ１〜２２ｃｎ、更新ビット選択回路２２ｅを用いて行われる。
【００８８】
ステップＳ６に相当する処理として、演算回路２２の状態更新回路２２ｇは、更新を許容するビットがある場合、そのビットの値を０から１または１から０に変化させることで、イジングモデルの状態を更新する。
【００８９】
ステップＳ７に相当する処理として、演算回路２２のカウンタ２２ｈと比較回路２２ｉにより、更新判定処理回数ｃ１が所定の回数Ｎに達したか否かが判定される。
また、ステップＳ８に相当する処理として、制御部２３のカウンタ２３ｂと比較回路２３ｃにより、重み係数群Ｗｋｌの更新回数ｃ２が所定の回数Ｍに達したか否かが判定される。
【００９０】
更新判定処理回数ｃ１が所定の回数Ｎに達し、重み係数群Ｗｋｌの更新回数ｃ２が回数Ｍに達していない場合、コントローラ２３ａは、再度、ステップＳ１，Ｓ２に相当する処理を行う。すなわち、コントローラ２３ａは、記憶装置３０に対して、次に記憶部２１に記憶する重み係数群Ｗｋｌを指定し、記憶部２１に記憶する重み係数群Ｗｋｌを更新する。その後、ステップＳ３に相当する処理が再び行われる。
【００９１】
図７は、重み係数群の更新例を示す図である。
更新回数ｃ２＝０のとき、記憶部２１には、コントローラ２３ａによって記憶装置３０から読み出された１〜ｋ番目のビットに関する重み係数群が、重み係数群Ｗｋｌとして記憶されている。
【００９２】
１回目の更新の際（更新回数ｃ２＝１）には、２〜ｋ＋１番目のビットに関する重み係数群が記憶部２１に記憶されるように、重み係数群Ｗｋｌが更新される。この場合、コントローラ２３ａは、ｋ＋１番目のビットに関する重み係数Ｗ（ｋ＋１）１，Ｗ（ｋ＋２）２，…，Ｗ（ｋ＋１）ｎだけを記憶装置３０から読み出し、１番目のビットに関する重み係数Ｗ１１，Ｗ１２，…，Ｗ１ｎの代りに記憶部２１に記憶すればよい。
【００９３】
図８は、重み係数群の更新がある回数行われた後の記憶部の記憶例を示す図である。
図８には、記憶部２１に重み係数群Ｗｋｌとして、ｐ〜ｑ番目のビット（ｋ個のビット）に関する重み係数群が記憶されている。この場合、コントローラ２３ａは、識別番号ｉｄｗとしてｐを出力する。そして、選択回路２２ａは、判定結果変更回路２２ｄ１〜２２ｄｎのうち、ｐ〜ｑ番目のビットに関する判定結果を入力する判定結果変更回路２２ｄｐ，…，２２ｄｉ，…，２２ｄｑに対しては、１を供給する。また、選択回路２２ａは、その他のビットに関する判定結果を入力する判定結果変更回路に対しては、０を供給する。これにより、ｐ〜ｑ番目のビット以外のビットに関する判定結果は、全て０になる。更新ビット選択回路２２ｅは、判定結果が１になるビットから更新ビットを選択するため、ｐ〜ｑ番目のビット以外のビットは、更新ビットとして選択されず、ｐ〜ｑ番目のビットの中から更新ビットが選択される。
【００９４】
たとえば、ｐ＜ｉ＜ｑであるｉ番目のビットが更新ビットとして選択された場合、選択回路２２ａには識別番号ｉｄ＝ｉが入力される。このとき、選択回路２２ａは、ΔＥ計算回路２２ｂｐには重み係数Ｗｐｉを選択して供給し、ΔＥ計算回路２２ｂｉには重み係数Ｗｉｉを選択して供給し、ΔＥ計算回路２２ｂｑには重み係数Ｗｑｉを選択して供給する。
【００９５】
そして、ΔＥ計算回路２２ｂｐは、重み係数Ｗｐｉと、ｉ番目のビットの更新後の値を示す変数ｘｉに基づいて、ｐ番目のビットの値を示す変数ｘｐが変化することによるイジングモデルのエネルギー変化を計算する。ΔＥ計算回路２２ｂｉは、重み係数Ｗｉｉと、ｉ番目のビットの更新後の値を示す変数ｘｉに基づいて、変数ｘｉがさらに変化することによるイジングモデルのエネルギー変化を計算する。ΔＥ計算回路２２ｂｑは、重み係数Ｗｑｉと、ｉ番目のビットの更新後の値を示す変数ｘｉに基づいて、ｑ番目のビットの値を示す変数ｘｑが変化することによるイジングモデルのエネルギー変化を計算する。
【００９６】
更新判定回路２２ｃｐは、ΔＥ計算回路２２ｂｐが計算したエネルギー変化と、熱励起エネルギーと、オフセット値ｏｆｆに基づいて、ｐ番目のビットの更新を許容するか否かを判定する。更新判定回路２２ｃｉは、ΔＥ計算回路２２ｂｉが計算したエネルギー変化と、熱励起エネルギーと、オフセット値ｏｆｆに基づいて、ｉ番目のビットの更新を許容するか否かを判定する。更新判定回路２２ｃｑは、ΔＥ計算回路２２ｂｑが計算したエネルギー変化と、熱励起エネルギーと、オフセット値ｏｆｆに基づいて、ｑ番目のビットの更新を許容するか否かを判定する。
【００９７】
重み係数群Ｗｋｌの更新回数ｃ２が回数Ｍに達した場合、コントローラ２３ａは、ステップＳ９に相当する処理として、イジングモデルの全ビットの値で表される状態を、たとえば、状態更新回路２２ｇ内の図示しないレジスタから取得する。そして、コントローラ２３ａは、取得した状態を最適化装置２０の外部に出力し、処理を終える。
【００９８】
上記のような第２の実施の形態の最適化装置２０によれば、第１の実施の形態の最適化装置１０と同様の効果が得られる。
図９は、問題規模と処理時間との関係を表すシミュレーション結果の一例を示す図である。図９において、横軸はある問題の規模（ビット数ｎ）を表し、縦軸は処理時間（ｓ（秒））を表している。
【００９９】
シミュレーション条件は以下の通りである。記憶部２１（内部メモリ）から重み係数を読み出すためのアクセス時間は１０ｎｓ、記憶装置３０（外部メモリ）から重み係数を読み出すためのアクセス時間は１００ｎｓである。トライアル数（Ｎ×Ｍ回）は、１００００００回、１回の更新判定処理にかかる時間は５ｎｓ、結合数は全結合（つまり、重み係数の数はｎ２）、記憶部２１の記憶容量は２ＭＢ、各重み係数のビット幅は１６ビットである。
【０１００】
図９には、第２の実施の形態の最適化装置２０を用いたシミュレーション結果６０が示されている。さらに、図９には、図４に示した処理を行う最適化装置（一部の重み係数群を内部メモリに保持するが、エネルギー変化の計算に用いる重み係数がない場合にはその都度外部メモリから重み係数を読み出すもの）を用いたシミュレーション結果６１が示されている。
【０１０１】
シミュレーション結果６０に示されるように、最適化装置２０を用いた場合、問題の規模が増加しても処理時間の増加は少ない。図４に示した処理を行う最適化装置を用いたシミュレーション結果６１とシミュレーション結果６０とを比較した場合、最適化装置２０は、問題規模の増加の影響をほとんど受けないとみなせる。
【０１０２】
図１０は、トライアル数と処理時間との関係を表すシミュレーション結果の一例を示す図である。図１０において、横軸はトライアル数を表し、縦軸は処理時間（ｓ（秒））を表している。
【０１０３】
シミュレーション条件は以下の通りである。記憶部２１（内部メモリ）から重み係数を読み出すためのアクセス時間は１０ｎｓ、記憶装置３０（外部メモリ）から重み係数を読み出すためのアクセス時間は１００ｎｓである。問題の規模はｎ＝１００００ビット、１回の更新判定処理にかかる時間は５ｎｓ、結合数は全結合（つまり、重み係数の数は１００００２）、記憶部２１の記憶容量は２ＭＢ、各重み係数のビット幅は１６ビットである。
【０１０４】
図１０には、第２の実施の形態の最適化装置２０を用いたシミュレーション結果６２が示されている。さらに、図１０には、図４に示した処理を行う最適化装置を用いたシミュレーション結果６３が示されている。
【０１０５】
シミュレーション結果６２に示されるように、最適化装置２０を用いた場合、トライアル数が増加に対する処理時間の増加は、図４に示した処理を行う最適化装置を用いた場合と比べて小さいことが確認できる。
【０１０６】
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１０７】
１０  最適化装置
１０ａ  記憶部
１０ｂ  演算回路
１０ｃ  制御部
１１  記憶装置
【図１】
2020038435.tif 000006
【図２】
2020038435.tif 000007
【図３】
2020038435.tif 000008
【図４】
2020038435.tif 000009
【図５】
2020038435.tif 000010
【図６】
2020038435.tif 000011
【図７】
2020038435.tif 000012
【図８】
2020038435.tif 000013
【図９】
2020038435.tif 000014
【図１０】
2020038435.tif 000015