(57)【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算する第１の評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定する遷移制御部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記第１のペナルティ係数よりも相対的に大きい第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を前記状態遷移に対して計算する第２の評価関数計算部と、
前記第１の評価関数計算部または前記第２の評価関数計算部が計算したエネルギー値をそれまでに得られた値と比較して、前記エネルギー値のうち、最低となるエネルギー値およびその状態を出力するエネルギー比較部と
を有することを特徴とする最適化装置。
【請求項２】
請求項１に記載の最適化装置において、
前記エネルギー比較部は、前記第２の評価関数計算部が計算したエネルギー値のうちの最低値を前記最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力する
ことを特徴とする最適化装置。
【請求項３】
請求項２に記載の最適化装置において、
前記エネルギー比較部は、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに一致する場合、保持した前記最低となるエネルギー値を更新するかを判定し、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに異なる場合、保持した前記最低となるエネルギー値を更新せずに維持する
ことを特徴とする最適化装置。
【請求項４】
請求項１に記載の最適化装置において、
前記第２の評価関数は、ペナルティの有無を表す関数であり、
前記エネルギー比較部は、前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値のうちの最低値を前記最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す場合、新たな前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの有ることを示す場合、保持した前記最低となるエネルギー値を更新せずに維持し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力する
ことを特徴とする最適化装置。
【請求項５】
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する第１の評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定し、
前記最適化装置が有する第２の評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記第１のペナルティ係数よりも相対的に大きい第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を前記状態遷移に対して計算し、
前記第１の評価関数計算部または前記第２の評価関数計算部が計算したエネルギー値をそれまでに得られた値と比較して、前記エネルギー値のうち、最低となるエネルギー値およびその状態を出力する
ことを特徴とする最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化装置および最適化装置の制御方法に関する。
【背景技術】
【０００２】
組合せ最適化問題を解く方法として、疑似焼き鈍し法（シミュレーテッド・アニーリング法）が知られている。例えば、最適化装置は、最適化したい評価関数（エネルギー関数）の値（以下、エネルギー値とも称する）が最小となる最適解を、疑似焼き鈍し法を用いて探索する。制約条件を含む組合せ最適化問題では、制約条件を満たさない解を最適解としないために、制約条件を満たさないと正の値を取る項（ペナルティ項）を含む評価関数が使用される。制約条件の重みは、例えば、制約条件を表した項に対する係数（ペナルティ係数）で表現される。
【０００３】
なお、ペナルティ係数を小さくすると、制約条件を満たさない解が得られる確率が高くなり、ペナルティ係数を大きくすると、状態遷移のためのエネルギー障壁が高くなり、状態遷移が起こりにくくなるため、評価関数の値が大きな解しか得られない確率が高くなる。このため、組合せ最適化問題を解く場合に、評価関数中のペナルティ係数を動的に変更することでペナルティ係数の適切な値を推定しながら、最適解を探索する技術が提案されている（例えば、特許文献１、２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１２０２５２号公報
【特許文献２】特開平３−１６７６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記で述べたペナルティ係数に関する課題について、イジング型評価関数を用いた場合を例にもう少し詳しく説明する。
【０００６】
磁性体のスピンの振る舞いを表すイジングモデルを評価関数として使用する場合、最適化装置は、評価関数に含まれる複数の状態変数を１つずつ変化させて、エネルギー値（評価関数の値）が最小となる最適解を探索する。例えば、最適化装置は、評価関数に含まれる複数の状態変数のうちの１つのみを変化させた状態遷移に対するエネルギー値の変化値を計算し、変化値に応じて状態遷移を受け入れるか否かを確率的に決定する。状態遷移が繰り返されることにより、最適解または最適解に近いエネルギーを与える近似解が得られる。
【０００７】
一般的に離散最適化問題の評価関数は、値が最小となる最適解以外に、局所的に極小値を取る非常に多数の局所解を有する。また、複数の状態変数のうちの１つのみを変化させる状態遷移が繰り返される場合、状態遷移は、最適化の途中で制約条件を満たさない解を経由する。すなわち、最適化の途中で局所解から制約条件を満たさない解に遷移する状態遷移が発生する。なお、ペナルティ係数が大きい場合、ペナルティ係数が小さい場合に比べて、局所解から制約条件を満たさない解に遷移する確率が低くなるため、局所解からの脱出に時間がかかり、最適化が遅くなる。また、ペナルティ係数が小さい場合、制約条件を満たさない解の評価関数の値が最適解の評価関数の値より小さくなり、制約条件を満たさない解が最適解として出力されるおそれがある。
【０００８】
本発明は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止することを目的とする。
【０００９】
上記はイジング型評価関数の場合で状態変数を１つずつ変化させた場合における説明であるが、その他の評価関数を用いた場合でも、状態変数を複数同時に変化させる場合でも同じ問題が発生する場合が多い。
【００１０】
上記で挙げた公知例でもある程度改善を行うことが可能であるが、ペナルティ係数を動的に変化させるため制御が複雑になるという問題がある。本発明は、より簡単な制御で高速な最適化を行う事を目指したものである。
【課題を解決するための手段】
【００１１】
１つの実施態様では、最適化装置は、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算する第１の評価関数計算部と、温度を示す温度値を制御する温度制御部と、温度値とエネルギー値の変化値と乱数値とに基づいて、変化値と熱励起エネルギーとの相対関係によって状態遷移を受け入れるか否かを確率的に決定する遷移制御部と、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、第１のペナルティ係数よりも相対的に大きい第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を状態遷移に対して計算する第２の評価関数計算部と、第１の評価関数計算部または第２の評価関数計算部が計算したエネルギー値をそれまでに得られた値と比較して、それまでに得られたエネルギー値のうち、最低となるエネルギー値およびその状態を保持し出力するエネルギー比較部とを有する。
【発明の効果】
【００１２】
１つの側面では、本発明は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止できる。
【図面の簡単な説明】
【００１３】
【図１】最適化装置および最適化装置の制御方法の一実施形態を示す図である。
【図２】巡回セールスマン問題における状態遷移の一例を示す図である。
【図３】図１に示した最適化装置の動作の一例を示す図である。
【図４】最適化装置および最適化装置の制御方法の別の実施形態を示す図である。
【図５】図４に示した最適化装置の動作の一例を示す図である。
【図６】最適化装置および最適化装置の制御方法の別の実施形態を示す図である。
【図７】図６に示した最適化装置の動作の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、実施形態について、図面を用いて説明する。
【００１５】
図１は、最適化装置および最適化装置の制御方法の一実施形態を示す。図１に示す最適化装置１０は、例えば、組合せ最適化問題を解く情報処理装置である。例えば、最適化装置１０は、エネルギーを表す評価関数（エネルギー関数）の値が最小となる最適解を、疑似焼き鈍し法を用いて探索する。以下、評価関数の評価結果（評価関数の値）は、エネルギー値とも称される。
【００１６】
評価関数として、例えば、イジング型エネルギー関数と呼ばれる関数が用いられる。イジング型エネルギー関数は、磁性体のスピン間相互作用の解析に用いられる関数であり、組合せ最適化問題をマッピングできることも知られている。組合せ最適化問題をイジング型エネルギー関数にマッピングする場合、ビットの状態（“０”および“１”の２つの離散値のいずれか）に応じたエネルギーを表す評価関数Ｅ（ｘ）は、式（１）で表される。
【００１７】
【数１】
0006988476.tif 000002
【００１８】
式（１）の状態変数ｘは、状態変数ｘの添え字（ｉ、ｊ等）で示されるビットの状態（“０”または“１”）を示す。例えば、状態変数ｘｉの値は、ビットｉの値（“０”または“１”）であり、状態変数ｘｊの値は、ビットｊの値（“０”または“１”）である。また、式（１）の係数Ｗｉｊは、ビットｉとビットｊの結合係数を示し、“Ｗｉｊ＝Ｗｊｉ”、“Ｗｉｉ＝０”である。式（１）の係数ｂｉは、ビットｉに対するバイアスを示す。なお、最適化装置１０が使用する評価関数Ｅ（ｘ）は、イジング型エネルギー関数に限定されない。
【００１９】
また、例えば、セールスマンが複数の都市を１回ずつ全て訪問して出発点に戻る場合の最短経路を求める巡回セールスマン問題を組合せ最適化問題としてマッピングする場合、評価関数Ｅ（ｘ）は、“距離＋ペナルティの総和”として表現される。巡回セールスマン問題の評価関数Ｅ（ｘ）は、例えば、都市ｉと都市ｊとの距離を示す係数ｄｉｊと、制約条件の重みを示すペナルティ係数Ｐとを用いて、式（２）で表される。
【００２０】
【数２】
0006988476.tif 000003
【００２１】
式（２）の右辺の第１項は、セールスマンの移動距離を示す。また、式（２）の右辺の第２項は、同一時刻に複数の都市を訪問しない制約条件を満たさない場合に与えるペナルティ、すなわち、同一時刻に複数の都市を訪問した場合に加える値を示す。式（２）の右辺の第３項は、同じ都市に複数回訪問しない制約条件を満たさない場合に与えるペナルティ、すなわち、同じ都市に複数回訪問した場合に加える値を示す。
【００２２】
式（２）のＭは都市の数、添え字ｋは都市を訪問する順番を示す。例えば、状態変数ｘｉ＊Ｍ＋ｋの値は、ｋ番目に都市ｉを訪問した場合、“１”に設定され、ｋ番目に都市ｉを訪問しない場合、“０”に設定される。また、状態変数ｘｊ＊Ｍ＋ｋ＋１の値は、（ｋ＋１）番目に都市ｊを訪問した場合、“１”に設定され、（ｋ＋１）番目に都市ｊを訪問しない場合、“０”に設定される。順番ｋが都市の数Ｍに到達した場合の状態変数ｘｊ＊Ｍ＋ｋ＋１は、状態変数ｘｊ＊Ｍ＋１を示す。
【００２３】
式（２）を展開した場合の状態変数ｘの２次の項の係数は、式（１）の係数Ｗｉｊに対応し、状態変数ｘの１次の項の係数は、式（１）の係数ｂｉに対応する。すなわち、式（１）の係数Ｗｉｊ、ｂｉは、ペナルティ係数Ｐを含む係数である。ペナルティ係数Ｐは、式（２）の右辺の第２項と第３項とで、同じ値でもよいし、異なる値でもよい。
【００２４】
なお、巡回セールスマン問題の評価関数Ｅ（ｘ）は、式（２）に限定されない。また、最適化装置１０が解く組合せ最適化問題は、巡回セールスマン問題に限定されない。例えば、組合せ最適化問題は、ナップザックに入れる品物の価値の和を最大にするためのナップザック問題でもよいし、配送にかかる総時間を最小にするための配送計画問題でもよいし、作業にかかる総時間を最小にするためのスケジューリング問題でもよい。ナップザック問題では、ナップザックに入れる品物の総重量の上限等が制約条件になり、配送計画問題では、トラックの台数の上限等が制約条件になり、スケジューリング問題では、作業者の人数および機械の台数の上限等が制約条件になる。以下では、巡回セールスマン問題を式（２）を用いて解く場合を例にして、最適化装置１０の動作を説明する。
【００２５】
最適化装置１０は、式（３）に示す評価関数Ｅ１（ｘ）を用いて、組合せ最適化問題の解を探索する処理を実行し、式（４）に示す評価関数Ｅ２（ｘ）を用いて、組合せ最適化問題の解を決定する。
【００２６】
【数３】
0006988476.tif 000004
【００２７】
【数４】
0006988476.tif 000005
【００２８】
式（３）に示す評価関数Ｅ１（ｘ）は、式（２）のペナルティ係数Ｐをペナルティ係数Ｐ１とした関数であり、評価関数Ｅ２（ｘ）は、式（２）のペナルティ係数Ｐを、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐ２とした関数である。式（４）に示す評価関数Ｅ２（ｘ）は、ペナルティ係数Ｐ２を除いて、評価関数Ｅ１（ｘ）と同一または同様である。すなわち、評価関数Ｅ１（ｘ）、Ｅ（２）を上述した式（１）に対応させた場合、式（２）に示した係数Ｗｉｊ、ｂｉが評価関数Ｅ１（ｘ）と評価関数Ｅ２（２）とで異なる。ペナルティ係数Ｐ１は、式（３）の右辺の第２項と第３項とで、同じ値でもよいし、異なる値でもよい。同様に、ペナルティ係数Ｐ２は、式（４）の右辺の第２項と第３項とで、同じ値でもよいし、異なる値でもよい。式（３）に示す評価関数Ｅ１（ｘ）は、第１の評価関数の一例であり、ペナルティ係数Ｐ１は、第１のペナルティ係数の一例である。また、式（４）に示す評価関数Ｅ２（ｘ）は、第２の評価関数の一例であり、ペナルティ係数Ｐ２は、第２のペナルティ係数の一例である。以下、評価関数Ｅ１（ｘ）、Ｅ２（ｘ）は、特に区別せずに、評価関数Ｅ（ｘ）と称される場合もある。
【００２９】
最適化装置１０は、状態保持部２０、評価関数計算部３０、遷移制御部４０、温度制御部５０、評価関数計算部６０およびエネルギー比較部７０を有する。評価関数計算部３０は、第１の評価関数計算部の一例であり、評価関数計算部６０は、第２の評価関数計算部の一例である。
【００３０】
状態保持部２０は、エネルギーを表す評価関数Ｅ（ｘ）に含まれる複数の状態変数ｘｉ（ｉはスピン番号）の値をそれぞれ保持する。状態保持部２０が保持する状態変数ｘｉの値は、現在の状態ｓを示す。そして、状態保持部２０は、保持した状態ｓを示す情報（状態変数ｘｉの組）を評価関数計算部３０、６０に出力する。
【００３１】
評価関数計算部３０は、例えば、状態保持部２０から受けた現在の状態ｓに対するエネルギー値Ｅ１を評価関数Ｅ１（ｘ）に基づいて計算する。また、評価関数計算部３０は、現在の状態ｓから次の状態ｓへの状態遷移の候補を示す候補番号Ｎｉを遷移制御部４０から受ける。そして、評価関数計算部３０は、候補番号Ｎｉに基づいて、現在の状態ｓから複数の状態変数ｘｉの値の何れかが変化することに応じて状態遷移が起こる場合の評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１を計算する。なお、エネルギー値Ｅ１の計算を実現する方法は、既知の方法を利用できるため、詳細な説明を省略する。
【００３２】
遷移制御部４０は、疑似焼き鈍し法で使用されるパラメータである温度を示す温度値Ｔを温度制御部５０から受け、候補番号Ｎｉで指定した状態遷移に対するエネルギー値Ｅ１を評価関数計算部３０から受ける。また、遷移制御部４０は、乱数値を発生させる図示しない乱数発生部を有する。なお、乱数発生部は、遷移制御部４０の外部に設けられてもよい。
【００３３】
例えば、遷移制御部４０は、評価関数計算部３０から受けたエネルギー値Ｅ１に基づいて、エネルギー値Ｅ１の変化値を計算する。エネルギー値Ｅ１の変化値は、現在の状態ｓから状態変数ｘｉの値の何れかが変化した状態のエネルギー値Ｅ１（評価関数計算部３０から遷移制御部４０に転送されたエネルギー値Ｅ１）と現在の状態ｓのエネルギー値Ｅ１との差である。なお、エネルギー値Ｅ１の変化値は、評価関数計算部３０で計算されてもよい。
【００３４】
そして、遷移制御部４０は、温度値Ｔと評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１の変化値と乱数値とに基づいて、変化値と熱励起エネルギーとの相対関係によって状態遷移を受け入れるか否かを確率的に決定する。温度値Ｔと評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１の変化値と乱数値とに基づいて、状態遷移を受け入れるか否かを確率的に決定する方法は、既知であるため、詳細な説明を省略する。
【００３５】
遷移制御部４０は、状態遷移を受け入れるか否かの判定結果を示す情報である遷移可否ｆと、状態を遷移させる状態変数ｘを示す遷移番号Ｎとを、状態保持部２０および評価関数計算部３０に出力する。
【００３６】
遷移可否ｆが状態遷移を受け入れることを示す場合、状態保持部２０は、遷移番号Ｎで示される状態変数ｘの値を遷移させて現在の状態ｓを次の状態ｓに更新し、更新した状態ｓを現在の状態ｓとして保持する。そして、状態保持部２０は、更新した状態ｓ（現在の状態ｓ）を評価関数計算部３０、６０に出力する。これにより、状態遷移が繰り返される。状態遷移が繰り返されることにより、最適解または最適解に近いエネルギーを与える近似解が得られる。
【００３７】
また、遷移可否ｆが状態遷移を受け入れないことを示す場合、状態保持部２０は、現在の状態ｓを更新せずに維持する。この場合、評価関数計算部３０は、例えば、現在の状態ｓから前回と異なる状態変数ｘｉの値が変化した場合の評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１を計算し、計算したエネルギー値Ｅ１を遷移制御部４０に出力する。そして、遷移制御部４０は、前回と異なる状態遷移を受け入れるか否かを確率的に決定する。このように、状態遷移が受け入れられるまで、状態を変化させる状態変数ｘｉの探索が実行される。
【００３８】
温度制御部５０は、遷移制御部４０に出力する温度値Ｔを制御する。例えば、温度制御部５０は、状態遷移を受け入れるか否かを確率的に決定する処理の反復回数に応じて、温度値Ｔを初期の温度値から対数的に減少させる。
【００３９】
評価関数計算部６０は、ペナルティ係数Ｐ１よりも相対的に大きいペナルティ係数Ｐ２を有する評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。例えば、評価関数計算部６０は、現在の状態ｓを状態保持部２０から受ける度に現在の状態ｓに対するエネルギー値Ｅ２を評価関数Ｅ２（ｘ）に基づいて計算する。これにより、評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２が状態遷移に対して計算される。すなわち、評価関数計算部６０は、状態変数ｘｉの値の何れかが変化することに応じて状態遷移が起こる場合、ペナルティ係数Ｐ２を有する評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を状態遷移に対して計算する。そして、評価関数計算部６０は、エネルギー値Ｅ２をエネルギー比較部７０に出力する。さらに、評価関数計算部６０は、エネルギー値Ｅ２の計算に使用した状態変数ｘｉの値、すなわち、状態保持部２０から受けた状態ｓを、エネルギー比較部７０に出力する。なお、エネルギー値Ｅ２の計算を実現する方法は、例えば、評価関数計算部３０と同一または同様である。
【００４０】
エネルギー比較部７０は、評価関数計算部６０が計算したエネルギー値Ｅ２をそれまでに得られた値と比較して、エネルギー値Ｅ２のうち、最低となるエネルギー値Ｅｍｉｎおよびその状態Ｓを出力する。以下、最低となるエネルギー値Ｅｍｉｎは、最低エネルギー値Ｅｍｉｎとも称される。
【００４１】
例えば、エネルギー比較部７０は、評価関数計算部６０が計算したエネルギー値Ｅ２のうちの最低値を最低エネルギー値Ｅｍｉｎとして保持するとともに、最低エネルギー値Ｅｍｉｎになる状態変数ｘｉの値を最低エネルギー状態Ｓとして保持する。すなわち、エネルギー比較部７０は、現在の状態ｓより前の状態ｓに対して評価関数計算部６０が計算したエネルギー値Ｅ２のうちの最低のエネルギー値Ｅ２を最低エネルギー値Ｅｍｉｎとして保持するとともに、最低エネルギー状態Ｓを保持する。そして、エネルギー比較部７０は、新たな状態遷移（すなわち、現在の状態ｓ）に対して評価関数計算部６０が計算したエネルギー値Ｅ２と、保持した最低エネルギー値Ｅｍｉｎとの比較結果に基づいて、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。例えば、エネルギー比較部７０は、現在の状態ｓに対して評価関数計算部６０が計算したエネルギー値Ｅ２が、保持した最低エネルギー値Ｅｍｉｎより低い場合、保持した最低エネルギー値Ｅｍｉｎを、現在の状態ｓのエネルギー値Ｅ２に更新する。また、エネルギー比較部７０は、更新した最低エネルギー値Ｅｍｉｎの計算に使用した状態変数ｘｉの値で最低エネルギー状態Ｓを更新する。そして、エネルギー比較部７０は、評価関数Ｅ１（ｘ）による状態変数ｘｉの値の最適化が終了した場合、保持した最低エネルギー値Ｅｍｉｎおよび最低エネルギー値Ｅｍｉｎになる状態変数ｘｉの値（最低エネルギー状態Ｓ）を出力する。これにより、エネルギー比較部７０は、状態遷移が繰り返されることにより得られるエネルギー値Ｅ２のうち、最低となるエネルギー値Ｅｍｉｎを出力でき、最低となるエネルギー値Ｅｍｉｎになる状態ｓを最低エネルギー状態Ｓとして出力できる。
【００４２】
このように、最適化装置１０は、組合せ最適化問題の解を探索する処理には、ペナルティ係数Ｐ２より小さいペナルティ係数Ｐ１を有する評価関数Ｅ１（ｘ）を使用する。なお、制約条件を満たさない状態ｓでは、評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１は、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐを有する評価関数Ｅ（ｘ）におけるエネルギー値Ｅより低い。このため、最適化装置１０は、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐを有する評価関数Ｅ（ｘ）を組合せ最適化問題の解を探索する処理に使用する場合に比べて、局所解から制約条件を満たさない解に遷移する確率を高くできる。この結果、局所解からの脱出にかかる時間を短縮することができ、最適化を高速に実行することができる。
【００４３】
また、最適化装置１０は、最低エネルギー状態Ｓを決定する処理には、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐ２を有する評価関数Ｅ２（ｘ）を使用する。これにより、最適化装置１０は、ペナルティ係数Ｐ２より小さいペナルティ係数Ｐを有する評価関数Ｅ（ｘ）を用いて最低エネルギー状態Ｓを決定する場合に比べて、制約条件を満たさない状態ｓを最低エネルギー状態Ｓとして出力することを抑止できる。
【００４４】
すなわち、最適化装置１０は、組合せ最適化問題の解を探索する処理と最低エネルギー状態Ｓを決定する処理とで異なる評価関数Ｅ１（ｘ）、Ｅ２（ｘ）を使用することにより、制約条件を満たさない解を出力することを抑止しつつ、最適化を高速に実行できる。換言すれば、最適化装置１０は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止できる。
【００４５】
なお、最適化装置１０および最適化装置１０の制御方法は、図１に示す例に限定されない。例えば、エネルギー比較部７０は、評価関数計算部３０が計算したエネルギー値Ｅ１とエネルギー値Ｅ１の計算に使用した現在の状態ｓ（状態変数ｘｉの値）を評価関数計算部３０から受けてもよい。そして、エネルギー比較部７０は、現在の状態ｓのエネルギー値Ｅ１、Ｅ２が一致した場合、現在の状態ｓが制約条件を満たしていると判定し、現在の状態ｓのエネルギー値Ｅ１をそれまでに得られた制約条件を満たした状態ｓのエネルギー値Ｅ１と比較してもよい。この場合、エネルギー比較部７０は、制約条件を満たした状態ｓのエネルギー値Ｅ１のうち、最低となるエネルギー値Ｅｍｉｎを出力し、最低となるエネルギー値Ｅｍｉｎの計算に使用した状態変数ｘｉの値を最低エネルギー状態Ｓとして出力してもよい。すなわち、エネルギー比較部７０は、評価関数計算部３０、６０がそれぞれ計算したエネルギー値Ｅ１、Ｅ２の一方の値をそれまでに得られた一方の値と比較して、エネルギー値Ｅ１、Ｅ２の一方の値のうち、最低となるエネルギー値Ｅｍｉｎを選択してもよい。
【００４６】
図２は、巡回セールスマン問題における状態遷移の一例を示す。図２では、評価関数Ｅ（ｘ）は、図１で説明した式（２）で表され、評価関数Ｅ１（ｘ）、Ｅ２（ｘ）を区別していない。図２に示す丸内の数字は、都市を識別する数字であり、カギ括弧内の数字は、都市を訪問する順番ｋを示す。図２に示す例では、訪問する都市の数は４つであるため、順番ｋが４の場合、ｋ＋１は“１”を示し、状態変数ｘｊ，ｋ＋１は、状態変数ｘｊ，１を示す。
【００４７】
最適化装置１０は、イジング型エネルギー関数を評価関数Ｅ（ｘ）として使用する場合、評価関数Ｅ（ｘ）に含まれる複数の状態変数ｘを１つずつ変化させて、エネルギー値Ｅが最小となる最適解を探索する。このため、状態遷移は、最適化の途中で制約条件を満たさない制約違反の状態ｓを経由する。例えば、制約条件を満たす状態ｓ０から制約条件を満たす別の状態ｓ４に遷移するまでに、制約条件を満たさない制約違反の状態ｓ１、ｓ２、ｓ３を経由する。
【００４８】
最初の状態ｓ０は、都市１、都市３、都市２、都市４の順に訪問し、都市１に戻る状態ｓであり、同一時刻に複数の都市を訪問しない制約条件および同じ都市に複数回訪問しない制約条件の両方を満たす。
【００４９】
次に、状態変数ｘ４，３の値（図２の状態ｓ１の表の太枠）が“０”から“１”に遷移することにより、現在の状態ｓが状態ｓ０から状態ｓ１に遷移する。状態ｓ１は、同一時刻に複数の都市を訪問しない制約条件および同じ都市に複数回訪問しない制約条件の両方を満たしていない。例えば、状態ｓ１は、３番目（同一時刻）に都市２および都市４の複数の都市を訪問し、都市４に２回訪問する制約違反を含む状態ｓである（図２の状態ｓ１の表の網掛け）。この場合、式（２）の右辺の第２項および第３項でそれぞれ表されるペナルティは、両方ともペナルティ係数Ｐになり、ペナルティの総和は、ペナルティ係数Ｐの２倍になる。
【００５０】
次に、状態変数ｘ２，４の値（図２の状態ｓ２の表の太枠）が“０”から“１”に遷移することにより、現在の状態ｓが状態ｓ１から状態ｓ２に遷移する。状態ｓ２は、同一時刻に複数の都市を訪問しない制約条件および同じ都市に複数回訪問しない制約条件の両方を満たしていない。例えば、状態ｓ２は、状態ｓ１と同じ制約違反の他に、４番目（同一時刻）に都市２および都市４の複数の都市を訪問し、都市２に２回訪問する制約違反を含む状態ｓである（図２の状態ｓ２の表の網掛け）。この場合、式（２）の右辺の第２項および第３項でそれぞれ表されるペナルティは、両方ともペナルティ係数Ｐの２倍になり、ペナルティの総和は、ペナルティ係数Ｐの４倍になる。
【００５１】
次に、状態変数ｘ２，３の値（図２の状態ｓ３の表の太枠）が“１”から“０”に遷移することにより、現在の状態ｓが状態ｓ２から状態ｓ３に遷移する。状態ｓ３は、同一時刻に複数の都市を訪問しない制約条件および同じ都市に複数回訪問しない制約条件の両方を満たしていない。例えば、状態ｓ３は、４番目（同一時刻）に都市２および都市４の複数の都市を訪問し、都市４に２回訪問する制約違反を含む状態ｓである（図２の状態ｓ３の表の網掛け）。この場合、式（２）の右辺の第２項および第３項でそれぞれ表されるペナルティは、両方ともペナルティ係数Ｐになり、ペナルティの総和は、ペナルティ係数Ｐの２倍になる。
【００５２】
次に、状態変数ｘ４，４の値（図２の状態ｓ４の表の太枠）が“１”から“０”に遷移することにより、現在の状態ｓが状態ｓ３から状態ｓ４に遷移する。状態ｓ４は、都市１、都市３、都市４、都市２の順に訪問し、都市１に戻る状態ｓであり、同一時刻に複数の都市を訪問しない制約条件および同じ都市に複数回訪問しない制約条件の両方を満たす。
【００５３】
ここで、状態ｓ０等の局所解から状態ｓ１等の制約条件を満たさない解に遷移する確率は、評価関数Ｅ（ｘ）に含まれるペナルティ係数Ｐが小さくなるほど、高くなる。このため、最適化装置１０は、組合せ最適化問題の最適解を探索するための状態遷移を、ペナルティ係数Ｐ２より小さいペナルティ係数Ｐ１を有する評価関数Ｅ１（ｘ）を用いて実行する。これにより、最適化装置１０は、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐを有する評価関数Ｅ（ｘ）を用いて組合せ最適化問題の最適解を探索する場合に比べて、局所解からの脱出にかかる時間を短縮できる。
【００５４】
なお、ペナルティ係数Ｐを小さくしすぎると、制約条件を満たさない解が最適解として出力されるおそれがある。例えば、スタート地点の都市１から移動しない場合、式（２）の右辺の第１項（移動距離）および式（２）の右辺の第２項（同一時刻に複数の都市を訪問した場合のペナルティ）は、“０”になる。そして、式（２）の右辺の第３項（同じ都市に複数回訪問した場合のペナルティ）は、ペナルティ係数Ｐの１２倍（＝（４−１）２＋（０−１）２＋（０−１）２＋（０−１）２）になる。すなわち、スタート地点の都市１から移動しない場合、エネルギー値Ｅは、ペナルティ係数Ｐの１２倍になる。また、互いに隣接する都市の距離が“９”の場合、状態ｓ４におけるエネルギー値Ｅは、“３６”になる。この場合、ペナルティ係数Ｐが“３”より小さいと、スタート地点の都市１から移動しない制約条件を満たさない解のエネルギー値Ｅが最適解のエネルギー値Ｅより小さくなり、制約条件を満たさない解が最適解として出力される。
【００５５】
このため、最適化装置１０は、図１で説明したように、ペナルティ係数Ｐ１より大きいペナルティ係数Ｐ２を有する評価関数Ｅ２（ｘ）を用いて最低エネルギー状態Ｓを決定することにより、制約条件を満たさない解を除外する。これにより、最適化装置１０は、制約条件を満たさない解が最適解として出力されることを抑止できる。最適化装置１０は、制約条件を満たさない解を評価関数Ｅ２（ｘ）を用いて除去できるため、組合せ最適化問題の解を探索する処理に使用する評価関数Ｅ１（ｘ）に含まれるペナルティ係数Ｐ１を、評価関数Ｅ２（ｘ）を使用しない場合に比べて小さくできる。この結果、最適化装置１０は、最適化を高速に実行できる。
【００５６】
図３は、図１に示した最適化装置１０の動作の一例を示す。図３に示す動作は、最適化装置１０の制御方法の一例である。例えば、最適化装置１０は、評価関数Ｅ１（ｘ）、Ｅ２（ｘ）に含まれる状態変数ｘの初期値が与えられた後に、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返す。そして、最適化装置１０は、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返した後に、エネルギー比較部７０が保持した最低エネルギー値Ｅｍｉｎ（最低となるエネルギー値Ｅ２）および最低エネルギー状態Ｓを出力する。
【００５７】
ステップＳＰ１０では、評価関数計算部３０は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１を計算し、評価関数計算部６０は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。
【００５８】
次に、ステップＳＰ２０では、評価関数計算部６０は、ステップＳＰ１０で計算したエネルギー値Ｅ２が最低エネルギー値Ｅｍｉｎより低い場合、最低エネルギー状態Ｓを状態ｓに置き換える。また、評価関数計算部６０は、ステップＳＰ１０で計算したエネルギー値Ｅ２が最低エネルギー値Ｅｍｉｎより低い場合、最低エネルギー値ＥｍｉｎをステップＳＰ１０で計算したエネルギー値Ｅ２に更新する。更新前の最低エネルギー値Ｅｍｉｎは、図１で説明したように、現在の状態ｓのエネルギー値Ｅ２が計算される前に計算されたエネルギー値Ｅ２のうちの最低のエネルギー値Ｅ２である。
【００５９】
次に、ステップＳＰ３０では、評価関数計算部３０は、現在の状態ｓから状態変数ｘｉの値の何れかが変化する状態遷移に対するエネルギー値Ｅ１を計算する。
【００６０】
次に、ステップＳＰ４０では、遷移制御部４０は、エネルギー値Ｅ１の変化値（ステップＳＰ１０で計算したエネルギー値Ｅ１とステップＳＰ３０で計算したエネルギー値Ｅ１との差）と温度値Ｔとに基づいて、状態遷移を受け入れるか否かを確率的に決定する。
【００６１】
次に、ステップＳＰ５０では、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れると決定された場合、状態遷移に対するエネルギー値Ｅ１の計算に使用した状態ｓ（ステップＳＰ３０で使用した状態変数ｘｉの値）に現在の状態ｓを更新する。また、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れないと決定された場合、現在の状態ｓを更新せずに維持する。そして、状態保持部２０は、保持した現在の状態ｓを、評価関数計算部３０、６０に出力する。最適化装置１０は、ステップＳＰ５０の処理を実行した後、動作をステップＳＰ１０に戻し、ステップＳＰ１０からステップＳＰ５０までの一連の処理を繰り返す。
【００６２】
なお、最適化装置１０の動作は、図３に示す例に限定されない。例えば、ステップＳＰ５０で状態ｓが更新されずに維持された場合、次のループのステップＳＰ１０、ＳＰ２０の一連の処理は、省かれてもよい。また、例えば、ステップＳＰ５０で状態ｓが更新された場合、次のループのステップＳＰ１０では、状態ｓのエネルギー値Ｅ１を計算する処理を省いて、前のループのステップＳＰ３０で計算したエネルギー値Ｅ１を状態ｓのエネルギー値Ｅ１としてもよい。
【００６３】
以上、図１から図３に示す実施形態では、最適化装置１０は、組合せ最適化問題の解を探索する処理と最低エネルギー状態Ｓを決定する処理とで異なるペナルティ係数Ｐ１、Ｐ２をそれぞれ有する評価関数Ｅ１（ｘ）、Ｅ２（ｘ）を使用する。最低エネルギー状態Ｓを決定する処理に使用する評価関数Ｅ２（ｘ）に含まれるペナルティ係数Ｐ２は、組合せ最適化問題の解を探索する処理に使用する評価関数Ｅ１（ｘ）に含まれるペナルティ係数Ｐ１より大きい。これにより、最適化装置１０は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止できる。
【００６４】
図４は、最適化装置および最適化装置の制御方法の別の実施形態を示す。図１から図３で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図４に示す最適化装置１２は、図１に示した評価関数計算部６０の代わりに評価関数計算部６２を有することを除いて、図１に示した最適化装置１０と同一または同様である。例えば、最適化装置１２は、状態保持部２０、評価関数計算部３０、遷移制御部４０、温度制御部５０、評価関数計算部６２およびエネルギー比較部７０を有する。評価関数計算部６２は、第２の評価関数計算部の一例である。図４では、状態保持部２０、評価関数計算部３０、遷移制御部４０、温度制御部５０およびエネルギー比較部７０が図１に示した実施形態と同一または同様であるため、評価関数計算部６２を中心に説明する。
【００６５】
評価関数計算部６２は、図１に示した評価関数計算部６０と同様に、ペナルティ係数Ｐ１よりも相対的に大きいペナルティ係数Ｐ２を有する評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。例えば、評価関数計算部６２は、現在の状態ｓを状態保持部２０から受け、現在の状態ｓを状態保持部２０から受ける度に現在の状態ｓに対するエネルギー値Ｅ２を評価関数Ｅ２（ｘ）に基づいて計算する。さらに、評価関数計算部６２は、現在の状態ｓに対して評価関数計算部３０が計算したエネルギー値Ｅ１を、評価関数計算部３０から受ける。
【００６６】
ここで、現在の状態ｓに対して計算されたエネルギー値Ｅ１、Ｅ２が互いに一致することは、現在の状態ｓが制約条件を満たしていることを示す。このため、評価関数計算部６２は、現在の状態ｓに対して計算したエネルギー値Ｅ２と現在の状態ｓに対して評価関数計算部３０が計算したエネルギー値Ｅ１とが一致する場合、現在の状態ｓに対して計算したエネルギー値Ｅ２をエネルギー比較部７０に出力する。この場合、評価関数計算部６２は、エネルギー比較部７０に出力するエネルギー値Ｅ２の計算に使用した複数の状態変数ｘｉの値、すなわち、状態保持部２０から受けた状態ｓ（現在の状態ｓ）も、エネルギー比較部７０に出力する。
【００６７】
なお、評価関数計算部６２は、現在の状態ｓに対して計算したエネルギー値Ｅ２と現在の状態ｓに対して評価関数計算部３０が計算したエネルギー値Ｅ１とが異なる場合、現在の状態ｓに対して計算したエネルギー値Ｅ２等を、エネルギー比較部７０に出力しない。
【００６８】
したがって、最適化装置１２では、エネルギー比較部７０は、評価関数計算部３０、６０が新たな状態遷移（現在の状態ｓ）に対してそれぞれ計算したエネルギー値Ｅ１、Ｅ２が互いに一致する場合、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。換言すれば、エネルギー比較部７０は、評価関数計算部３０、６０が新たな状態遷移（現在の状態ｓ）に対してそれぞれ計算したエネルギー値Ｅ１、Ｅ２が互いに異なる場合、保持した最低エネルギー値Ｅｍｉｎを更新せずに維持する。
【００６９】
このように、最適化装置１２は、現在の状態ｓが制約条件を満たしている場合、現在の状態ｓに対して計算したエネルギー値Ｅ２と、保持した最低エネルギー値Ｅｍｉｎとを比較して、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。すなわち、制約条件を満たさない解は、比較対象から除外される。これにより、最適化装置１２は、制約条件を満たさない解が最適解として出力されることをさらに抑止できる。
【００７０】
なお、最適化装置１２および最適化装置１２の制御方法は、図４に示す例に限定されない。例えば、現在の状態ｓに対して計算されたエネルギー値Ｅ１、Ｅ２が互いに一致するか否かの判定は、エネルギー比較部７０により実行されてもよい。また、例えば、評価関数Ｅ２（ｘ）に含まれるペナルティ係数Ｐ２は、評価関数Ｅ１（ｘ）に含まれるペナルティ係数Ｐ１より小さくてもよい。すなわち、ペナルティ係数Ｐ２は、ペナルティ係数Ｐ１と異なる値であればよい。
【００７１】
図５は、図４に示した最適化装置１２の動作の一例を示す。図５に示す動作は、最適化装置１２の制御方法の一例である。例えば、最適化装置１２は、評価関数Ｅ１（ｘ）、Ｅ２（ｘ）に含まれる状態変数ｘの初期値が与えられた後に、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返す。そして、最適化装置１２は、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返した後に、エネルギー比較部７０が保持した最低エネルギー値Ｅｍｉｎ（最低となるエネルギー値Ｅ２）および最低エネルギー状態Ｓを出力する。
【００７２】
図５に示す動作は、図３に示した動作にステップＳＰ１２の処理が追加されることを除いて、図３に示した動作と同一または同様である。図３で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
【００７３】
ステップＳＰ１０では、評価関数計算部３０は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１を計算する。また、評価関数計算部６２は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。
【００７４】
次に、ステップＳＰ１２では、評価関数計算部６２は、ステップＳＰ１０で計算したエネルギー値Ｅ２とステップＳＰ１０で評価関数計算部３０が計算したエネルギー値Ｅ１とが一致するか否かを判定する。エネルギー値Ｅ１、Ｅ２が互いに一致する場合、最適化装置１２の動作は、ステップＳＰ２０に移る。一方、エネルギー値Ｅ１、Ｅ２が互いに異なる場合、最適化装置１２の動作は、ステップＳＰ３０に移る。すなわち、エネルギー値Ｅ１、Ｅ２が互いに異なる場合、最低エネルギー状態Ｓを状態ｓに置き換えるステップＳＰ２０の処理は、実行されない。
【００７５】
ステップＳＰ２０では、評価関数計算部６２は、ステップＳＰ１０で計算したエネルギー値Ｅ２が最低エネルギー値Ｅｍｉｎより低い場合、最低エネルギー状態Ｓを状態ｓに置き換える。また、評価関数計算部６２は、最低エネルギー値ＥｍｉｎをステップＳＰ１０で計算したエネルギー値Ｅ２に更新する。ステップＳＰ２０の処理が実行された後、最適化装置１２の動作は、ステップＳＰ３０に移る。
【００７６】
ステップＳＰ３０では、評価関数計算部３０は、現在の状態ｓから状態変数ｘｉの値の何れかが変化する状態遷移に対するエネルギー値Ｅ１を計算する。
【００７７】
次に、ステップＳＰ４０では、遷移制御部４０は、エネルギー値Ｅ１の変化値（ステップＳＰ１０で計算したエネルギー値Ｅ１とステップＳＰ３０で計算したエネルギー値Ｅ１との差）と温度値Ｔとに基づいて、状態遷移を受け入れるか否かを確率的に決定する。
【００７８】
次に、ステップＳＰ５０では、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れると決定された場合、状態遷移に対するエネルギー値Ｅ１の計算に使用した状態ｓ（ステップＳＰ３０で使用した状態変数ｘｉの値）に現在の状態ｓを更新する。また、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れないと決定された場合、現在の状態ｓを更新せずに維持する。そして、状態保持部２０は、保持した現在の状態ｓを、評価関数計算部３０、６２に出力する。最適化装置１２は、ステップＳＰ５０の処理を実行した後、動作をステップＳＰ１０に戻し、ステップＳＰ１０からステップＳＰ５０までの一連の処理を繰り返す。
【００７９】
なお、最適化装置１２の動作は、図５に示す例に限定されない。例えば、ステップＳＰ１２の判定は、エネルギー比較部７０により実行されてもよい。また、例えば、ステップＳＰ５０で状態ｓが更新されずに維持された場合、次のループのステップＳＰ１０、ＳＰ１２、ＳＰ２０の一連の処理は、省かれてもよい。また、例えば、ステップＳＰ５０で状態ｓが更新された場合、次のループのステップＳＰ１０では、状態ｓのエネルギー値Ｅ１を計算する処理を省いて、前のループのステップＳＰ３０で計算したエネルギー値Ｅ１を状態ｓのエネルギー値Ｅ１としてもよい。
【００８０】
以上、図４から図５に示す実施形態においても、図１から図３に示した実施形態と同様の効果を得ることができる。すなわち、最適化装置１２は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止できる。例えば、最適化装置１２は、組合せ最適化問題の解を探索する処理と最低エネルギー状態Ｓを決定する処理とで異なるペナルティ係数Ｐ１、Ｐ２をそれぞれ有する評価関数Ｅ１（ｘ）、Ｅ２（ｘ）を使用する。そして、最適化装置１２は、評価関数Ｅ１（ｘ）に基づいて計算した現在の状態ｓのエネルギー値Ｅ１と評価関数Ｅ２（ｘ）に基づいて計算した現在の状態ｓのエネルギー値Ｅ２とが一致する場合、最低エネルギー値Ｅｍｉｎを更新するかを判定する。なお、現在の状態ｓが制約条件を満たす場合、最適化装置１２は、評価関数Ｅ１（ｘ）に基づいて計算した現在の状態ｓのエネルギー値Ｅ１と評価関数Ｅ２（ｘ）に基づいて計算した現在の状態ｓのエネルギー値Ｅ２とが一致する。すなわち、最適化装置１２は、現在の状態ｓが制約条件を満たしている場合、現在の状態ｓに対して計算したエネルギー値Ｅ２と、現在の状態ｓに遷移する前までの最低エネルギー値Ｅｍｉｎとを比較して、最低エネルギー値Ｅｍｉｎを更新するかを判定する。これにより、制約条件を満たさない解が比較対象から除外されるため、最適化装置１２は、制約条件を満たさない解が最適解として出力されることをさらに抑止できる。
【００８１】
図６は、最適化装置および最適化装置の制御方法の別の実施形態を示す。図１から図５で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図６に示す最適化装置１４は、図４に示した評価関数計算部６２の代わりに評価関数計算部６４を有することを除いて、図４に示した最適化装置１２と同一または同様である。例えば、最適化装置１４は、状態保持部２０、評価関数計算部３０、遷移制御部４０、温度制御部５０、評価関数計算部６４およびエネルギー比較部７０を有する。評価関数計算部６４は、第２の評価関数計算部の一例である。図６では、状態保持部２０、評価関数計算部３０、遷移制御部４０、温度制御部５０およびエネルギー比較部７０が図４に示した実施形態と同一または同様であるため、評価関数計算部６４を中心に説明する。
【００８２】
評価関数計算部６４は、式（５）に示す評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。式（５）の状態変数ｘｉの意味は、図１で説明した式（２）と同じである。
【００８３】
【数５】
0006988476.tif 000006
【００８４】
式（５）に示す評価関数Ｅ２（ｘ）は、ペナルティ係数Ｐ２を有する項のみを有する関数であり、状態ｓ（状態変数ｘｉの値）が制約条件を満たす場合、“０”になり、状態ｓが制約条件を満たさない場合、“０”以外の値になる。したがって、式（５）に示す評価関数Ｅ２（ｘ）は、状態ｓが制約条件を満たすか否かを表す関数、すなわち、ペナルティの有無を表す関数である。なお、ペナルティ係数Ｐ２は、ペナルティ係数Ｐ１と異なる値でもよいし、ペナルティ係数Ｐ２と同じ値でもよい。式（５）に示す評価関数Ｅ２（ｘ）は、ペナルティの有無を表す関数の一例である。
【００８５】
例えば、評価関数計算部６４は、現在の状態ｓを状態保持部２０から受け、現在の状態ｓを状態保持部２０から受ける度に現在の状態ｓに対するエネルギー値Ｅ２（式（５）に示す評価関数Ｅ２（ｘ）の値）を式（５）に示す評価関数Ｅ２（ｘ）に基づいて計算する。さらに、評価関数計算部６４は、現在の状態ｓに対して評価関数計算部３０が計算したエネルギー値Ｅ１を、評価関数計算部３０から受ける。
【００８６】
評価関数計算部６４は、新たな状態遷移（現在の状態ｓ）に対して計算したエネルギー値Ｅ２がペナルティの無いことを示す場合（Ｅ２＝０の場合）、新たな状態遷移に対して評価関数計算部３０が計算したエネルギー値Ｅ１をエネルギー比較部７０に出力する。この場合、評価関数計算部６４は、エネルギー比較部７０に出力するエネルギー値Ｅ１の計算に使用した状態変数ｘｉの値、すなわち、状態保持部２０から受けた状態ｓ（現在の状態ｓ）も、エネルギー比較部７０に出力する。
【００８７】
なお、評価関数計算部６４は、新たな状態遷移に対して計算したエネルギー値Ｅ２がペナルティの有ることを示す場合（Ｅ２≠０の場合）、新たな状態遷移に対して評価関数計算部３０が計算したエネルギー値Ｅ１等を、エネルギー比較部７０に出力しない。
【００８８】
このように、評価関数計算部６４は、エネルギー値Ｅ２の代わりにエネルギー値Ｅ１をエネルギー比較部７０に出力する。なお、図６に示すエネルギー比較部７０は、エネルギー値Ｅ２の代わりにエネルギー値Ｅ１を受けることを除いて、図４に示したエネルギー比較部７０と同一または同様である。例えば、最適化装置１４では、エネルギー比較部７０は、評価関数計算部６４が計算したエネルギー値Ｅ２が“０”の状態遷移に対して評価関数計算部３０が計算したエネルギー値Ｅ１のうちの最低値を最低エネルギー値Ｅｍｉｎとして保持する。すなわち、エネルギー比較部７０は、評価関数計算部６４が計算したエネルギー値Ｅ２がペナルティの無いことを示す状態遷移に対して評価関数計算部３０が計算したエネルギー値Ｅ１のうちの最低値を最低エネルギー値Ｅｍｉｎとして保持する。また、エネルギー比較部７０は、最低エネルギー値Ｅｍｉｎになる状態変数ｘｉの値を保持する。
【００８９】
そして、エネルギー比較部７０は、新たな状態遷移（現在の状態ｓ）に対して評価関数計算部６４が計算したエネルギー値Ｅ２がペナルティの無いことを示す場合（Ｅ２＝０の場合）、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。例えば、エネルギー比較部７０は、新たな状態遷移（現在の状態ｓ）に対して評価関数計算部３０が計算したエネルギー値Ｅ１と、保持した最低エネルギー値Ｅｍｉｎとの比較結果に基づいて、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。
【００９０】
なお、エネルギー比較部７０は、新たな状態遷移（現在の状態ｓ）に対して評価関数計算部６４が計算したエネルギー値Ｅ２がペナルティの有ることを示す場合（Ｅ２≠０の場合）、保持した最低エネルギー値Ｅｍｉｎを更新せずに維持する。
【００９１】
また、エネルギー比較部７０は、評価関数Ｅ１（ｘ）による状態変数ｘｉの値の最適化が終了した場合、保持した最低エネルギー値Ｅｍｉｎおよび最低エネルギー値Ｅｍｉｎになる状態変数ｘｉの値を出力する。
【００９２】
このように、最適化装置１４は、現在の状態ｓが制約条件を満たしている場合、現在の状態ｓに対して計算したエネルギー値Ｅ１と、保持した最低エネルギー値Ｅｍｉｎとを比較して、保持した最低エネルギー値Ｅｍｉｎを更新するかを判定する。すなわち、制約条件を満たさない解は、比較対象から除外される。これにより、最適化装置１４は、制約条件を満たさない解が最適解として出力されることをさらに抑止できる。
【００９３】
なお、最適化装置１４および最適化装置１４の制御方法は、図６に示す例に限定されない。例えば、現在の状態ｓに対して計算されたエネルギー値Ｅ２がペナルティの無いことを示すか否かの判定（Ｅ２＝０か否かの判定）は、エネルギー比較部７０により実行されてもよい。
【００９４】
図７は、図６に示した最適化装置１４の動作の一例を示す。図７に示す動作は、最適化装置１４の制御方法の一例である。例えば、最適化装置１４は、評価関数Ｅ１（ｘ）、Ｅ２（ｘ）に含まれる状態変数ｘの初期値が与えられた後に、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返す。そして、最適化装置１４は、ステップＳＰ１０からステップＳＰ５０までの一連の処理を所定の回数繰り返した後に、エネルギー比較部７０が保持した最低エネルギー値Ｅｍｉｎ（最低となるエネルギー値Ｅ１）および最低エネルギー状態Ｓを出力する。
【００９５】
図７に示す動作は、図５に示したステップＳＰ１２、ＳＰ２０の処理の代わりにステップＳＰ１４、ＳＰ２４の処理が実行されることを除いて、図５に示した動作と同一または同様である。図５で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
【００９６】
ステップＳＰ１０では、評価関数計算部３０は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ１（ｘ）におけるエネルギー値Ｅ１を計算する。また、評価関数計算部６４は、状態保持部２０から受けた現在の状態ｓの評価関数Ｅ２（ｘ）におけるエネルギー値Ｅ２を計算する。
【００９７】
次に、ステップＳＰ１４では、評価関数計算部６４は、ステップＳＰ１０で計算したエネルギー値Ｅ２が“０”か否かを判定する。すなわち、評価関数計算部６４は、ステップＳＰ１０で計算したエネルギー値Ｅ２がペナルティの無いことを示すか否かを判定する。エネルギー値Ｅ２が“０”の場合、すなわち、エネルギー値Ｅ２がペナルティの無いことを示す場合、最適化装置１４の動作は、ステップＳＰ２４に移る。一方、エネルギー値Ｅ２が“０”でない場合、すなわち、エネルギー値Ｅ２がペナルティの有ることを示す場合、最適化装置１４の動作は、ステップＳＰ３０に移る。すなわち、エネルギー値Ｅ２が“０”の場合、最低エネルギー状態Ｓを状態ｓに置き換えるステップＳＰ２０の処理は、実行されない。
【００９８】
ステップＳＰ２４では、評価関数計算部６４は、ステップＳＰ１０で計算したエネルギー値Ｅ１が最低エネルギー値Ｅｍｉｎより低い場合、最低エネルギー状態Ｓを状態ｓに置き換える。また、評価関数計算部６４は、最低エネルギー値ＥｍｉｎをステップＳＰ１０で計算したエネルギー値Ｅ１に更新する。ステップＳＰ２４の処理が実行された後、最適化装置１４の動作は、ステップＳＰ３０に移る。
【００９９】
ステップＳＰ３０では、評価関数計算部３０は、現在の状態ｓから状態変数ｘｉの値の何れかが変化する状態遷移に対するエネルギー値Ｅ１を計算する。
【０１００】
次に、ステップＳＰ４０では、遷移制御部４０は、エネルギー値Ｅ１の変化値（ステップＳＰ１０で計算したエネルギー値Ｅ１とステップＳＰ３０で計算したエネルギー値Ｅ１との差）と温度値Ｔとに基づいて、状態遷移を受け入れるか否かを確率的に決定する。
【０１０１】
次に、ステップＳＰ５０では、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れると決定された場合、状態遷移に対するエネルギー値Ｅ１の計算に使用した状態ｓ（ステップＳＰ３０で使用した状態変数ｘｉの値）に現在の状態ｓを更新する。また、状態保持部２０は、ステップＳＰ４０で状態遷移を受け入れないと決定された場合、現在の状態ｓを更新せずに維持する。そして、状態保持部２０は、保持した現在の状態ｓを、評価関数計算部３０、６４に出力する。最適化装置１４は、ステップＳＰ５０の処理を実行した後、動作をステップＳＰ１０に戻し、ステップＳＰ１０からステップＳＰ５０までの一連の処理を繰り返す。
【０１０２】
なお、最適化装置１４の動作は、図７に示す例に限定されない。例えば、ステップＳＰ１４の判定は、エネルギー比較部７０により実行されてもよい。また、例えば、ステップＳＰ５０で状態ｓが更新されずに維持された場合、次のループのステップＳＰ１０、ＳＰ１４、ＳＰ２４の一連の処理は、省かれてもよい。また、例えば、ステップＳＰ５０で状態ｓが更新された場合、次のループのステップＳＰ１０では、状態ｓのエネルギー値Ｅ１を計算する処理を省いて、前のループのステップＳＰ３０で計算したエネルギー値Ｅ１を状態ｓのエネルギー値Ｅ１としてもよい。
【０１０３】
以上、図６から図７に示す実施形態においても、図４から図５に示した実施形態と同様の効果を得ることができる。すなわち、最適化装置１４は、最適解付近のエネルギーを有する制約条件を満たさない解への遷移を許容して状態遷移を促進するとともに、制約条件を満たさない解が最適解として出力されることを抑止できる。例えば、最適化装置１４は、組合せ最適化問題の解を探索する処理と最低エネルギー状態Ｓを決定する処理とで異なる評価関数Ｅ１（ｘ）、Ｅ２（ｘ）をそれぞれ使用する。そして、最適化装置１４は、評価関数Ｅ２（ｘ）に基づいて計算した現在の状態ｓのエネルギー値Ｅ２がペナルティの無いことを示す場合（Ｅ２＝０の場合）、最低エネルギー値Ｅｍｉｎを更新するかを判定する。すなわち、最適化装置１４は、現在の状態ｓが制約条件を満たしている場合、現在の状態ｓに対して計算したエネルギー値Ｅ１と、現在の状態ｓに遷移する前までの最低エネルギー値Ｅｍｉｎとを比較して、最低エネルギー値Ｅｍｉｎを更新するかを判定する。これにより、制約条件を満たさない解が比較対象から除外されるため、最適化装置１４は、制約条件を満たさない解が最適解として出力されることをさらに抑止できる。
【０１０４】
以上の実施形態において説明した発明を整理して、付記として以下の通り開示する。
（付記１）
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算する第１の評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定する遷移制御部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記第１のペナルティ係数よりも相対的に大きい第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を前記状態遷移に対して計算する第２の評価関数計算部と、
前記第１の評価関数計算部または前記第２の評価関数計算部が計算したエネルギー値をそれまでに得られた値と比較して、前記エネルギー値のうち、最低となるエネルギー値およびその状態を出力するエネルギー比較部と
を有することを特徴とする最適化装置。
（付記２）
付記１に記載の最適化装置において、
前記エネルギー比較部は、前記第２の評価関数計算部が計算したエネルギー値のうちの最低値を前記最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力する
ことを特徴とする最適化装置。
（付記３）
付記２に記載の最適化装置において、
前記エネルギー比較部は、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに一致する場合、保持した前記最低となるエネルギー値を更新するかを判定し、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに異なる場合、保持した前記最低となるエネルギー値を更新せずに維持する
ことを特徴とする最適化装置。
（付記４）
付記１に記載の最適化装置において、
前記第２の評価関数は、ペナルティの有無を表す関数であり、
前記エネルギー比較部は、前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値のうちの最低値を前記最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す場合、新たな前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの有ることを示す場合、保持した前記最低となるエネルギー値を更新せずに維持し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力する
ことを特徴とする最適化装置。
（付記５）
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算する第１の評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定する遷移制御部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記第１のペナルティ係数と異なる第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を前記状態遷移に対して計算する第２の評価関数計算部と、
前記第２の評価関数計算部が計算したエネルギー値のうちの最低値を最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに一致する場合、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、前記第１の評価関数計算部および前記第２の評価関数計算部が新たな前記状態遷移に対してそれぞれ計算したエネルギー値が互いに異なる場合、保持した前記最低となるエネルギー値を更新せずに維持し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力するエネルギー比較部と
を有することを特徴とする最適化装置。
（付記６）
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算する第１の評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定する遷移制御部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、ペナルティの有無を表す第２の評価関数におけるエネルギー値を前記状態遷移に対して計算する第２の評価関数計算部と、
前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値のうちの最低値を最低となるエネルギー値として保持するとともに、前記最低となるエネルギー値になる前記複数の状態変数の値を保持し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの無いことを示す場合、新たな前記状態遷移に対して前記第１の評価関数計算部が計算したエネルギー値と、保持した前記最低となるエネルギー値との比較結果に基づいて、保持した前記最低となるエネルギー値を更新するかを判定し、新たな前記状態遷移に対して前記第２の評価関数計算部が計算したエネルギー値がペナルティの有ることを示す場合、保持した前記最低となるエネルギー値を更新せずに維持し、前記第１の評価関数による前記複数の状態変数の値の最適化が終了した場合、保持した前記最低となるエネルギー値および前記最低となるエネルギー値になる前記複数の状態変数の値を出力するエネルギー比較部と
を有することを特徴とする最適化装置。
（付記７）
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する第１の評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合の第１のペナルティ係数を有する第１の評価関数におけるエネルギー値を計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、前記温度値と前記エネルギー値の変化値と乱数値とに基づいて、前記変化値と熱励起エネルギーとの相対関係によって前記状態遷移を受け入れるか否かを確率的に決定し、
前記最適化装置が有する第２の評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記第１のペナルティ係数よりも相対的に大きい第２のペナルティ係数を有する第２の評価関数におけるエネルギー値を前記状態遷移に対して計算し、
前記第１の評価関数計算部または前記第２の評価関数計算部が計算したエネルギー値をそれまでに得られた値と比較して、前記エネルギー値のうち、最低となるエネルギー値およびその状態を出力する
ことを特徴とする最適化装置の制御方法。
【０１０５】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１０６】
１０、１２、１４‥最適化装置；２０‥状態保持部；３０、６０、６２、６４‥評価関数計算部；４０‥遷移制御部；５０‥温度制御部；７０‥エネルギー比較部
【図１】
0006988476.tif 000007
【図２】
0006988476.tif 000008
【図３】
0006988476.tif 000009
【図４】
0006988476.tif 000010
【図５】
0006988476.tif 000011
【図６】
0006988476.tif 000012
【図７】
0006988476.tif 000013