(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-22
(45)【発行日】2023-05-30
(54)【発明の名称】最適化装置、最適化プログラム、及び最適化方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20230523BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2019166243
(22)【出願日】2019-09-12
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】覚幸 典弘
(72)【発明者】
【氏名】宮澤 俊之
【審査官】多賀 実
(56)【参考文献】
【文献】特開平4-160463(JP,A)
【文献】安田 恵一郎 ほか,「大域的最適化のための多軌道型ダイナミック・トンネリング・アルゴリズム」,電気学会論文誌C,(社)電気学会,2004年07月01日,第124巻, 第7号,pp.1484-1493
【文献】G. K. Purushothama and Lawrence Jenkins,"Simulated annealing with local search-a hybrid algorithm for unit commitment",IEEE Transactions on Power Systems,米国,IEEE,2003年02月,vol. 18, no. 1,pp. 273-278
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06Q 10/04
(57)【特許請求の範囲】
【請求項1】
制約を拘束条件として含む目的関数値が確率的に改善していく第1の手法により解探索を実行する解探索部と、
前記解探索部により過去に求めた解から所定距離以上離れた第1の状態を生成し、前記第1の状態から開始して前記制約を満たし且つ前記第1の手法よりも高い確率で前記目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、前記局所解を初期状態として出力する初期状態生成部と
を含み、前記初期状態生成部が前記初期状態を出力する動作と前記解探索部が前記初期状態から前記第1の手法による解探索を実行する動作とを繰り返し実行する最適化装置。
【請求項2】
前記第1の手法による解探索を繰り返し実行する回数が所定の回数に到達した時点、又は前記第1の手法による解探索を繰り返し実行する累積実行時間が所定の時間に到達した時点で、前記解探索部は、前記第1の手法による解探索の繰り返し実行を終了する請求項1記載の最適化装置。
【請求項3】
前記第2の手法は、前記制約を満たし且つ前記目的関数値が単調改善するよう状態遷移させる請求項1又は2記載の最適化装置。
【請求項4】
前記局所解と前記過去に求めた解との距離が所定の閾値未満である場合、前記初期状態生成部は、前記第1の状態を生成して前記第2の手法により局所解を求める動作を再実行して新たな局所解を求める請求項1乃至3いずれか一項記載の最適化装置。
【請求項5】
前記初期状態生成部は、前記解探索部により過去に求めた解から前記所定距離以上離れると共に過去に出力した前記初期状態からも前記所定距離以上離れた前記第1の状態を求め、当該第1の状態に基づいて求めた前記局所解と前記過去に求めた解及び前記過去に出力した初期状態のいずれかとの距離が前記所定の閾値未満である場合、前記第1の状態を生成して前記第2の手法により局所解を求める動作を再実行して新たな局所解を求める請求項4記載の最適化装置。
【請求項6】
前記局所解と前記過去に求めた解との距離が所定の閾値未満である場合、前記解探索部は、デフォールトとは異なる解探索パラメータに基づいて前記第1の手法による解探索を実行する請求項1乃至3いずれか一項記載の最適化装置。
【請求項7】
前記局所解と前記過去に求めた解との距離が前記所定の閾値未満である場合であって、且つ、前記過去に求めた解のうちで前記目的関数値が最小である解が所定回数以上前である場合、前記解探索部は、デフォールトとは異なり且つ前記解探索の探索範囲が広がるように設定された解探索パラメータに基づいて前記第1の手法による解探索を実行する請求項6記載の最適化装置。
【請求項8】
前記初期状態生成部は、前記第1の状態から前記目的関数値が単調悪化するように探索することにより前記目的関数値が好ましくない極値を求め、前記極値における状態と過去に出力した前記初期状態との距離が所定の閾値未満である場合、前記第1の状態を生成する動作を再実行して新たな第1の状態を求める請求項1記載の最適化装置。
【請求項9】
前記初期状態生成部は、前記局所解から前記目的関数値が単調悪化するように探索することにより前記目的関数値が好ましくない第2の極値を求め、前記第2の極値における状態と過去に出力した前記初期状態との距離が所定の閾値未満である場合、前記第1の状態を生成する動作を再実行して新たな第1の状態を求める請求項8記載の最適化装置。
【請求項10】
制約を拘束条件として含む目的関数値が確率的に改善していく第1の手法により解探索を実行し、
前記解探索により過去に求めた解から所定距離以上離れた第1の状態を生成し、前記第1の状態から開始して前記制約を満たし且つ前記第1の手法よりも高い確率で前記目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、前記局所解を初期状態として出力し、
前記初期状態を出力する動作と前記初期状態から前記第1の手法による解探索を実行する動作とを繰り返し実行する
処理をコンピュータに実行させるための最適化プログラム。
【請求項11】
制約を拘束条件として含む目的関数値が確率的に改善していく第1の手法により解探索を実行し、
前記解探索により過去に求めた解から所定距離以上離れた第1の状態を生成し、前記第1の状態から開始して前記制約を満たし且つ前記第1の手法よりも高い確率で前記目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、前記局所解を初期状態として出力し、
前記初期状態を出力する動作と前記初期状態から前記第1の手法による解探索を実行する動作とを繰り返し実行する
処理を演算処理装置に実行させる最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願開示は、最適化装置、最適化プログラム、及び最適化方法に関する。
【背景技術】
【0002】
情報処理は、コンピュータ等の演算装置により実行され、様々なデータを演算して意味のある結果を得ることにより、現代社会の種々の分野において予測、決定、制御等の動作を実現している。情報処理の1つの分野として最適化処理がある。最適化問題は、探索空間上で定義された目的関数の値を最小(又は最大)にする探索空間に属する点(解)を見つける問題である。最適化問題は線形計画問題と離散最適化問題とに大別され、後者の場合、探索空間の次元数が増えると、変数の組み合わせ数が爆発的に増加し、全組み合わせを総当たり的に計算して求める手法では計算時間が現実的な域で収まらなくなる。
【0003】
大規模な多変数の離散最適化問題を解くために、厳密な最適解を求めるのではなく、現実的な計算時間で良好な近似解を求める近似解法や発見的手法が用いられる。発見的手法に基づき様々な問題に対応できる汎用的な近似アルゴリズム(メタヒューリスティックアルゴリズム)としては、ランダムウォーク解探索アルゴリズム、シミュレーテッド・アニーリング、遺伝的アルゴリズム、確率的進化手法等がある。例えばシミュレーテッド・アニーリングを実行するための仕組みとしては、イジング型のエネルギー関数を用いたイジング装置(ボルツマンマシン)が知られている。イジング装置では、計算対象の問題を磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて、問題に対する解を演算する。
【0004】
上記のような近似アルゴリズムでは、初期状態を開始点として目的関数値を小さくする解を探索していく状態遷移動作において、確率的な要素を導入することにより、好ましくない局所解に停留することなく、最適に近い解に状態が収束するように設計される。確率的な要素を慎重に制御し且つ長い計算時間をかければ、最適解又は充分に最適に近い解に状態を収束させることができる。しかしながら、実用的な計算時間内で充分に最適に近い解を得ることは難しく、また最適化計算対象の問題毎に確率的な要素の制御を適切に設計することが難しい。
【0005】
解探索にかかる時間を短縮するためには、例えば、初期状態をランダムに設定し、異なる初期状態からの解探索を繰り返すことが考えられる。ある初期状態からの解探索において目的関数値が充分に小さくない局所解に停留してしまうような場合であっても、当該解探索を適宜終了し、次の異なる初期状態からの解探索を新たに実行することができる。これにより、局所解からの脱出を実現し、好ましくない局所解に停留してしまう或いは最適解を得るまでに長い時間がかかってしまうような初期状態からの探索に無駄な時間を費やすことなく、最適解を得るまでの時間を短縮することができる。
【0006】
上述のように異なる初期状態からの解探索を繰り返しても、制約条件を有する問題のように局所解が多く問題の難易度が高い場合、局所解脱出を実行する回数、即ち新たな初期状態から解探索をやり直す回数を増やさないと良好な解を得られない。また局所解脱出を実行するにつれ、ランダムに初期状態を生成しても、過去の探索で既に得られた局所解に近い初期状態が生成される可能性が高くなり、その局所解に再度収束するという無駄な探索が発生してしまう。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2014-178717号公報
【文献】特開2009-48353号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
以上を鑑みると、最適化問題において異なる初期状態から解探索を繰り返す場合に適切な初期状態を設定可能な手法が望まれる。
【課題を解決するための手段】
【0009】
最適化装置は、制約を拘束条件として含む目的関数値が確率的に改善していく第1の手法により解探索を実行する解探索部と、前記解探索部により過去に求めた解から所定距離以上離れた第1の状態を生成し、前記第1の状態から開始して前記制約を満たし且つ前記第1の手法よりも高い確率で前記目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、前記局所解を初期状態として出力する初期状態生成部とを含み、前記初期状態生成部が前記初期状態を出力する動作と前記解探索部が前記初期状態から前記第1の手法による解探索を実行する動作とを繰り返し実行する。
【発明の効果】
【0010】
少なくとも1つの実施例によれば、異なる初期状態から解探索を繰り返す場合に適切な初期状態を設定可能な手法が提供される。
【図面の簡単な説明】
【0011】
【
図1】最適化装置の機能構成の一例を示す図である。
【
図2】最適化装置が実行する最適化方法の一例を示す図である。
【
図3】最適化装置を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図4】最適化方法の第1の実施例の手順を示すフローチャートである。
【
図5】初期状態生成部が局所解を求める手法の一例を示すフローチャートである。
【
図9】最適化方法の第2の実施例の手順を示すフローチャートである。
【
図10】最適化方法の第3の実施例の手順を示すフローチャートである。
【
図11】最適化方法の第4の実施例の手順を示すフローチャートである。
【
図12】温度の違いによる状態遷移の違いを示す図である。
【
図13】最適化方法の第5の実施例の手順を示すフローチャートである。
【
図14】最適化方法の第6の実施例の手順を示すフローチャートである。
【
図15】最適化方法の第7の実施例の手順を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【0013】
図1は、最適化装置の機能構成の一例を示す図である。
図1に示される最適化装置10は、問題入力部11、解探索パラメータ&初期状態入力部12、問題制約入力部13、解探索部14、及び初期状態生成部15を含む。
図1において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。最適化装置は、各機能ブロックの機能を有する電子回路ブロックを組み合わせて実現したハードウェア構成でもよいし、電子回路である汎用のプロセッサにおいてソフトウェアを実行することにより各機能ブロックの機能を実現したソフトウェア構成でもよい。ハードウェアの場合、各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。ソフトウェアの場合、各機能ブロックは、他のブロックと論理的にある程度分離された1つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の1つの機能を示したものであってもよい。
【0014】
最適化装置10は、ランダムウォーク解探索アルゴリズム、シミュレーテッド・アニーリング、遺伝的アルゴリズム、又は確率的進化手法等の汎用的な近似アルゴリズムを実行する装置である。これらの近似アルゴリズムでは、初期状態を開始点として目的関数値を改善する解を探索していく状態遷移動作において、確率的な要素を導入することにより、好ましくない局所解に停留することなく、なるべく良好な解に状態が収束するように設計される。例えば遺伝子アルゴリズムの場合であれば、目的関数値である適合度が集団において大きくなるように世代交代していく際に、ペアの選択、交叉、淘汰、突然変異等を確率的に制御することで、好ましくない局所解に停留することを回避する。また例えばシミュレーテッド・アニーリングの場合であれば、状態の遷移を確率的に制御し、目的関数値が悪化するような状態遷移であっても確率的に許容することにより、好ましくない局所解に停留することを回避する。
【0015】
最適化装置10が対象とする最適化問題においては、解について何らかの制約が存在することを想定している。解が満たすべき制約は、問題を定式化する際に導入される条件であってよい。例えば巡回セールスマン問題が対象である場合、全行程の距離を示す目的関数値がなるべく小さくなる解を求める際に、解が満たすべき条件として、ある時刻における訪問都市は1つであり、且つ、全ての都市を一回ずつ訪問するという条件が制約として設けられる。この条件は、各時刻と各都市とを2次元マトリクスの行と列とに対応付けた場合に、各行及び各列において常に1つのエントリのみが1になる制約として定式化される。この制約を満たすときに値が0になり制約から外れる度合が大きくなるにつれて値が大きくなるような制約項を、全行程の距離を示す目的関数に加えることにより新たな目的関数を作成すれば、この目的関数値を最小化することとして最適化問題を定式化できる。
【0016】
問題入力部11は、上述のような定式化された最適化問題を外部から受け取る。例えば最適化装置10を利用するユーザが、最適化問題を表現する式の形式の指定(例えばイジング型を指定)、及び式中のパラメータの値を入力する。
【0017】
解探索パラメータ&初期状態入力部12は、最適化問題における解探索のパラメータ及び初期状態を外部から受け取る。最適化装置10を利用するユーザが、例えばシミュレーテッド・アニーリングの場合であれば熱ノイズ(温度)の初期値、熱ノイズ(温度)の減衰率、及び初期状態(例えば各ビットが0である状態)等を入力してよい。
【0018】
問題制約入力部13は、最適化問題における解に課せられた制約を示す条件を外部から受け取る。最適化装置10を利用するユーザが、例えば巡回セールスマン問題の場合であれば、制約を表現する式等を入力する。
【0019】
図1において解探索部14が、制約を拘束条件として含む目的関数値が確率的に改善していく第1の手法により解探索を実行する。この解探索の第1の手法が、前述したようなランダムウォーク解探索アルゴリズム、シミュレーテッド・アニーリング、遺伝的アルゴリズム、又は確率的進化手法等の汎用的な近似アルゴリズムである。解探索部14は、異なる初期状態から第1の手法による解探索を繰り返し実行する。例えばT回の解探索を繰り返し実行してT個の解が得られた時点で解探索を終了し、T個の解のうちで目的関数値が最も好ましい値である解を最良解として最適化装置10から外部に出力してよい。
【0020】
繰り返し実行する解探索により、局所解からの脱出を実現し、好ましくない局所解に停留してしまう或いは最適解を得るまでに長い時間がかかってしまうような初期状態からの探索に無駄な時間を費やすことなく、最適解を得るまでの時間を短縮することができる。但しその際には、解探索部14により過去に求めた解に再度収束するような無駄な探索を新たに実行しないよう、適切な初期状態を生成することが好ましい。
【0021】
初期状態生成部15は、解探索部14から最適化問題(即ち問題を定式化した目的関数式)及び過去の探索により得られた解を受け取り、これらの情報に基づいて適切な初期状態を生成する。具体的には、初期状態生成部15は、解探索部14により過去に求めた解からの距離(例えばハミング距離、マンハッタン距離、又はユークリッド距離等)の値が所定値以上離れた第1の状態をランダムに生成する。この際、過去に求めた全ての解を参照してもよいし、或いは過去に求めた解のうちで直近の所定数の解を参照してもよい。初期状態生成部15は更に、第1の状態から開始して制約を確実に満たし且つ第1の手法よりも確実に目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、当該局所解を初期状態として出力する。
【0022】
なお上記の第1の状態をランダムに生成する際、状態生成処理は完全にランダムな処理である必要はなく、疑似ランダムな処理であってよい。疑似ランダムな処理としては、コンピュータに内蔵された疑似乱数発生機能を用いた処理であってよい。或いは何らかの確定的なアルゴリズムにより一見規則性無く状態が作成されるような処理を実現し、当該処理により第1の状態を作成するのであってもよい。
【0023】
初期状態生成部15が出力する初期状態は解探索部14に供給される。初期状態生成部15及び解探索部14は、初期状態生成部15が初期状態を出力する動作と解探索部14が初期状態から第1の手法による解探索を実行する動作とを繰り返し実行する。各解探索において用いる初期状態は、上述のように、過去に求めた解から所定距離以上離れた第1の状態から目的関数値を改善することにより得られた局所解に相当する。したがって所定距離を充分に大きな距離とすることにより、当該初期状態から開始して第1の手法による解探索を実行した際に、過去に既に求めた解に収束してしまうような状況を高い確率で回避することができる。
【0024】
また更に、第1の状態から開始して制約を確実に満たし且つ第1の手法よりも確実に目的関数値が改善するよう状態遷移させる第2の手法により局所解を求め、当該局所解を初期状態としているので、全体の解探索の速度を向上させることができる。即ち、より確実に目的関数値を改善させることにより最初の局所解に迅速に到達することを可能にすると共に、制約を確実に満たすよう探索することにより実行可能解(制約条件を満たす解)の領域に存在する好ましい初期状態からの次段の解探索を可能にする。
【0025】
なお初期状態生成部15が実行する第2の手法は、制約を確実に満たし且つ目的関数値が単調改善するよう状態遷移させてよい。即ち、貪欲法の考え方に基づき、状態遷移において、確率的な要素無く、確定的に目的関数値が改善する方向に状態遷移していってよい。また目的関数値がこれ以上改善しなくなる局所解に到達したら、当該局所解を初期状態として解探索部14に供給してよい。これにより、確実に目的関数値を改善させて最初の局所解に到達するまでの時間を更に短縮することができる。
【0026】
また初期状態生成部15が生成した局所解と解探索部14が過去に求めた解との距離が所定の閾値未満である場合、初期状態生成部15は、第1の状態をランダムに生成して第2の手法により局所解を求める動作を再実行して新たな局所解を求めてよい。即ち、局所解と過去に求めた解との距離がある程度近い場合には、当該局所解に相当する初期状態から第2の手法による解探索を実行しても過去に既に求めた解と同一の解に収束する可能性があると判断し、新たな局所解を再計算してもよい。このように目的関数値を改善させる処理における初期段階を迅速に実行することにより最初の局所解の位置を早期に判断し、局所解と過去に既に求めた解とがある程度近い場合には、新たな初期状態を再計算することにより、無駄な解探索をより確実に回避できる。
【0027】
図2は、最適化装置が実行する最適化方法の一例を示す図である。なお
図2及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【0028】
また以降の説明においては、イジング型の最適化問題に対してシミュレーテッドアニーリングにより解探索を実行する場合を具体的な例として用い、最適化方法及びその実施例について説明する。この具体的な例において、目的関数は、以下の式に示すイジング型のエネルギーE(S)であってよい。
【0029】
E(S)=-ΣWijxixj-Σbixi (1)
ここでSは、以下のようにL個(L:正の整数)のスピンを有する状態である。
【0030】
S=(x1,x2,・・・,xL) (2)
各スピンは、-1又は+1の値、又は0又は+1の値をとる。Wijはスピン間の結合の重み係数であり、Wij<i=j>=0であってよい。またbjはバイアスである。式(1)の右辺において、第1項のΣは、i及びjの全範囲(1~L)における全ての組み合わせについて総和を計算する。第2項のΣは、iの全範囲(1~L)における総和を計算する。
【0031】
式(1)には制約を表現する項も既に含まれていると考えてよい。制約項が含まれる場合には、Wij<i=j>はゼロでなくてもよい。解探索は、上記のエネルギーがなるべく小さな値となるような状態を見つけることに相当する。
【0032】
図2のステップS1で、イジング型問題を入力する。具体的には、問題入力部11が、イジング型問題を示す情報を外部から受け取る。この情報には、最適化問題が上記の式(1)の形式であることを示す情報、状態Sのスピン数L、重み計数W
ijの値、及びバイアスb
iの値が含まれる。
【0033】
ステップS2で、入力パラメータ及び状態の設定を行う。具体的には、解探索パラメータ&初期状態入力部12が、解探索のパラメータを示す情報と初期状態を示す情報とを外部から受け取る。この情報には、熱ノイズ(温度)の初期値、熱ノイズ(温度)の減衰率、初期状態(例えば各スピンを表すビット値が0である状態)、及び解探索の回数T等が含まれる。
【0034】
ステップS3で、解探索を実行する。具体的には、解探索部14が、状態遷移によるエネルギーE(S)の値の変化に基づいて、現在の状態からその近傍内の次の状態への状態遷移を制御することにより、エネルギーE(S)の値がなるべく小さくなるような状態Sを探索する。
【0035】
より具体的には、解探索部14は、現在の状態Sのエネルギー値Eを計算し、更に現在の状態Sから僅かに変化(例えば1ビット反転)した次の状態S'のエネルギー値E'を計算し、更に両者の差分ΔE(=E'-E)を計算する。例えばSの確率分布としてボルツマン分布を想定し、メトロポリス法を用いる場合、次の状態S'に遷移する確率Pを以下の式で定めることができる。
【0036】
P=min[1,exp(-βΔE)] (3)
ここでβは逆温度(絶対温度の逆数)である。関数min[1,x]は値1と値xとのいずれか小さい方の関数値を有する。上式によれば、ΔE≦0のときに確率1で次の状態に遷移し、0<ΔEのときに確率exp(-βΔE)で次の状態に遷移する。
【0037】
状態を遷移させながら、充分に遅い速度で温度を低くしていくことにより、理論的には最小のエネルギー値を有する最適解に状態を収束させることができる。なおメトロポリス法は限定的でない一例であり、例えばギブス・サンプリング法等の他の遷移制御アルゴリズムを用いてもよい。解探索部14は、確率Pに応じて次の状態に遷移するか否かを判定してよい。
【0038】
解探索部14は、所定回数の状態遷移計算を実行したとの判断基準又はエネルギー値が所定の閾値以下の変動しか示さなくなったとの判断基準等を用い、当該判断基準が満たされた時点で解探索を終了させる。解探索部14が一回の解探索を実行して終了した時点で、1つの新たな解が特定される。
【0039】
ステップS4で、終了判定を実行する。具体的には解探索部14が、指定された解探索回数Tに等しい回数の解探索を実行し、T個の解が得られたか否かを判定する。T個の解が得られていない場合には、ステップS5に進む。
【0040】
ステップS5で、過去の解と問題の制約とに基づいて初期状態を生成する。具体的には、初期状態生成部15が、解探索部14により過去に求めた解から所定距離以上離れた第1の状態をランダムに生成する。初期状態生成部15は更に、第1の状態から開始して制約を確実に満たし且つ第1の手法よりも確実にエネルギー値が減少するよう状態遷移させる第2の手法により局所解を求め、当該局所解を初期状態として出力する。
【0041】
第2の手法により状態遷移させていく際、初期状態生成部15は、状態Sの1つ又は複数のビットを反転させることにより制約を満たす次の状態の候補を探し、それら候補の中からエネルギーが減少する状態を次の状態S'として選択してよい。基本的には確定的にエネルギーが減少するように状態遷移を行ってよいが、局所解を確定する迄の間に、若干の確率的な要素が導入されても問題はない。例えば、次の状態の候補のいずれに対してもエネルギーが減少しない場合には何らかの許容確率で候補中のいずれか1つの状態に遷移する、或いは状態遷移の何回かに一回はエネルギーが増大するような状態への遷移を確率的に許容する、等の制御を行ってもよい。
【0042】
ステップS5により局所解である初期状態が得られると、ステップS3に戻り、ステップS3及びそれ以降の処理を再実行する。この際、ステップS3において実行する解探索においては、ステップS5において初期状態生成部15が求めた初期状態から解探索を開始する。
【0043】
解探索が完了すると、ステップS4で終了判定を実行する。T個の解が既に得られたと判定された場合には、ステップS6に進む。ステップS6で、解探索部14は、T個の解のうちでエネルギーが最も小さい値である解を、最良解として外部に出力する。
【0044】
図3は、プロセッサによりソフトウェアを実行することにより最適化装置を実現する場合におけるコンピュータのハードウェア構成の一例を示す図である。
【0045】
図3に示されるように、前述の最適化方法を実行する最適化装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。
図3の装置は、コンピュータ20と、コンピュータ20に接続されるディスプレイ装置30、通信装置33、及び入力装置よりなる。入力装置は、例えばキーボード31及びマウス32を含む。コンピュータ20は、CPU21、RAM22、ROM23、ハードディスク等の二次記憶装置24、可換媒体記憶装置25、及びインターフェース26を含む。
【0046】
キーボード31及びマウス32は、ユーザとのインターフェースを提供するものであり、コンピュータ20を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置30は、コンピュータ20で処理された結果等を表示すると共に、コンピュータ20を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置33は、周辺装置との通信又は遠隔地との通信を行なうためのものであり、例えばモデム、ネットワークインターフェース、USB(Universal Serial Bus)等よりなる。
【0047】
最適化方法を実現するための機能は、コンピュータ20が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置25に装着可能な記憶媒体Mに記憶されており、記憶媒体Mから可換媒体記憶装置25を介して、RAM22或いは二次記憶装置24にロードされる。或いは、このコンピュータプログラムは、周辺装置又は遠隔地にある記憶媒体(図示せず)に記憶されており、この記憶媒体から通信装置33及びインターフェース26を介して、RAM22或いは二次記憶装置24にロードされる。
【0048】
キーボード31及び/又はマウス32を介してユーザからプログラム実行指示があると、CPU21は、記憶媒体M、周辺装置、遠隔地記憶媒体、或いは二次記憶装置24からプログラムをRAM22にロードする。CPU21は、RAM22の空き記憶空間をワークエリアとして使用して、RAM22にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおROM23は、コンピュータ20の基本動作を制御するための制御プログラムが格納されている。
【0049】
上記コンピュータプログラムを実行することにより、コンピュータ20が、前述の最適化方法を実行する。
【0050】
図4は、最適化方法の第1の実施例の手順を示すフローチャートである。ステップS11で、イジング型問題を入力する。具体的には、前述のステップS1と同様に、問題入力部11が、イジング型問題を示す情報を外部から受け取る。
【0051】
ステップS12で、解探索の手法に応じた入力パラメータ及び状態の初期値の設定を行う。具体的には、前述のステップS2と同様に、解探索パラメータ&初期状態入力部12が、解探索のパラメータを示す情報と初期状態を示す情報とを外部から受け取る。この情報には、熱ノイズ(温度)の初期値、熱ノイズ(温度)の減衰率、初期状態(例えば各スピンを表すビット値が0である状態)、解探索の回数T、所定距離を示す閾値A、参照する解の個数N等が含まれてよい。
【0052】
ステップS13で、解探索部14は、設定された入力パラメータ及び状態の初期値に基づいて解探索を実行し、目的関数値(エネルギー)が小さい状態を解として取得する。具体的には、前述のステップS3と同様に、解探索部14が、状態遷移によるエネルギーの値の変化に基づいて、現在の状態から近傍内での次の状態への状態遷移を制御することにより、エネルギー値がなるべく小さくなるような状態を探索する。解探索部14は、例えば所定回数の状態遷移計算を実行したとの判断基準等を用い、当該判断基準が満たされた時点で解探索を終了させる。解探索終了時点における状態Sが、ステップS13において取得する解となる。
【0053】
ステップS14で、解探索部14は、解探索の回数が設定した回数Tを超えたか否かを判定する。T個の解が得られていない場合(Noの場合)には、ステップS15に進む。
【0054】
ステップS15で、初期状態生成部15は、過去N回の解探索により得られたN個の解のいずれに対してもA個以上のビットが異なる状態が得られるまでランダムに状態を生成する。この際、過去に実行した解探索の回数がN回未満である場合には、過去に実行された解探索により得られた全ての解を用いてよい。また、過去に実行した解探索の回数がN回より大きい場合には、過去に実行された解探索により得られた全ての解のうちで直近N個の解を用いてよい。
【0055】
ステップS16で、初期状態生成部15は、生成された状態を開始点として、制約を確実に満たし且つ解探索の手法よりも確実に目的関数値(エネルギー)が小さくなるように状態を遷移させることにより局所解を求め、当該局所解の状態を初期値として出力する。この際、確実に目的関数値(エネルギー)を小さくするためには、目的関数値を単調改善(エネルギーを単調減少)させてよい。ステップS16により局所解である初期状態が得られると、ステップS13に戻り、ステップS13及びそれ以降の処理を再実行する。この際、ステップS13において実行する解探索においては、ステップS16において初期状態生成部15が求めた初期状態から解探索を開始する。
【0056】
解探索が完了すると、ステップS14で終了判定を実行する。T個の解が既に得られたと判定された場合(Yesの場合)には、ステップS17に進む。ステップS17で、解探索部14は、T個の解のうちで目的関数値(エネルギー)が最も小さい値である解を、最良解として外部に出力する。
【0057】
前述のステップS14において、解探索部14は、解探索の回数が設定した回数Tを超えたか否かを判定している。即ち、解探索部14が第1の手法による解探索を繰り返し実行する回数が所定の回数T+1に到達した時点で解探索の繰り返し実行を終了している。回数で判断する代わりに、解探索部14は、第1の手法による解探索を繰り返し実行する累積実行時間が所定の時間に到達した時点で、解探索の繰り返し実行を終了してもよい。このように回数又は時間により解探索の繰り返し実行を終了させることにより、所望の時間内で確実に解を得ることができる。
【0058】
図5は、初期状態生成部が局所解を求める手法の一例を示すフローチャートである。このフローチャートに示す処理が、
図2を用いて説明した最適化方法における第2の手法(制約を確実に満たし且つ第1の手法よりも確実にエネルギー値が減少するよう状態遷移させる手法)、及び
図4におけるステップS16の処理に相当する。
【0059】
ステップS21において、問題、問題の制約、及び解に基づく状態生成により得られた状態を入力する。具体的には、初期状態生成部15は、定式化された最適化問題を表す式、解に関する制約を表す式(条件)、及び過去に求めた解を解探索部14から受け取っている。初期状態生成部15は更に、
図4のステップS15において、過去N個の解に対して所定の距離条件(A個以上のビットが異なる条件)を満たす状態をランダムに生成してある。
【0060】
ステップS22において、初期状態生成部15は、現在まで得られた解に基づく状態の生成で得られた状態から、全てのビットを対象に1~M個のビットの値を一定値変えて生成した状態の中で、問題の制約を満たすものを次に探索する状態の候補として得る。Mは状態が有する全ビット数Lよりも充分に小さい数であり、現在の状態からM個のビットを反転することにより得られる状態が、現在の状態の近傍であると見なせる程度の数であってよい。
【0061】
解に関する制約が、状態の構成要素であるL個のビットを例えば10個のグループに等分割して得られる各グループにおいて、値が1であるビットの数が1個のみである条件の例を考える。この場合、例えば状態遷移において変化させるビット数を1個とした場合、制約を満たす現在の状態からいずれのビットを選択して反転させても、当該ビットが属するグループにおいて1ビットのみが1である条件が破られてしまう。それに対して、状態遷移において変化させるビット数を2個とした場合、制約を満たす現在の状態から1つのビットを選択して反転させ、当該ビットが属するグループにおいて現在1であるビットを反転させれば、グループにおいて1ビットのみが1である条件は依然として満たされる。ステップS22においては、このように1~M個である所定個数(例えば2個)のビット値を変化させることにより制約を満たす全ての状態を生成し、生成した状態を次に探索する状態の候補とする。
【0062】
ステップS23において、初期状態生成部15は、各候補について目的関数値(エネルギー)を計算する。
【0063】
ステップS24において、初期状態生成部15は、各候補の中で目的関数値(エネルギー)が小さくなるものがある場合、最も小さくなるものを選択する。また各候補の中でエネルギーが小さくなるものがない場合、初期状態生成部15は、確率p(0≦p<1)で処理を終了するか、又は候補の中からランダム若しくは目的関数値(エネルギー)の差に応じた確率で次に探索する状態を選択する。例えば、0≦r≦1である乱数rを生成し、乱数rの値がp以下であれば処理を終了してよい。また乱数rの値がpより大きい場合には、候補の中からランダムに1個の状態を選択し、当該選択した状態を次に探索する状態としてよい。或いは、乱数rの値がpより大きい場合、エネルギーの差分ΔEに応じた確率(例えばΔEが示すエネルギー増加が小さいほど選択可能性が大きくなるような確率)で次に探索する状態を選択し、当該選択した状態を次に探索する状態としてよい。
【0064】
ステップS25において、初期状態生成部15は、処理を終了する選択が行われたか否か、即ち局所解が確定されたか否かを判定する。処理を終了する選択が行われていない場合(Noの場合)、ステップS22に戻り、ステップS22の処理及び以降の処理を再実行する。なおステップS22の処理を再実行する際には、次に探索する状態としてステップS24で求めた状態を現在の状態として、この現在の状態から1~M個のビットの値を変化させることにより、更に次に探索する状態の候補を得ることになる。
【0065】
ステップS25において、処理を終了する選択が行われたと判定した場合(Yesの場合)、ステップS26に進む。ステップS26において、ステップS24での処理終了時における探索対象の状態(即ちこれ以上エネルギーが減少しない局所解の状態)を、解探索部14が実行する解探索に対する初期状態として出力する。
【0066】
図6は、制約の一例を示す図である。
図6に示される制約が、
図4に示される最適化方法の第1の実施例における制約として用いられてよい。
【0067】
図6に示す例では、20ビット長の状態を5ビット長のグループに等分割することにより、4つのグループ(
図6に示す4つの行)が形成され、各グループにおいて値が1であるビットの数が1個のみである条件が課せられる。即ち、
図6に示す4つの行の各々において、値が1であるビットの数が1個のみであることが要求される。
【0068】
より一般に、αの倍数であるLビット長の状態をαビット長のグループに分割したとき、各グループにおいて値が1であるビットの数が1個のみである制約を表現する制約項は各グループに対して以下の式で表現される。
【0069】
(Σxi-1)2 (4)
上式においてΣは、着目グループにおけるα個のビット値の総和(i=1~α)を計算する。式(4)に示される制約項の値は、着目グループが制約を満たすときにゼロとなり、制約から外れる度合が大きくなるほど大きな値となる。
【0070】
各グループに対して表現された式(4)に示される制約項に所定の係数値を掛け合わせ、イジング形式の式に加算することにより、制約を含む最適化問題を定式化した目的関数(エネルギー)の式を作成することができる。そのようにして定義されたエネルギーがなるべく小さくなるように、解探索部14が解を探索すれば、解が制約条件を満たすことをある程度保証しながら、エネルギーが小さくなる解を見つけることができる。なお制約条件を満たす確率を充分に高くするためには、上記の係数値を充分に大きな値とすればよい。なお初期状態生成部15が局所解を探索する際には、上記のエネルギーを小さくするように探索するだけでなく、
図5において説明したように制約を満たす状態のみを探索対象として選択することにより、明示的に制約が満たされるようにする。
【0071】
図7は、制約の別の一例を示す図である。
図7に示される制約が、
図4に示される最適化方法の第1の実施例における制約として用いられてよい。
図7に示す例では、17ビット長の状態を異なるビット長のグループに分割することにより、4つのグループG1乃至G4が形成され、各グループにおいて値が1であるビットの数が1個のみである条件が課せられる。即ち、
図7に示すグループG1乃至G4の各々において、値が1であるビットの数が1個のみであることが要求される。この制約についての制約項の生成及び目的関数式の生成は、
図6に示した制約の場合と同様にして行うことができる。
【0072】
図8は、制約の別の一例を示す図である。
図8に示される制約が、
図4に示される最適化方法の第1の実施例における制約として用いられてよい。
図8に示す例では、25ビット長の状態を5ビット長のグループに等分割することにより、5つのグループ(
図8に示す5つの行)が形成され、各行(各グループ)において値が1であるビットの数が1個のみであり且つ各列において値が1であるビットの数が1個のみである条件が課せられる。即ち、
図8に示す5つの行の各々において値が1であるビットの数が1個のみであると共に、5つの列の各々において値が1であるビットの数が1個のみであることが要求される。各行(各グループ)において値が1であるビットの数が1個のみであり且つ各列において値が1であるビットの数が1個のみである制約を表現する制約項は、行と列とのそれぞれに対して、前述の式(4)と同様の式を規定することにより生成することができる。また各行及び各列に対して生成した制約項に所定の係数値を掛け合わせ、イジング形式の式に加算することにより、制約を含む最適化問題を定式化した目的関数(エネルギー)の式を作成することができる。
【0073】
図9は、最適化方法の第2の実施例の手順を示すフローチャートである。第2の実施例による最適化方法は、
図4に示す第1の実施例による最適化方法と比較して、ステップS30が追加された点のみが異なる。それ以外のステップにおける処理に関して、第1の実施例と第2の実施例とで基本的に変更点はない。但しステップS12において設定される入力パラメータには、距離に関する閾値Bが追加で含まれる。
【0074】
図9において、ステップS16において初期状態となる局所解を求めた後、ステップS30が実行される。ステップS30で、初期状態生成部15は、求めた局所解と過去N個の解との距離が閾値B未満であるか否かを判断する。距離が閾値B未満である場合(Yes)、ステップS15に戻り、ステップS15及び以降のステップの処理を再実行する。距離が閾値B以上である場合(No)、ステップS13に戻り、ステップS16において生成した初期状態を用いて解探索を実行する。このように第2の実施例においては、必要に応じて初期状態となる局所解を求め直すことにより、過去N個の解から閾値B以上離れた充分に良好な初期状態を得ることができる。これにより、既に求めた解に収束してしまうような無駄な解探索の実行をより確実に回避することができる。
【0075】
図10は、最適化方法の第3の実施例の手順を示すフローチャートである。第3の実施例による最適化方法は、
図9に示す第2の実施例による最適化方法と比較して、ステップS15及びS30がステップS15A及びS30Aに変更された点のみが異なる。それ以外のステップにおける処理に関して、第2の実施例と第3の実施例とで変更点はない。
【0076】
図10のステップS15Aで、初期状態生成部15は、過去N回の解探索におけるN個の解及びN個の初期値のいずれに対してもA個以上のビットが異なる状態が得られるまでランダムに状態を生成する。即ち、ランダムに状態を生成する処理において、過去のN個の解のみでなく過去のN個の初期状態をも距離判断を行う対象として使用する。
【0077】
更に
図10のステップS30Aで、初期状態生成部15は、求めた局所解と過去の解及び初期値との距離が閾値B未満であるか否かを判断する。即ち、求めた局所解が良好なものか否かを判断する処理において、過去のN個の解のみでなく過去のN個の初期状態をも、閾値に基づく判断を行う際の対象として含める。
【0078】
このように第3の実施例においては、初期状態生成部15は、初期状態生成部15により過去に求めた解から所定距離以上離れると共に過去に出力した初期状態からも所定距離以上離れた第1の状態を求める。また更に初期状態生成部15は、当該第1の状態に基づいて求めた局所解と過去に求めた解及び過去に出力した初期状態のいずれかとの距離が所定の閾値未満である場合、局所解を求める動作を再実行して新たな局所解を求める。このように次の解探索に用いる初期状態を求める際に、過去に求めた解だけでなく過去に求めた初期状態も参考にすることにより、過去に実行した解探索と同一又は類似の解探索の実行を回避することができる。したがって、解探索を繰り返し実行する際に、初期状態が互いになるべく異なる解探索を実現し、最適解により近い解をより短時間で探索することが可能となる。
【0079】
図11は、最適化方法の第4の実施例の手順を示すフローチャートである。第4の実施例による最適化方法は、
図4に示す第1の実施例による最適化方法と比較して、ステップS40が追加された点のみが異なる。それ以外のステップにおける処理に関して、第1の実施例と第4の実施例とで基本的に変更点はない。但しステップS12において設定される入力パラメータには、距離に関する閾値Bが追加で含まれる。
【0080】
図11において、ステップS16において初期状態となる局所解を求めた後、ステップS40が実行される。ステップS40で、初期状態生成部15は、過去N個の解のうちで局所解との距離が閾値B未満のものがない場合、解探索パラメータをデフォールト設定とし、閾値B未満のものがある場合、対応する解探索で用いたことがない値に解探索パラメータを設定する。
【0081】
このように第4の実施例においては、局所解と過去に求めた解との距離が所定の閾値未満である場合、解探索部14は、デフォールトとは異なる解探索パラメータに基づいて解探索を実行する。例えば、熱ノイズ(温度)の初期値及び熱ノイズ(温度)の減衰率の少なくとも一方をステップS12で設定された値とは異なる値に設定し、解探索を実行してよい。
【0082】
図12は、温度の違いによる状態遷移の違いを示す図である。
図12(a)乃至(c)において、横軸は状態Sの分布を一次元で模式的に表現したものであり、縦軸は各状態に対するエネルギーEを示す。状態遷移が起きる際にエネルギー変化可能な幅が、模式的に矢印41乃至43で示されている。前述の式(3)から分かるように、温度が高いほど(即ち逆温度βが低いほど)、大きなエネルギー変化が起きる状態遷移の発生確率が高くなる。
図12(a)において温度は高く、矢印41に示されるように、状態遷移により大きなエネルギー変化が発生可能である。
図12(b)において温度は中程度であり、状態遷移により中程度のエネルギー変化が発生可能である。
図12(c)において温度は低く、状態遷移により小さなエネルギー変化のみが発生可能である。
【0083】
解探索する際には、温度が高い状態(
図12(a)に示す状態)から温度が低い状態(
図12(c)に示す状態)に徐々に温度を下げていくことにより、エネルギーが高い局所解に填り込むことなく、最適解に近い解を求めることが可能になる。その際に、温度の初期値及び温度の減衰率(より詳しくは温度下降曲線の形及び傾き)の少なくとも一方を変えることにより、解探索の振る舞いは大きく変動し、同じ初期状態から出発しても全く異なる解に収束する結果となる。
【0084】
第4の実施例においては、初期状態となる局所解と過去に求めた解との距離が所定の閾値未満である場合、デフォールトとは異なる解探索パラメータに基づいて解探索を実行する。これにより、過去に実行した解探索における初期状態と類似した初期状態から新たな解探索を実行しても、過去の解探索とは全く異なる探索経路を経て、全く異なる解を求めることが可能となる。即ち、過去に実行した解探索と同一又は類似の解探索の実行を回避し、最適解により近い解をより短時間で探索することが可能となる。
【0085】
図13は、最適化方法の第5の実施例の手順を示すフローチャートである。第5の実施例による最適化方法は、
図11に示す第4の実施例による最適化方法と比較して、ステップS40がステップS40Aに変更された点のみが異なる。それ以外のステップにおける処理に関して、第4の実施例と第5の実施例とで基本的に変更点はない。但しステップS12において設定される入力パラメータには、解探索回数に関する閾値Cが追加で含まれる。
【0086】
図13のステップS40Aで、初期状態生成部15は、過去N個の解のうちで局所解との距離が閾値B未満のものがない場合、解探索パラメータをデフォールト設定とし、閾値B未満のものがある場合、対応する解探索で用いたことがない値に解探索パラメータを設定する。更に、このように対応する解探索で用いたことがない値に解探索パラメータを設定する際には、初期状態生成部15は、過去N個の解の中で目的関数値(エネルギー)最小である解がC回以上前である場合、探索範囲が広がるような解探索パラメータの設定とする。
【0087】
このように第5の実施例において、解探索パラメータを変更する際には、過去に求めた解のうちでエネルギーが最小である解が所定回数以上前である場合、デフォールトとは異なり且つ解探索の探索範囲が広がるように設定された解探索パラメータを用いる。第4の実施例においては単に過去の解探索とは異なる解探索を実行しているのに対して、第5の実施例では、過去の解探索に比較して探索範囲が広がるように設定された解探索を実現している。即ち例えば、温度の初期値を高くしたり、温度の減衰率を低くしたり(即ち温度下降の傾きを緩やかにしたり)することにより、解探索の範囲を広くしている。また過去に求めた最も好ましい解が所定回数以上前である場合に、そのように探索範囲が広がるような設定に変更している。最も好ましい解が得られて以降、それ以上に好ましい解が得られない状況が続いている場合には、解探索のパラメータが適切でない設定となっている可能性がある。したがってそのような場合には特に、解探索のパラメータを単に変更するだけではなく、探索範囲が広くなるような設定にすることが好ましいと考えられる。
【0088】
このように第5の実施例においては、好ましい解がなかなか得られない状況であり且つ解探索のパラメータを変更することが好ましい状況において、過去の解探索よりもより広い範囲を探索する探索経路を利用できるように解探索のパラメータを変更する。これにより、過去と類似した初期状態から出発しても、過去の解探索よりもより広い範囲を探索する探索経路を経て、全く異なる解を求めることが可能となる。即ち、過去に実行した解探索よりも広い範囲での解探索を実現し、最適解により近い解をより短時間で探索することが可能となる。
【0089】
図14は、最適化方法の第6の実施例の手順を示すフローチャートである。第6の実施例による最適化方法は、
図4に示す第1の実施例による最適化方法と比較して、ステップS50が追加された点のみが異なる。それ以外のステップにおける処理に関して、第1の実施例と第6の実施例とで基本的に変更点はない。但しステップS12において設定される入力パラメータには、距離に関する閾値Dが追加で含まれる。
【0090】
図14において、ステップS15において所定の距離条件を満たす状態をランダムに生成した後、ステップS50が実行される。ステップS50で、初期状態生成部15は、生成された状態から目的関数値(エネルギー)が略単調増加するよう探索して得られる状態(極大点)と過去に用いた初期値との距離が閾値D未満であるか否かを判定する。距離が閾値D未満である場合(Yes)、ステップS15に戻り、ステップS15及び以降のステップの処理を再実行する。距離が閾値D以上である場合(No)、ステップS16に進む。なおここで略単調増加するよう探索するという表現は、若干の確率的な要素が導入されても問題はないという趣旨であり、基本的にはエネルギーが単調増加するようにして極大点を探索してよい。即ち、貪欲法の考え方に基づき極大点を探索してよい。
【0091】
このように第6の実施例においては、目的関数値が単調悪化するように探索することにより極値を求め、極値における状態と過去に出力した初期状態との距離が所定の閾値未満である場合、ランダムに状態生成する動作を再実行して新たな状態を求める。最初に得られた第1の状態が過去の解から距離が離れていても、そこから登ることにより到達した極大値の状態が、過去の初期状態と近いのであれば、第1の状態は過去の初期状態から一山程度しか離れていない可能性がある。そのような場合には、局所解に停留しないよう解探索をしたときに過去の初期状態に近づいてしまい無駄な解探索となる虞があるので、新たな第1の状態を生成し直すことにより、そのような虞をなくすことが好ましい。これにより、既に求めた解に収束してしまうような無駄な解探索の実行をより確実に回避することができる。
【0092】
図15は、最適化方法の第7の実施例の手順を示すフローチャートである。第7の実施例による最適化方法は、
図14に示す第6の実施例による最適化方法と比較して、ステップS60が追加された点のみが異なる。それ以外のステップにおける処理に関して、第6の実施例と第7の実施例とで変更点はない。
【0093】
図15において、ステップS16において局所解を求めた後、ステップS60が実行される。ステップS60で、初期状態生成部15は、求めた局所解から目的関数値(エネルギー)が略単調増加するよう探索して得られる状態(極大点)と過去に用いた初期値との距離が閾値D未満であるか否かを判定する。距離が閾値D未満である場合(Yes)、ステップS15に戻り、ステップS15及び以降のステップの処理を再実行する。距離が閾値D以上である場合(No)、ステップS13に進む。なおここで略単調増加するよう探索するという表現は、若干の確率的な要素が導入されても問題はないという趣旨であり、基本的にはエネルギーが単調増加するようにして極大点を探索してよい。即ち、貪欲法の考え方に基づき極大点を探索してよい。またステップS50で用いる閾値とステップS60で用いる閾値とは、同一であってもよいし、互いに異なってもよい。
【0094】
このように第7の実施例においては、局所解から目的関数値が単調悪化するように探索することにより第2の極値を求め、第2の極値における状態と過去に出力した初期状態との距離が所定の閾値未満である場合、状態生成する動作を再実行して新たな状態を求める。最初に求めた局所解が過去の解から距離が離れていても、そこから登ることにより到達した極大値の状態が、過去の初期状態と近いのであれば、局所解は過去の初期状態から一山程度しか離れていない可能性がある。そのような場合には、局所解に停留しないよう解探索をしたときに過去の初期状態に近づいてしまい無駄な解探索となる虞があるので、新たな状態を生成し直して新たな局所解を求めることにより、そのような虞をなくすことが好ましい。これにより、既に求めた解に収束してしまうような無駄な解探索の実行をより確実に回避することができる。
【0095】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【0096】
10 最適化装置
11 問題入力部
12 解探索パラメータ&初期状態入力部
13 問題制約入力部
14 解探索部
15 初期状態生成部
20 コンピュータ
21 CPU
22 RAM
23 ROM
24 二次記憶装置
25 可換媒体記憶装置
26 インターフェース
30 ディスプレイ装置
31 キーボード
32 マウス
33 通信装置