(57)【要約】【課題】基底状態の探索を高速化する。【解決手段】状態保持部２１は、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。目的関数計算部２２は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、評価関数に含まれる目的関数におけるエネルギーの変化値を複数の状態遷移のそれぞれに対して計算する。制約項計算部２３は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、評価関数に含まれる制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算する。温度制御部２４は、温度を示す温度値を制御し、遷移制御部２５は、目的関数におけるエネルギーの変化値と制約項評価値との和である評価値並びに温度値及び乱数値に基づいて、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。【選択図】図１
2020106917.tif 000002
【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる目的関数におけるエネルギーの変化値を複数の状態遷移のそれぞれに対して計算する目的関数計算部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算する制約項計算部と、
温度を示す温度値を制御する温度制御部と、
前記変化値と前記制約項評価値との和である評価値並びに前記温度値及び乱数値に基づいて、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部と、
を有する最適化装置。
【請求項２】
前記制約項計算部は、前記複数の状態変数の値の何れかが変化する前後の前記制約項のエネルギーのそれぞれに対して大きさを制限する非線形処理を施した第１の非線形制約項と第２の非線形制約項とを前記複数の状態遷移のそれぞれに対して計算し、前記第１の非線形制約項と前記第２の非線形制約項との差分である前記制約項評価値を前記複数の状態遷移のそれぞれに対して計算する、請求項１に記載の最適化装置。
【請求項３】
前記第１の非線形制約項または前記第２の非線形制約項は、前記制約項のエネルギーに応じて階段状または曲線状に増加し、所定の上限値をもつ、請求項２に記載の最適化装置。
【請求項４】
前記制約項計算部は、前記複数の状態変数の値と、前記制約項に関する重み係数とバイアス係数とに基づいて前記制約項のエネルギーを計算し、前記制約項のエネルギーを出力する、請求項１乃至３の何れか一項に記載の最適化装置。
【請求項５】
前記制約項計算部は、入力されるイネーブル信号に基づいて、前記遷移制御部に、前記制約項評価値を供給するか、前記制約項評価値の代りに０を供給するかを選択する、請求項１乃至４の何れか一項に記載の最適化装置。
【請求項６】
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する目的関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる目的関数におけるエネルギーの変化値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する制約項計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、前記変化値と前記制約項評価値との和である評価値並びに前記温度値及び乱数値に基づいて、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化装置及び最適化装置の制御方法に関する。
【背景技術】
【０００２】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置を用いて行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の１つの分野として最適化問題があり重要な分野となっている。例えば、ある処理を行う場合に必要な資源やコストを最小化する問題、またはその処理による効果を最大化する解を求める問題などである。これらの問題が非常に重要であるのは明らかであろう。
【０００３】
最適化問題の代表的なものとして線形計画問題がある。これは複数の連続変数の線形和で表される評価関数を、線形和で表される制約条件の下で最大化または最小化する変数の値を求めるものであり、製品の生産計画など様々な分野で利用されている。この線形計画問題には単体法や内点法といった優れた解法が知られており、何十万以上の変数を持つ問題でも効率的に解くことができる。
【０００４】
一方最適化問題には、変数が連続値ではなく離散的な値を取るものも多く知られている。例えば、複数の都市を順番に回り元に戻るときの最短経路を求める巡回セールスマン問題や、ナップザックに異なる品物を詰めるときその価値の和が最大となるような組み合わせを求めるナップザック問題などが挙げられる。このような問題は、離散最適化問題、組合せ最適化問題などと呼ばれ、最適解を得るのが非常に難しいことが知られている。
【０００５】
離散最適化問題を解くのが難しい最大の原因は、各変数が離散値しか取れないため、評価関数が改善される方向に変数を連続的に変化させることで最適解に到達させるという手法が使えないことである。そして本来の最適値を与える変数の値（最適解、大域解）以外に、局所的に評価関数の極値を与える値（極小（大）解、局所解）が非常に多数存在することである。このため最適解を確実に得るにはしらみつぶしのような方法を取らざるを得ず、計算時間が非常に長くなる。離散最適化問題には計算量理論でＮＰ（Non-deterministic Polynomial）困難問題と呼ばれる、最適解を求めるための計算時間が問題の大きさ（すなわち変数の数）に対して指数的に増加すると予想される問題が多い。上記巡回セールスマン問題やナップザック問題もＮＰ困難問題である。
【０００６】
以上述べたように、離散最適化問題の最適解を確実に求めることは非常に困難である。このため実用上重要な離散最適化問題にはその問題に固有な性質を利用した解法が考え出されている。上記のように多くの離散最適化問題では厳密解を得るには指数関数的に増大する計算時間がかかると予想されるため、実用的な解法の多くは近似解法であり、最適解ではないものの評価関数の値が最適値に近い値となる解を得ることができるものである。
【０００７】
これらの問題に特化した近似解法に対して、問題の性質を用いることなく解くため広範囲な問題を扱える近似解法も知られている。これらはメタヒューリスティックな解法と呼ばれ、疑似焼き鈍し法（シミュレーテッド・アニーリング法、ＳＡ法）、遺伝的アルゴリズム、ニューラルネットワークなどが挙げられる。これらの方法は、問題の性質をうまく利用した解法よりは効率が悪い可能性があるが、厳密解を得る解法よりは高速に解を得ることが期待できる。
【０００８】
以下、疑似焼き鈍し法について説明する。
疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【０００９】
各変数に離散値の１つを代入した初期状態からはじめ、現在の状態（変数の値の組み合わせ）から、それに近い状態（例えば１つの変数だけ変化させた状態）を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。上記のように離散最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
【００１０】
疑似焼き鈍し法においては、状態遷移の採択（受入）確率を次のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
状態遷移に伴うエネルギー変化（ΔＥ）に対して、その状態遷移の受入確率ｐは式（１）で表される次の関数ｆ（ｘ）により決める。式（２）はメトロポリス法である。式（３）はギブス法である。
【００１１】
【数１】
2020106917.tif 000003
【００１２】
【数２】
2020106917.tif 000004
【００１３】
【数３】
2020106917.tif 000005
【００１４】
ここでＴは温度を示す値であり、次のように変化させる。
すなわち、温度Ｔを次式で表されるように反復回数ｔに対数的に減少させる。
【００１５】
【数４】
2020106917.tif 000006
【００１６】
ここでＴ０は初期温度であり問題に応じて十分大きくとる必要がある。
式（１）〜（３）で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００１７】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では対数的な温度変化ではなくより早く温度を下げることが多い。
【００１８】
図７に疑似焼き鈍し法による最適化装置の概念的構成を示す。ただし、下記説明では、状態遷移の候補を複数発生させる場合についても述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を１つずつ発生させるものである。
【００１９】
最適化装置１０には、まず現在の状態ｓ（複数の状態変数の値）を保持する状態保持部１１がある。また、複数の状態変数の値の何れかが変化することによる現在の状態ｓからの状態遷移が起こった場合の、各状態遷移のエネルギーの変化値（以下エネルギー変化｛−ΔＥｉ｝と表記する）を計算する評価関数計算部１２がある。そして、最適化装置１０には、温度Ｔを制御する温度制御部１３、状態変化を制御するための遷移制御部１４がある。遷移制御部１４は、温度Ｔとエネルギー変化｛−ΔＥｉ｝と乱数値とに基づいて、エネルギー変化｛−ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定するものである。さらに、最適化装置１０には、状態遷移により生じた各状態のうち、最低エネルギー状態Ｓを特定するエネルギー比較部１５がある。
【００２０】
一回の反復における動作は次のようなものである。まず、遷移制御部１４は、状態保持部１１に保持された現在の状態ｓから次の状態への状態遷移の候補（候補番号｛Ｎｉ｝）を１つまたは複数発生する。評価関数計算部１２は、現在の状態ｓと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化｛−ΔＥｉ｝を計算する。遷移制御部１４は、温度制御部１３で発生した温度Ｔと遷移制御部１４内の乱数生成部で生成した確率変数（乱数値）を用い、各状態遷移のエネルギー変化｛−ΔＥｉ｝に応じて、上記の式（１）〜（３）の受入確率でその状態遷移を許容する。そして、遷移制御部１４は、各状態遷移を受け入れるか否か（以下状態遷移の可否という場合もある）を示す遷移可否｛ｆｉ｝を計算する。許容された状態遷移が複数ある場合には、遷移制御部１４は、乱数値を用いてランダムにそのうちの１つを選択する。そして、遷移制御部１４は、選択した状態遷移の遷移番号Ｎと、遷移可否Ｆを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部１１に記憶された状態変数の値が更新される。
【００２１】
初期状態から始めて、温度制御部１３で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したときや、エネルギーが一定の値を下回るなどの終了判定条件が満たされたときに、動作が終了する。最適化装置１０が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度Ｔが０にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００２２】
ここで、遷移制御部１４により、式（１）〜（３）で表される受入確率で状態遷移を許容するメカニズムについてはこれまで説明していないのでこれを補足する。
受入確率ｐで１を、（１−ｐ）で０を出力する回路は、２つの入力ａ，ｂを持ち、ａ＞ｂのとき１を出力し、ａ＜ｂのとき０を出力する比較器の入力ａに受入確率ｐを、入力ｂに区間［０，１）の値をとる一様乱数を入力することで実現することができる。したがってこの比較器の入力ａに、エネルギー変化と温度Ｔにより式（１）を用いて計算される受入確率ｐの値を入力すれば、上記の機能を実現することができる。
【００２３】
すなわちｆを式（１）で用いる関数、ｕを区間［０，１）の値をとる一様乱数とするとき、ｆ（ΔＥ／Ｔ）がｕより大きいとき遷移可否Ｆとして１を出力する回路で、上記の機能を実現できる。
【００２４】
このままでもよいのだが、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてｆの逆関数ｆ−１を採用すると、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥ／Ｔがｆ−１（ｕ）以下のとき１を出力する回路でよいことがわかる。さらに、温度Ｔが正であることから−ΔＥがＴｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥがＴｆ−１（ｕ）以下のとき１を出力する回路でよい。遷移制御部１４は、一様乱数ｕを生成し、上記のｆ−１（ｕ）の値に変換する変換テーブルを用いて、ｆ−１（ｕ）の値を出力する。メトロポリス法が適用される場合、ｆ−１（ｕ）は、式（５）で与えられる。また、ギブス法が適用される場合、ｆ−１（ｕ）は、式（６）で与えられる。
【００２５】
【数５】
2020106917.tif 000007
【００２６】
【数６】
2020106917.tif 000008
【００２７】
ところで、上記のような擬似焼き鈍し法で最適化問題を解く場合、最小化すべき評価関数は、本来最小化したい数値を表す目的関数と解が満たさなければならない制約条件に対する違反を制限するための制約項とを含む場合が多い（例えば、特許文献１，２参照）。なお、イジングモデルの評価関数では、制約項は２次形式で表現される。
【先行技術文献】
【特許文献】
【００２８】
【特許文献１】特開２００３−２２３３２２号公報
【特許文献２】特開平８−１５３０８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００２９】
最低エネルギーの解が制約違反を含まないようにするため、制約項の比例係数であるペナルティ係数はあまり小さくすることができない。一方、ペナルティ係数を大きくしすぎると、制約違反状態への遷移の受入確率が低くなりすぎ、解が最適解に到達する時間が長くなる。また、多くの組み合わせ最適化問題の計算では、複数の制約条件に対応した複数の制約項を含む評価関数が用いられ、解は複数の制約条件を違反している制約違反状態を何度も経由して最適解に到達することが多い。そのような問題では、制約項によるポテンシャルの山はさらに高くなり、制約違反状態への遷移の受入確率がさらに低くなり、最適解（基底状態）の探索には非常に長い時間がかかってしまう。
【００３０】
１つの側面では、本発明は、基底状態の探索を高速化可能な最適化装置及び最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００３１】
１つの実施態様では、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる目的関数におけるエネルギーの変化値を複数の状態遷移のそれぞれに対して計算する目的関数計算部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記評価関数に含まれる制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算する制約項計算部と、温度を示す温度値を制御する温度制御部と、前記変化値と前記制約項評価値との和である評価値並びに前記温度値及び乱数値に基づいて、前記複数の状態遷移の何れかを受け入れるか否かを確率的に決定する遷移制御部と、を有する最適化装置が提供される。
【００３２】
また、１つの実施態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００３３】
１つの側面では、基底状態の探索が高速化できる。
【図面の簡単な説明】
【００３４】
【図１】第１の実施の形態の最適化装置の例を示す図である。
【図２】最適化装置による動作の一例の流れを示すフローチャートである。
【図３】非線形関数の例を示す図である。
【図４】第２の実施の形態の最適化装置の例を示す図である。
【図５】重み係数及びバイアス係数の分離処理を含む最適化装置による動作の一例の流れを示すフローチャートである。
【図６】目的関数成分と制約項成分の分離例を示す図である。
【図７】疑似焼き鈍し法による最適化装置の概念的構成を示す。
【発明を実施するための形態】
【００３５】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の最適化装置の例を示す図である。
【００３６】
最適化装置２０は、状態保持部２１、目的関数計算部２２、制約項計算部２３、温度制御部２４、遷移制御部２５、エネルギー比較部２６を有する。
状態保持部２１は、エネルギーを表す評価関数に含まれる状態ｓ（複数の状態変数の値）を保持する。また、状態保持部２１は、遷移制御部２５が出力する遷移可否Ｆと遷移番号Ｎに基づいて、状態変数の値を更新する。状態保持部２１は、例えば、複数の状態変数の値をそれぞれ保持するレジスタやメモリ（例えば、ＲＡＭ（Random Access Memory））、遷移可否Ｆと遷移番号Ｎに基づいて、状態変数の値を１から０または０から１に反転する論理回路などを用いて実現できる。遷移可否Ｆが遷移番号Ｎの状態遷移を許容する値（例えば、１）である場合、遷移番号Ｎに対応する状態変数の値が反転される。
【００３７】
目的関数計算部２２は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、評価関数に含まれる目的関数におけるエネルギーの変化値を複数の状態遷移のそれぞれに対して計算する。以下では、複数の状態遷移のそれぞれに対して計算された目的関数におけるエネルギーの変化値を、エネルギー変化｛−ΔＥｏｉ｝と表記する。
【００３８】
目的関数のエネルギーＥｏは、複数の状態変数の値と、目的関数に関する重み係数（結合係数とも呼ばれる）とバイアス係数とに基づいて、以下の式（７）で表される。
【００３９】
【数７】
2020106917.tif 000009
【００４０】
式（７）において、ｘｉ，ｘｊは状態変数であり、Ｗｏ＿ｉｊは目的関数における状態変数ｘｉ，ｘｊの間の重み係数であり、βｏ＿ｉは目的関数における状態変数ｘｉについてのバイアス係数である。
【００４１】
目的関数計算部２２は、現在の目的関数のエネルギーと、複数の状態遷移（後述する候補番号｛Ｎｉ｝により指定された状態遷移）のそれぞれが起こる場合の目的関数のエネルギーとを計算する。そして、目的関数計算部２２は、現在の目的関数のエネルギーと、複数の状態遷移のそれぞれが起こる場合の目的関数のエネルギーのそれぞれとの差分であるエネルギー変化｛−ΔＥｏｉ｝を計算する。例えば、ｘｉの値が反転したときの目的関数のエネルギーの変化ΔＥｏｉは、以下の式（８）で表される。
【００４２】
【数８】
2020106917.tif 000010
【００４３】
式（８）において、Ｅｏ＿ｉはｘｉの値の反転後の目的関数のエネルギーであり、Ｅｏ＿ｃｕｒｒｅｎｔは現在（ｘｉの変化前）の目的関数のエネルギーである。目的関数計算部２２は、例えば、積和演算回路などの論理回路、重み係数やバイアス係数を保持するレジスタまたはメモリ（例えば、ＲＡＭ）などを用いて実現される。なお、重み係数やバイアス係数を保持するレジスタまたはメモリは、目的関数計算部２２の外にあってもよい。
【００４４】
制約項計算部２３は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、評価関数における制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算する。制約項評価値は、例えば、以下のように計算される。なお、以下では、複数の状態遷移のそれぞれに対して計算された制約項評価値を、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝と表記する場合もある。
【００４５】
制約項のエネルギーＥｐは、複数の状態変数の値と、制約項に関する重み係数とバイアス係数とに基づいて、以下の式（９）で表される。
【００４６】
【数９】
2020106917.tif 000011
【００４７】
式（９）において、Ｗｐ＿ｉｊは制約項における状態変数ｘｉ，ｘｊの間の重み係数であり、βｐ＿ｉは制約項における状態変数ｘｉについてのバイアス係数である。
制約項計算部２３は、複数の状態変数の何れかが変化する前後の制約項のエネルギーを計算する。すなわち、制約項計算部２３は、現在の制約項のエネルギーと、複数の状態遷移（後述する候補番号｛Ｎｉ｝により指定された状態遷移）のそれぞれが起こる場合の制約項のエネルギーとを計算する。
【００４８】
そして、制約項計算部２３は、複数の状態変数の何れかが変化する前後の制約項のエネルギーのそれぞれに対して大きさを制限する非線形処理を施した第１の非線形制約項と第２の非線形制約項を複数の状態遷移のそれぞれに対して計算する。その上で、制約項計算部２３は、第１の非線形制約項と第２の非線形制約項との差分であるエネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を、複数の状態遷移のそれぞれに対して計算する。例えば、ｘｉの値が変化したときの制約項評価値であるエネルギー変化ΔＥｐｉ＿ｎｌは、以下の式（１０）で表される。
【００４９】
【数１０】
2020106917.tif 000012
【００５０】
式（１０）において、ｆ（Ｅｐ＿ｉ）は、ｘｉの値の変化後の制約項のエネルギーＥｐ＿ｉに対して非線形処理を行うことで計算される非線形制約項である。ｆ（Ｅｐ＿ｃｕｒｒｅｎｔ）は、現在（ｘｉの変化前）の制約項のエネルギーＥｐ＿ｃｕｒｒｅｎｔに対して非線形処理を行うことで計算される非線形制約項である。
【００５１】
さらに、制約項計算部２３は、計算した制約項のエネルギーＥｐ（例えば、エネルギーＥｐ＿ｃｕｒｒｅｎｔ）を出力してもよい。
制約項計算部２３は、例えば、積和演算回路などの論理回路、重み係数やバイアス係数を保持するレジスタまたはメモリの他、非線形処理を行う回路（例えば、制約項のエネルギーに応じた値を選択して出力する選択回路）などを用いて実現される。なお、重み係数やバイアス係数を保持するレジスタまたはメモリは、制約項計算部２３の外にあってもよい。
【００５２】
温度制御部２４は、温度Ｔを制御する。温度制御部２４は、擬似焼き鈍し法を実現するために、例えば、温度Ｔを所定のスケジュールにしたがって下げていく制御を行う。
温度制御部２４は、たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路にて実現できる。なお、温度制御部２４は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の温度Ｔの制御を行う。
【００５３】
遷移制御部２５は、エネルギー変化｛−ΔＥｏｉ｝とエネルギー変化｛−ΔＥｐｉ＿ｎｌ｝との和である評価値並びに温度Ｔ及び乱数値に基づいて、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。例えば、遷移制御部２５は、乱数値を用いて候補番号｛Ｎｉ｝を生成して出力する。また、遷移制御部２５は、評価値として｛−ΔＥｉ｝＝｛−ΔＥｏｉ｝＋｛−ΔＥｐｉ＿ｎｌ｝を候補番号｛Ｎｉ｝で指定された複数の状態遷移のそれぞれに対して計算する。さらに、遷移制御部２５は、温度Ｔと乱数値との積Ｔｆ−１（ｕ）（熱励起エネルギーに相当する）を算出する。そして、遷移制御部２５は、Ｔｆ−１（ｕ）と｛−ΔＥｉ｝との比較結果に応じて、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する。遷移制御部２５が、｛−ΔＥｉ｝＜Ｔｆ−１（ｕ）の場合に、状態遷移を受け入れることを示す遷移可否Ｆを出力する回路である場合、｛−ΔＥｉ｝が正に大きくなるほど、状態遷移の受入確率は小さくなる。許容された状態遷移が複数ある場合には、遷移制御部２５は、乱数値を用いてランダムにそのうちの１つを選択する。そして、遷移制御部２５は、選択した状態遷移の遷移番号Ｎと、遷移可否Ｆを出力する。
【００５４】
なお、遷移制御部２５は許容された状態遷移がない場合、状態遷移の受入確率が上昇するように、エネルギー変化｛−ΔＥｏｉ｝またはＴｆ−１（ｕ）の一方にオフセット値を加算または減算するようにしてもよい（例えば特開２０１８−０６３６２６号公報参照）。
【００５５】
上記のような遷移制御部２５は、例えば、加算回路、乗算回路、セレクタ、比較器、乱数発生回路、乱数値に応じたｆ−１（ｕ）を記憶するメモリ（例えば、ＲＡＭ）などを用いて実現可能である。
【００５６】
エネルギー比較部２６は、現在の状態ｓを受け、目的関数と制約項に関する重み係数とバイアス値とを用いて現在の状態ｓに対するエネルギーを計算する。また、エネルギー比較部２６は、最低エネルギーと最低エネルギーが得られたときの状態（最低エネルギー状態Ｓ）を保持している。エネルギー比較部２６は、現在の状態ｓから得られたエネルギーが、これまでの最低エネルギーよりも低い場合には最低エネルギーを更新するとともに、その状態ｓを、最低エネルギー状態Ｓとして記憶する。また、エネルギー比較部２６は、最低エネルギー状態Ｓを出力する。
【００５７】
このようなエネルギー比較部２６は、例えば、比較器、レジスタまたはメモリ（例えば、ＲＡＭ）を用いて実現可能である。
以下、最適化装置２０の動作例を説明する。
【００５８】
図２は、最適化装置による動作の一例の流れを示すフローチャートである。
まず、最適化装置２０において、反復回数を管理する図示しない制御部（コントローラ）により反復回数が初期化される（ステップＳ１）。その後、前述した目的関数計算部２２と制約項計算部２３の処理により、エネルギー変化｛−ΔＥｏｉ｝と、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝（制約項評価値）が計算される（ステップＳ２）。
【００５９】
そして、遷移制御部２５により、変化値（｛−ΔＥｏｉ｝）と制約項評価値（｛−ΔＥｐｉ＿ｎｌ｝）との和である評価値である｛−ΔＥｉ｝＝｛−ΔＥｏｉ｝＋｛−ΔＥｐｉ＿ｎｌ｝の計算が行われ（ステップＳ３）、確率的探索が行われる（ステップＳ４）。確率的探索は、前述した、遷移制御部２５が｛−ΔＥｉ｝並びに温度Ｔ及び乱数値に基づいて、複数の状態遷移の何れかを受け入れるか否かを確率的に決定する処理や、状態保持部２１が、遷移可否Ｆ、遷移番号Ｎに基づいて状態変数を更新する処理を含む。
【００６０】
その後、制御部により反復回数がインクリメントされ（ステップＳ５）、反復回数が所定回数に達したか否かが判定される（ステップＳ６）。反復回数が所定回数に達していない場合には、ステップＳ２からの処理が繰り返され、反復回数が所定回数に達した場合、制御部は、エネルギー比較部２６に最低エネルギー状態Ｓを出力させ（ステップＳ７）、処理を終える。なお、図２には示されていないが、温度制御部２４は、擬似焼き鈍し法を実現するために、例えば、反復回数がある回数（上記の所定回数よりも少ない）に達するたびに、温度Ｔを下げていく制御を行う。このため、温度制御部２４が、反復回数を管理する制御部（コントローラ）の処理を行ってもよい。
【００６１】
上記のような最適化装置２０は、複数の状態変数の何れかが変化する前後の制約項のエネルギーの差分を遷移可否の判定に用いるのではなく、制約項の評価値である制約項評価値を複数の状態遷移のそれぞれに対して計算し、遷移可否の判定に用いている。例えば、複数の制約条件を違反している制約違反状態における制約項のエネルギーは非常に大きくなり、制約項のエネルギーの差分を遷移可否の判定に用いた場合、その差分も大きくなり、制約違反状態への遷移の受入確率が非常に小さくなってしまう。
【００６２】
これに対し、最適化装置２０は、上記のような制約項評価値を用いることで、制約項のエネルギーが大きい場合でも、｛−ΔＥｉ｝が大きくなることを制限でき、制約違反状態への遷移の受入確率を高められる。これによって、ある状態から制約違反状態を介して、エネルギーがより低い状態へ移るような遷移（ポテンシャルの山を越えるような遷移）が促進されるため、基底状態の探索が高速化できる。つまり、最適化に到達する時間を短縮することができる。
【００６３】
また、制約項計算部２３が、計算した制約項のエネルギーＥｐを出力することで、現在の状態が制約違反を含んでいるか否かを容易に確認できる。エネルギーＥｐが０か否かによって、制約違反の有無が判別できるためである。なお、最低エネルギー状態Ｓが得られたときの制約項のエネルギーＥｐがレジスタやメモリに記憶されるようにしてもよい。これにより、最低エネルギー状態Ｓが制約違反を含んでいるか否かを容易に確認できる。
【００６４】
（非線形処理例）
以下、制約項評価値（エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝）の計算時に行われる非線形処理の例を説明する。
【００６５】
非線形処理の際には、例えば、以下の３つの非線形関数の何れかが用いられる。
図３は、非線形関数の例を示す図である。
１つ目の非線形関数の例（非線形関数１）は、最も簡素に制約項のエネルギーＥｐの上限を制限可能にする関数である。
【００６６】
非線形関数１は、前述の非線形制約項であるｆ（Ｅｐ＿ｉ），ｆ（Ｅｐ＿ｃｕｒｒｅｎｔ）（以下では、ｆ（Ｅｐ）とする）を平坦化（段数が１段の階段状に）する。例えば図３のように、非線形関数１は、制約項のエネルギーＥｐが０より大きい場合（つまり制約違反状態である場合）、ｆ（Ｅｐ）＝ｐａ、エネルギーＥｐが０の場合（つまり制約違反状態ではない場合）、ｆ（Ｅｐ）＝０となる関数である。
【００６７】
ペナルティ係数パラメータｐａは、０より大きい一定の値である。ペナルティ係数パラメータｐａは、制約項のエネルギーの最大値よりも小さく、最低エネルギー状態Ｓが何れの制約条件をも違反しないように適切に設定される。
【００６８】
このような非線形関数１を用いた場合、ある状態がいくつ制約条件を違反していても、その状態の制約項のエネルギーＥｐの非線形制約項であるｆ（Ｅｐ）は、一定の上限値（＝ｐａ）となる。
【００６９】
２つ目の非線形関数の例（非線形関数２）は、ｆ（Ｅｐ）をエネルギーＥｐに応じてステップ化する（複数段の階段状にする）。例えば図３のように、非線形関数２は、制約項のエネルギーＥｐが０の場合、ｆ（Ｅｐ）＝０、０＜Ｅｐ≦ａの場合、ｆ（Ｅｐ）＝ｐＡ、ａ＜Ｅｐ≦ｂの場合、ｆ（Ｅｐ）＝ｐＢ、ｂ＜Ｅｐの場合、ｆ（Ｅｐ）＝ｐｃとなる関数である。
【００７０】
ペナルティ係数パラメータｐＡ，ｐＢ，ｐＣは、０＜ｐＡ＜ｐＢ＜ｐＣという関係にある。ペナルティ係数パラメータｐＡ，ｐＢ，ｐＣの中で最も大きい、ペナルティ係数パラメータｐＣは、制約項のエネルギーの最大値よりも小さく、状態遷移の受入確率がある程度保たれる範囲内で適切に設定される。
【００７１】
このような非線形関数２を用いた場合、制約項のエネルギーＥｐに応じた複数のｆ（Ｅｐ）が得られるため、状態の制約違反の多さに応じて複数段階で状態遷移の受入確率を変えることができる。また、非線形関数２を用いた場合、ある状態がいくつ制約条件を違反していても、その状態の制約項のエネルギーＥｐの非線形制約項であるｆ（Ｅｐ）は、ペナルティ係数パラメータｐＣ（上限値）より大きくならない。
【００７２】
なお、図３の非線形関数２の例では、エネルギーＥｐに応じて４段階でｆ（Ｅｐ）を変えているが、３段階または５段階以上でｆ（Ｅｐ）を変えてもよい。
３つ目の非線形関数の例（非線形関数３）は、ｆ（Ｅｐ）をエネルギーＥｐに応じて曲線状に変える。非線形関数３は、例えば図３のように、ｆ（Ｅｐ）がエネルギーＥｐの増加に応じて所定の上限値に収束するような関数である。このような非線形関数３は、制約項計算部２３が参照可能なメモリに予め記憶された、エネルギーＥｐとｆ（Ｅｐ）との対応関係を示す情報（テーブル情報）により実現されるようにしてもよい。また、非線形関数３は、制約項計算部２３が単調増加関数演算を行うことにより実現されるようにしてもよい。
【００７３】
このような非線形関数３を用いた場合、制約項のエネルギーＥｐに応じて、ｆ（Ｅｐ）をより細かく表現できるため、制約項の最適化を効率よく行うことができる。
（第２の実施の形態）
図４は、第２の実施の形態の最適化装置の例を示す図である。図４において、図１に示した最適化装置２０と同じ要素については同じ符号が付されている。
【００７４】
第２の実施の形態の最適化装置３０において、制約項計算部２３ａは、最適化装置２０の制約項計算部２３と同様の機能を有するとともに、イネーブル信号ＥＮに応じて、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を計算する機能を有効または無効にする機能を有する。
【００７５】
例えば、イネーブル信号ＥＮが１の場合、制約項計算部２３ａは、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を計算する機能を有効にし、イネーブル信号ＥＮが０の場合、制約項計算部２３ａは、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を計算する機能を無効にする。このような機能は、例えば、イネーブル信号ＥＮに基づいて、遷移制御部２５に、計算したエネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を供給するか、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝の代りに０を供給するか選択するセレクタなどの回路によって実現できる。制約項計算部２３ａは、イネーブル信号ＥＮが０の場合に、遷移制御部２５に０を供給し、イネーブル信号ＥＮが１の場合に、遷移制御部２５に、計算したエネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を供給する。
【００７６】
イネーブル信号ＥＮは、例えば、図４に示すようなモード切替制御部３１から入力される。なお、モード切替制御部３１と温度制御部２４は、同一の制御部（コントローラ）であってもよい。
【００７７】
確率的探索の際に、状態が、複数の制約条件を違反している制約違反状態を経由することが多い組み合わせ最適化問題では、第１の実施の形態の最適化装置２０の制約項計算部２３で行われる処理は有効である。しかし、状態が、複数の制約条件を違反している制約違反状態を経由することが少ない問題では、図７に示したような最適化装置１０でも十分である場合がある。そのような問題を解く際には、上記のように制約項計算部２３ａは、エネルギー変化｛−ΔＥｐｉ＿ｎｌ｝を計算する機能を無効にする。そして、目的関数計算部２２は、制約項も含む評価関数についてのエネルギー変化｛−ΔＥｉ｝をエネルギー変化｛−ΔＥｏｉ｝として出力すれば、最適化装置３０は、図７に示した最適化装置１０として使用可能となる。
【００７８】
（重み係数及びバイアス係数の分離処理例）
上記の説明では、目的関数に関する重み係数及びバイアス係数と、制約項に関する重み係数及びバイアス係数は、分離されているものとしたが、最適化装置２０，３０が分離処理を行ってもよい。
【００７９】
図５は、重み係数及びバイアス係数の分離処理を含む最適化装置による動作の一例の流れを示すフローチャートである。
まず、最適化装置２０，３０における図示しない制御部によって、最適化装置２０，３０の外部から供給される重み係数及びバイアス係数が目的関数成分と制約項成分に分離される（ステップＳ１０）。
【００８０】
図６は、目的関数成分と制約項成分の分離例を示す図である。
制御部は、例えば、図６に示すように、重み係数及びバイアス係数において、下位ビットを目的関数成分、上位ビットを制約項成分に分離する。そして、制御部は、目的関数成分の重み係数及びバイアス係数を、目的関数計算部２２のレジスタまたはメモリに記憶し、制約項成分の重み係数及びバイアス係数を、制約項計算部２３，２３ａのレジスタまたはメモリに記憶する。
【００８１】
図５において、ステップＳ１１〜Ｓ１７の処理は、図２に示したステップＳ１〜Ｓ７の処理と同じである。
最適化装置２０，３０内で上記のような分離処理を行うことで、重み係数及びバイアス係数の目的関数成分と制約項成分とを、最適化装置２０，３０の外部のメモリから別々に受信しなくてもよくなる。
【００８２】
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【００８３】
２０  最適化装置
２１  状態保持部
２２  目的関数計算部
２３  制約項計算部
２４  温度制御部
２５  遷移制御部
２６  エネルギー比較部
【図１】
2020106917.tif 000013
【図２】
2020106917.tif 000014
【図３】
2020106917.tif 000015
【図４】
2020106917.tif 000016
【図５】
2020106917.tif 000017
【図６】
2020106917.tif 000018
【図７】
2020106917.tif 000019