(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024132030
(43)【公開日】2024-09-30
(54)【発明の名称】時間推定装置、温度スケジュール推定装置、時間推定方法、温度スケジュール推定方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240920BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023042651
(22)【出願日】2023-03-17
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【弁理士】
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】伴内 光太郎
(72)【発明者】
【氏名】西村 考弘
(72)【発明者】
【氏名】窪田 大
(72)【発明者】
【氏名】土井 龍太郎
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】鷹野 芙美代
(72)【発明者】
【氏名】江藤 力
(57)【要約】
【課題】シミュレーテッドアニーリングの実行時間に応じた対応を可能にする。
【解決手段】時間推定装置が、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定するアニーリング時間推定手段と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定するアニーリング時間推定手段と、
を備える時間推定装置。
【請求項2】
前記データ選択手段は、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールの類似度に基づいて、前記過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する、
請求項1に記載の時間推定装置。
【請求項3】
前記データ選択手段は、シミュレーテッドアニーリングの計算モデルの類似度に基づいて、前記過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する、
請求項1または請求項2に記載の時間推定装置。
【請求項4】
前記アニーリング時間推定手段は、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率に基づいてアニーリング時間の推定値を更新する、
請求項1または請求項2に記載の時間推定装置。
【請求項5】
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールを推定する温度スケジュール推定手段と、
を備える温度スケジュール推定装置。
【請求項6】
前記温度スケジュール推定手段は、シミュレーテッドアニーリングの打ち切り時における、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率が所定の値以下となるように、温度スケジュールを更新する、
請求項5に記載の温度スケジュール推定装置。
【請求項7】
コンピュータが、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定する、
ことを含む時間推定方法。
【請求項8】
コンピュータが、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定する、
ことを含む温度スケジュール推定方法。
【請求項9】
コンピュータに、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定することと、
を実行させるためのプログラム。
【請求項10】
コンピュータに、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定することと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、時間推定装置、温度スケジュール推定装置、時間推定方法、温度スケジュール推定方法およびプログラムに関する。
【背景技術】
【0002】
最適化問題を解く方法の1つにシミュレーテッドアニーリング(Simulated Annealing;SA)がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
シミュレーテッドアニーリングの実行時間に応じて課金が行われる場合など、シミュレーテッドアニーリングの実行時間に応じた対応が可能であることが好ましい。
【0005】
本発明の目的の一例は、上述の課題を解決することのできる時間推定装置、温度スケジュール推定装置、時間推定方法、温度スケジュール推定方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、時間推定装置は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定するアニーリング時間推定手段と、を備える。
【0007】
本発明の第2の態様によれば、温度スケジュール推定装置は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールを推定する温度スケジュール推定手段と、を備える。
【0008】
本発明の第3の態様によれば、時間推定方法は、コンピュータが、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定する、ことを含む。
【0009】
本発明の第4の態様によれば、温度スケジュール推定方法は、コンピュータが、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定する、ことを含む。
【0010】
本発明の第5の態様によれば、プログラムは、コンピュータに、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定することと、を実行させるためのプログラムである。
【0011】
本発明の第6の態様によれば、プログラムは、コンピュータに、シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定することと、を実行させるためのプログラムである。
【発明の効果】
【0012】
本発明によれば、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【図面の簡単な説明】
【0013】
【
図1】第1実施形態に係る最適化計算システムの構成の例を示す図である。
【
図2】第1実施形態における、対象問題を表すQUBO行列の例を示す図である。
【
図3】第1実施形態における、対象問題を表すQUBO行列における非ゼロの要素の配置の例を示す図である。
【
図4】第1実施形態における、スイープ数と受理率との関係の第1の例を示す図である。
【
図5】第1実施形態における、スイープ数と受理率との関係の第2の例を示す図である。
【
図6】第1実施形態に係る時間推定装置が行う処理の手順の例を示す図である。
【
図7】第2実施形態に係る最適化計算システムの構成の例を示す図である。
【
図8】第2実施形態において、過去の例を用いて推定される、今回のアニーリングにおけるスイープ数と受理率との関係の例を示す図である。
【
図9】第2実施形態に係る時間推定装置が行う処理の手順の例を示す図である。
【
図10】第3実施形態に係る最適化計算システムの構成の例を示す図である。
【
図11】第3実施形態における、受理率とアニーリングの打ち切り時間との関係の例を示す図である。
【
図12】第3実施形態における、アニーリングの打ち切り時間と温度スケジュールとの関係の例を示す図である。
【
図13】第3実施形態に係る温度スケジュール推定装置が行う処理の手順の例を示す図である。
【
図14】第4実施形態に係る最適化計算システムの構成の例を示す図である。
【
図15】第4実施形態における、温度スケジュールの変更の例を示す図である。
【
図16】第4実施形態における、温度スケジュールの変更による受理率の変化の例を示す図である。
【
図17】第4実施形態に係る温度スケジュール推定装置が行う処理の手順の例を示す図である。
【
図18】第5実施形態に係る時間推定装置の構成の例を示す図である。
【
図19】第6実施形態に係る温度スケジュール推定装置の構成の例を示す図である。
【
図20】第7実施形態に係る時間推定方法における処理の手順の例を示す図である。
【
図21】第8実施形態に係る温度スケジュール推定方法における処理の手順の例を示す図である。
【
図22】少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0015】
<第1実施形態>
図1は、第1実施形態に係る最適化計算システムの構成の例を示す図である。
図1に示す構成で、最適化計算システム1は、時間推定装置110と、ユーザ端末120と、シミュレーテッドアニーリングマシン130とを備える。時間推定装置110は、入力データ取得部111と、実績データ選択部112と、アニーリング時間推定部113とを備える。
【0016】
最適化計算システム1は、シミュレーテッドアニーリングによる最適化計算を行うシステムである。
以下では、シミュレーテッドアニーリングを、単にアニーリングとも称する。アニーリングの実行時間を、アニーリング時間とも称する。ここでいうアニーリング時間は、アニーリング開始からアニーリング終了までの所要時間である。
また、アニーリングの実行対象となっている問題を対象問題とも称する。実行対象となっているアニーリングを今回のアニーリングとも称する。
【0017】
以下では、対象問題がQUBO(Quadratic Unconstraint Binary Optimization)で表されている場合を例に説明する。ただし、最適化計算システム1が、アニーリングに用いる計算モデルは特定の種類のモデルに限定されない。例えば、対象問題がイジングモデル(Ising Model)を用いて表されていてもよい。
【0018】
シミュレーテッドアニーリングマシン130は、シミュレーテッドアニーリングを実行する。シミュレーテッドアニーリングマシン130は、例えばメインフレーム(Mainframe)等のコンピュータを用いて構成されていてもよい。シミュレーテッドアニーリングマシン130がクラウド内に位置していてもよい。
【0019】
ユーザ端末120は、最適化計算システム1におけるユーザインタフェースとして機能する。例えば、ユーザ端末120が、対象問題を示すデータ、および、アニーリングの実行のためのパラメータの値など、アニーリングを実行するためのデータを時間推定装置110へ送信するようにしてもよい。また、ユーザ端末120が、アニーリングの結果を表示するようにしてもよい。ユーザ端末120は、例えばパソコン(Personal Computer;PC)などのコンピュータを用いて構成されていてもよい。
【0020】
時間推定装置110は、シミュレーテッドアニーリングマシン130が対象問題のアニーリングを行う際に、過去のアニーリング実行時のデータに基づいてアニーリング時間を推定し、ユーザ端末120を介してユーザ(サービス利用者)に通知する。ユーザは、アニーリング時間の推定値を参照して、アニーリングの実行を指示する、アニーリングの実行のためのパラメータの値を変更してアニーリング時間を変化させる、あるいは、アニーリングの依頼を取りやめるなどの対応を行うことができる。
【0021】
ここで、アニーリングはランダムな計算を含んでおり、一般的にはユーザは、アニーリング時間を事前に知ることはできない。例えば、シミュレーテッドアニーリングマシンを従量課金型のクラウドサービスで利用する場合、利用料金はアニーリング時間に応じて発生するのに対し、アニーリング時間を事前に知ることができないことで、サービスにかかる費用を事前に見積もることができず、サービスの利用の妨げとなることが考えられる。
【0022】
これに対し、時間推定装置110は、アニーリングの実績データのうち、今回のアニーリングに類似するアニーリングの実績データに基づいて、今回のアニーリングの実行時間(アニーリング時間)を推定する。これにより、ユーザは、サービスにかかる費用を事前に見積もることができる。アニーリング時間が想定していた時間よりも長い場合、ユーザは、例えば、そのままアニーリングの実行を指示する、温度スケジュールを変更するなどアニーリング時間の短縮を図る、あるいは、アニーリングの依頼を中止するなどの対応を行うことができる。
【0023】
ここでいう温度スケジュールは、温度パラメータ値のスケジュールである。温度パラメータ値は、アニーリングによる解探索で、エネルギー関数などの評価関数が示す評価がより悪くなるような、QUBOの状態遷移を受理する確率を表す。温度パラメータまたは温度パラメータ値を、単に温度とも称する。
【0024】
ここで、QUBOの状態遷移によって、評価関数が示す評価がより良くなる場合と、評価がより悪くなる場合とが考えられる。シミュレーテッドアニーリングマシン130は、評価がより良くなる状態遷移を100%受理し、評価がより悪くなる状態遷移を、温度パラメータ値が示す確率で受理するものとする。ここでいう、状態遷移を受理することは、QUBOの状態を、その状態遷移後の状態にすることである。状態遷移を受理しないとは、QUBOの状態を、その状態遷移前の状態に戻すことである。
【0025】
温度パラメータ値を比較的大きい値(高い温度)に設定することで、アニーリングによる解探索が局所解に陥る可能性を低減させることができる。一方、温度パラメータ値を比較的小さい値(低い温度)に設定することで、解の収束が比較的速いことが期待される。
【0026】
QUBOの状態遷移は、QUBOに含まれる量子ビットの値を反転させることで行われる。量子ビットは、量子の状態の例に該当するスピンを表す変数であり、0または1の値をとる。
【0027】
1つの量子ビットの値を反転させることをフリップ(Flip)とも称する。シミュレーテッドアニーリングマシン130は、フリップを行うごとに評価関数値を算出し、そのフリップを受理するか否かを決定する。状態遷移について上述したように、シミュレーテッドアニーリングマシン130は、評価がより良くなるフリップを100%受理し、評価がより悪くなるフリップを、温度パラメータ値が示す確率で受理する。
【0028】
フリップをある一定回数繰り返すことをスイープ(Sweep)とも称する。スイープの個数(スイープの回数)をスイープ数とも称する。今回のアニーリングで実行することに定められているスイープ数を、入力スイープ数とも称する。
1回のスイープのうちに、1つの量子ビットのフリップが複数回行われてもよい。シミュレーテッドアニーリングマシン130が、フリップの対象となる量子ビットをランダムに決定するようにしてもよい。
1回のスイープにおける受理されたフリップの割合など、フリップをある回数おこなった場合の受理されたフリップの個数を、行われたフリップの回数で除算した値を、受理率とも称する。
【0029】
入力データ取得部111は、対象問題を示すデータ、および、アニーリングの実行に関するパラメータの値を示すデータなど、今回のアニーリングに関する設定を示すデータを、ユーザ端末120から取得する。例えば、入力データ取得部111が、対象問題を示すデータとしてQUBO行列を取得するようにしてもよい。また、入力データ取得部111が、アニーリングの実行に関するパラメータを示すデータとして、今回のアニーリングに用いられる温度スケジュールを示すデータと、ハミルトニアンに含まれる制約条件(コスト関数)の重み係数などのパラメータ値とを取得するようにしてもよい。入力データ取得部111が、温度スケジュールを示すデータとして、アニーリング開始時の温度およびアニーリング終了時の温度など、あるタイミングでの温度を取得するようにしてもよい。
【0030】
図2は、対象問題を表すQUBO行列の例を示す図である。
図2は、51都市の巡回セールスマン問題(Traveling Salesman Problem;TSP)のQUBO行列の例を表している。
図2の例のように、QUBO行列は上三角行列で表される。なお、
図2の「0.」は、0の実数表現を示している。
【0031】
図3は、対象問題を表すQUBO行列における非ゼロの要素の配置の例を示す図である。
図3は、
図2の例におけるQUBO行列における非ゼロの要素の配置を示している。
図3の例で、対角成分よりも左下の要素の値は全て0になっている。対角成分、および、対角成分よりも右上の要素については、対角成分に近い一部の要素の値が0以外の値になっている。対角成分から離れた要素は、おおよそ全ての要素の値が0になっている。
【0032】
ただし、最適化計算システム1が扱う問題は、特定の種類の問題に限定されず、シミュレーテッドアニーリングを用いて解くことができるいろいろな問題とすることができる。また、最適化計算システム1が扱う計算モデルは特定の種類のモデルに限定されず、シミュレーテッドアニーリングを適用可能ないろいろなモデルとすることができる。
【0033】
実績データ選択部112は、今回のアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。実績データ選択部112は、データ選択手段の例に該当する。
特に、実績データ選択部112は、対象問題とQUBOが類似する、過去のシミュレーテッドアニーリングの実行結果を示すデータを選択する。実績データ選択部112は、例えば、以下の指標またはこれらのうちの一部の類似度(指標値の近さ)を用いてQUBOの類似度を算出する。
【0034】
指標1. QUBO行列のサイズ。
QUBO行列のサイズとして、行数および列数を用いることができる。例えば、N×N行列→サイズN×Nとすることができる。
【0035】
指標2. QUBO行列の結合密度
QUBO行列の結合密度として、QUBO行列の非ゼロの要素数を全要素数で除算した値を用いることができる。ここで、QUBO行列は上三角行列で表されることから、QUBO行列のうち上三角部分の要素のみを考慮して、結合密度を算出する。
【0036】
例:スピン数3の場合について考え、量子ビットをx1、x2、x3で表す。x1、x2、x3は、いずれも0または1の何れかの値をとる変数である。
・ケース1
ハミルトニアンHが、
H=x1+x1*x2+x2+x3
で表される場合、QUBO行列は、
QUBO=[[1,1,0],[0,1,0],[0,0,0]]
のように表される。この場合、実績データ選択部112は、結合密度=3/6=50%と算出する。
【0037】
・ケース2
ハミルトニアンHが、
H=x1+x1*x2+x1*x3+x2+x2*x3+x3
で表される場合、QUBO行列は、
QUBO=[[1,1,1],[0,1,1],[0,0,1]]
のように表される。この場合、実績データ選択部112は、結合密度=6/6=100%と算出する。
【0038】
指標3. QUBO行列のプロメニウスノルム
QUBO行列のプロメニウスノルムPは、QUBO行列の第i行第j列の成分をaijとして、
P=sqrt{Σ(i,j)aij
2}
のように、QUBO行列の全成分の二乗和のルート(平方根)で表される。
【0039】
指標4. QUBO行列の対角成分の符号
対角成分に負の要素が含まれているか否かを指標として用いることができる。例えば、対角成分に負の要素が含まれていない場合は、この指標値を0とし、含まれている場合は、この指標値を1としてもよい。あるいは、対角成分に含まれる負の要素の個数を指標値として用いるようにしてもよい。
【0040】
指標5. QUBO行列の非ゼロ要素が対角成分からどれだけ散らばっているかを表す量
結合密度が同程度の場合でも、非ゼロ値の要素が対角成分の近傍のみに含まれるケースと、行列の要素全体に散らばっているケースとで、実行時間に差異が生じると考えられる。
実績データ選択部112は、この指標値を以下のように算出する。
ここでは、QUBO行列のサイズをN行N列とし、行列の各要素をAn,n’で表す。ここでは、nは、1≦n≦Nの整数である。nは、1≦n’≦Nの整数である。
指標値=Σ(n=1,・・・,N,n’=1,・・・,N)|n-n’|2/N3 if An,n’≠0
1/N3は、QUBO行列のサイズの影響を排除するための規格化係数である。
【0041】
例:スピン数4の場合について考え、量子ビットをx1、x2、x3、x4で表す。x1、x2、x3、x4は、いずれも0または1の何れかの値をとる変数である。
・ケース1
QUBO行列が、
QUBO=[[5,2,0,0],[0,1,3,0],[0,0,4,3],[0,0,0,1]]
である場合、結合密度=7/10=70%である。
実績データ選択部112は、この指標値を
指標値=|1-1|2+|2-2|2+|3-3|2+|4-4|2+|1-2|2+|2-3|2+|3-4|2/43=0.046875
と算出する。
【0042】
・ケース2
QUBO行列が、
QUBO=[[5,0,2,6],[0,1,0,4],[0,0,4,0],[0,0,0,1]]
である場合、結合密度=7/10=70%である。
実績データ選択部112は、この指標値を
指標値=|1-1|2+|2-2|2+|3-3|2+|4-4|2+|1-3|2+|1-4|2+|2-4|2/43=0.265625
と算出する。
【0043】
実績データ選択部112が、2つのQUBO行列について、これらの指標値を総合的に比較して、対象問題とQUBO行列が類似する、過去のシミュレーテッドアニーリングの実行結果を示すデータを選択するようにしてもよい。
例えば、実績データ選択部112が、上記の指標1について、2つのQUBO行列のサイズの差が±10%以内であれば、これら2つのQUBO行列を類似とするなど、指標ごとにQUBO行列が類似するか否かを判定するようにしてもよい。そして、実績データ選択部112が、過去のシミュレーテッドアニーリングの実行結果を示すデータのうち、対象問題とQUBO行列が類似とされる指標の個数がなるべく多いデータを選択するようにしてもよい。
【0044】
あるいは、実績データ選択部112が、2つのQUBO行列について上記の各指標値の差の大きさを算出するようにしてもよい。そして、実績データ選択部112が、予め定められている重み係数を用いて、各指標値の差の大きさの重み付け合計を、2つのQUBO行列の相違度として算出するようにしてもよい。そして、実績データ選択部112が、過去のシミュレーテッドアニーリングの実行結果を示すデータのうち、対象問題とQUBO行列の相違度がなるべく小さいデータを選択するようにしてもよい。
【0045】
実績データ選択部112が、2つの温度スケジュールの類似度を評価する場合、アニーリング開始時の温度およびアニーリング終了時の温度など、あるタイミングでの温度の差の大きさが小さいほど、温度スケジュールが類似していると評価するようにしてもよい。
実績データ選択部112が、2つのパラメータ値の類似度を評価する場合、パラメータ値の差の大きさが小さいほど、パラメータ値が類似していると評価するようにしてもよい。
【0046】
アニーリング時間推定部113は、入力データ取得部111が入力を受け付けたデータと、過去のアニーリング実行時の履歴データのうち実績データ選択部112が選択したデータとに基づいて、今回のアニーリングの実行時間(アニーリング時間)を推定する。アニーリング時間推定部113は、アニーリング時間推定手段の例に該当する。
スイープ数ごとに温度スケジュールの温度が設定されている場合など、今回のアニーリングで実行するスイープ数が予め定められている場合、アニーリング時間推定部113が、式(1)に基づいて、今回のアニーリングの実行時間の推定値を算出するようにしてもよい。
【数1】
【0047】
T_estは、今回のアニーリングの実行時間の推定値を表す。
num_sweepsは、今回のアニーリングで実行することに定められているスイープ数を表す。
Tは、過去のアニーリングで実測された1スイープ分の実行時間を表す。この場合の過去のアニーリングは、データベースに記憶されている全てのアニーリングであってもよいし、実績データ選択部112が選択したアニーリングであってもよい。
【0048】
accept_rateは、今回のアニーリングにおける受理率の推定値を表す。アニーリング時間推定部113は、実績データ選択部112が選択した、今回のアニーリングに類似している過去のアニーリングにおける受理率の実測値を、今回のアニーリングにおける受理率の推定値として用いる。
【0049】
ここでの受理率として、アニーリング開始からアニーリング終了までの受理率の平均値を用いることができる。アニーリング開始からアニーリング終了までの受理率の平均値を、平均受理率とも称する。
「*」は、掛け算を表す。
【0050】
ここで、フリップが受理されたときの方が、フリップが受理されなかったときよりも、エネルギーの計算量(評価関数の計算量)が多いなど、1スイープ分の実行時間が長いことが考えられる。これにより、入力スイープ数が設定されている場合でも、受理率によってアニーリング時間が異なる。
また、一般的には受理率を事前に知ることはできない。
【0051】
そこで、アニーリング時間推定部113は、過去のアニーリング実行時の履歴データのうち今回のアニーリングに類似しているデータに基づいて、今回のアニーリングにおける受理率を推定し、推定した受理率に基づいてアニーリング時間を推定する。
これにより、アニーリング時間推定部113は、フリップの受理の有無による計算量の違いをアニーリング時間の推定に反映させることができ、アニーリング時間をより高精度に推定できると期待される。
【0052】
なお、フリップが受理されなかったときの推定時間の調整のための係数である「1/2」は、これに限らず、フリップが受理されたときと、フリップが受理されなかったときとの時間の割合に応じた係数とすることができる。
また、式(1)では、アニーリングの初期では、受理率が1に近いことを想定して、1スイープ分の実行時間の実測値を、フリップが受理されたときの(1スイープ分の)実行時間として用いている。これに対し、アニーリングの初期でも、受理率が1よりも小さいことを反映させるための係数が設けられていてもよい。
例えば、アニーリング時間推定部113が、式(2)に基づいて、今回のアニーリングの実行時間の推定値を算出するようにしてもよい。
【数2】
【0053】
αは、フリップが受理されたときの推定時間の調整のための係数であり、α≧1である。
βは、フリップが受理されなかったときの推定時間の調整のための係数であり、0<β≦1である。
【0054】
αの値、および、βの値は、今回のアニーリングにおける実行時間の測定値に基づいて設定されていてもよい。あるいは、αの値、および、βの値は、過去のアニーリングにおける実行時間の測定値に基づいて設定されていてもよい。あるいは、αの値、および、βの値は、ユーザによって設定されていてもよい。
【0055】
図4は、スイープ数と受理率との関係の第1の例を示す図である。
図4のグラフの横軸はスイープ数を表す。縦軸は、受理率を表す。
図4では、同じQUBOに対していろいろな温度スケジュールにてアニーリングを実行したときの、スイープ数10ごとの受理率が、スイープ数10から100までの範囲でプロットされ、プロットされた点が直線で結ばれている。
【0056】
図5は、スイープ数と受理率との関係の第2の例を示す図である。
図5のグラフの横軸はスイープ数を表す。縦軸は、受理率を表す。
図5では、同じQUBOに対していろいろな温度スケジュールにてアニーリングを実行したときの、スイープ数10ごとの受理率が、スイープ数10から1000までの範囲でプロットされ、プロットされた点が直線で結ばれている。
【0057】
実績データ選択部112は、
図4および
図5の例のように、同じQUBOに対していろいろな条件でアニーリングを実行したときの実績データを、いろいろなQUBOについて記憶しておく。そして、実績データ選択部112は、記憶している過去のアニーリングのデータ(実績データ)のうち、QUBOおよび条件が今回のアニーリングに類似しているアニーリングのデータを選択する。
【0058】
アニーリング時間推定部113は、QUBOが選択したアニーリングにおける平均受理率を、今回のアニーリングにおける平均受理率の推定値として用いる。実績データ選択部112が、複数のアニーリングのデータを選択した場合、アニーリング時間推定部113が、実績データ選択部112が選択した複数のアニーリングにおける平均受理率の平均値を、今回のアニーリングにおける平均受理率の推定値として用いるようにしてもよい。
【0059】
あるいは、アニーリング時間推定部113が、実績データ選択部112が選択したアニーリング時間を、今回のアニーリングにおけるアニーリング時間の推定値として用いるようにしてもよい。実績データ選択部112が、複数のアニーリングのデータを選択した場合、アニーリング時間推定部113が、実績データ選択部112が選択した複数のアニーリングにおけるアニーリング時間の平均値を、今回のアニーリングにおけるアニーリング時間の推定値として用いるようにしてもよい。
【0060】
図6は、時間推定装置110が行う処理の手順の例を示す図である。
図6の処理で、入力データ取得部111は、実行予定のQUBO行列、スイープ(Sweep)数、温度スケジュール及び、その他のアニーリングパラメータ値を、ユーザ端末120から取得する(ステップS101)。
【0061】
次に、実績データ選択部112は、ステップS101で得られたQUBO行列に類似した過去のQUBO行列のアニーリング実行時の、スイープ数と受理率との関係、および、アニーリング時間の情報を、アニーリングの実績データを蓄積しているデータベースから取得する(ステップS102)。
【0062】
次に、アニーリング時間推定部113は、ステップS101で得られたデータと、ステップS102で得られたデータとに基づいて、対象問題のアニーリングを実行した場合の平均受理率を推定し、推定した平均受理率に基づいて、アニーリング時間を推定する(ステップS103)。
アニーリング時間推定部113は、ステップS103で推定したアニーリング時間をユーザに通知する(ステップS104)。例えば、アニーリング時間推定部113は、アニーリング時間の推定値をユーザ端末120に送信し、ユーザ端末120が、アニーリング時間の推定値を表示する。
【0063】
次に、入力データ取得部111が、アニーリングの実行開始をシミュレーテッドアニーリングマシン130に指示する(ステップS105)。アニーリングの実行開始にあたり、ユーザが、ステップS104でのアニーリング時間の推定値に基づいて、そのままアニーリングの実行を指示する、温度スケジュールを変更する、あるいは、アニーリングの依頼を中止するなどの対応を行えるようにしてもよい。そして、シミュレーテッドアニーリングマシン130が、ユーザの対応に応じて、アニーリングを実行する、あるいはアニーリングの実行を中止するようにしてもよい。
ステップS105の後、時間推定装置110は、
図6の処理を終了する。
【0064】
以上のように、実績データ選択部112は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。アニーリング時間推定部113は、選択されたデータに基づいて、対象問題のシミュレーテッドアニーリングの実行時間を推定する。
【0065】
時間推定装置110によれば、シミュレーテッドアニーリングの実行開始前に、アニーリング時間(シミュレーテッドアニーリングに要する時間)を推定することができる。サービスを利用するユーザは、アニーリング時間の推定値を参照して、アニーリングの実行を指示する、アニーリングの実行のためのパラメータの値を変更してアニーリング時間を変化させる、あるいは、アニーリングの依頼を取りやめるなどの対応を行うことができる。
時間推定装置110によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0066】
また、実績データ選択部112は、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールの類似度に基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
時間推定装置110によれば、アニーリング時間の推定に温度スケジュールを反映させることができる。時間推定装置110によれば、この点で、アニーリング時間を比較的高精度に推定できると期待される。
【0067】
また、実績データ選択部112は、シミュレーテッドアニーリングの計算モデルの類似度に基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
時間推定装置110によれば、アニーリング時間の推定に、QUBOなどシミュレーテッドアニーリングの計算モデルのサイズなどの特徴を反映させることができる。時間推定装置110によれば、この点で、アニーリング時間を比較的高精度に推定できると期待される。
【0068】
<第2実施形態>
図7は、第2実施形態に係る最適化計算システムの構成の例を示す図である。
図7に示す構成で、最適化計算システム2は、時間推定装置210と、ユーザ端末120と、シミュレーテッドアニーリングマシン130とを備える。時間推定装置210は、入力データ取得部111と、実績データ選択部112と、アニーリング時間推定部213と、経過データ取得部214とを備える。
【0069】
図7の各部のうち、
図1の各部に対応して同様の機能を有する部分には同一の符号(111、112、120、130)を付し、ここでは詳細な説明を省略する。
時間推定装置210は、時間推定装置110が備える各部に加えて経過データ取得部214を備える。経過データ取得部214は、対象問題に対するアニーリングの実行時に、スイープごとのフリップの受理回数などの実測値を取得する。
また、時間推定装置210では、アニーリング時間推定部213は、時間推定装置110のアニーリング時間推定部113と同様、アニーリング開始前にアニーリング時間を推定することに加えて、さらに、アニーリングの実行状況に応じてアニーリング時間の推定値を更新する。アニーリング時間推定部213は、アニーリング時間推定手段の例に該当する。
それ以外の点では、時間推定装置210は、時間推定装置110と同様である。
【0070】
図8は、過去の例を用いて推定される、今回のアニーリングにおけるスイープ数と受理率との関係の例を示す図である。
図8のグラフの横軸は、スイープ数を表す。縦軸は、受理率を表す。
線L11は、過去に行われたアニーリングにおけるスイープ数ごとの受理率を曲線近似した線である。
線L12は、線L11に基づいて推定された、今回のアニーリングにおけるスイープ数と受理率との関係を表す線である。
【0071】
例えば、時間推定装置110が、以下のようにして今回のアニーリングの実行時間(アニーリング時間)を推定するようにしてもよい。
実績データ選択部112が、
図4および
図5の例のように、同じQUBOに対していろいろな温度スケジュールにてアニーリングを実行したときの、スイープ数ごとの受理率を、いろいろなQUBOについて記憶しておく。そして、実績データ選択部112は、記憶しているデータのうち、今回のアニーリングにおけるQUBOおよび温度スケジュールと類似しているQUBOおよび温度スケジュールでのアニーリングのデータを選択する。
【0072】
実績データ選択部112は、選択したデータを曲線近似して、過去のアニーリングにおけるスイープ数と受理率との関係を示す線を取得する。この場合の近似方法(補間方法)は、特定の方法に限定されない。例えば、実績データ選択部112が、
図4および
図5の例のように、プロットされた点を直線で結ぶようにしてもよい。あるいは、実績データ選択部112が、2区間移動平均など移動平均の手法を用いて、プロットされた点の近似曲線を取得するようにしてもよい。
【0073】
アニーリング時間推定部213は、線L11で例示される、過去のアニーリングにおけるスイープ数と受理率との関係に基づいて、線L12で例示される、今回のアニーリングにおけるスイープ数と受理率との関係を推定する。
例えば、アニーリング時間推定部213が、アニーリング開始から今回のアニーリングについて実行済みのスイープ数まで、過去のアニーリングにおけるスイープ数と受理率との関係と、今回のアニーリングにおけるスイープ数と受理率との関係との差(誤差)がなるべく小さくなるように、過去のアニーリングにおけるスイープ数ごとの受理率に対して定数係数の乗算およびオフセットの加算を行うようにしてもよい。
【0074】
この場合のスイープ数をxで表し、スイープ数ごとの受理率をf(x)で表すと、定数係数aの乗算およびオフセットbの加算をおこなって得られる受理率は、af(x)+bのように表される。
また、この場合の過去のアニーリングにおけるスイープ数と受理率との関係と、今回のアニーリングにおけるスイープ数と受理率との関係との差は、特定のものに限定されない。例えば、過去のアニーリングにおけるスイープ数と受理率との関係を表す線と、今回のアニーリングにおけるスイープ数と受理率との関係を表す線との間の領域の面積を、これらの差として用いるようにしてもよい。
【0075】
アニーリング時間推定部213は、推定した今回のアニーリングにおけるスイープ数と受理率との関係に基づいて、平均受理率を算出する。例えば、アニーリング時間推定部213が、今回のアニーリングにおけるスイープ数ごとの受理率の推定値の、1回目のスイープから入力スイープ数までの合計を、入力スイープ数で除算して、平均受理率を算出するようにしてもよい。
図8の例の場合、線L12で例示される、今回のアニーリングにおけるスイープ数と受理率との関係を示す線と、横軸との間の領域の面積が、今回のアニーリングにおけるスイープ数ごとの受理率の推定値の合計の例に該当する。この面積を入力スイープ数で除算した値が、今回のアニーリングにおける平均受理率の例に該当する。
【0076】
アニーリング時間推定部213は、算出した平均受理率に基づいて、今回のアニーリングの実行時間の推定値を算出する。例えば、アニーリング時間推定部213は、上記の式(1)に基づいて、今回のアニーリングの実行時間の推定値を算出する。
【0077】
アニーリング時間推定部213は、式(1)のaccept_rateとして、今回のアニーリングにおける実測値に基づく平均受理率の推定値を用いる。具体的には、アニーリング時間推定部213は、上記のように、過去のアニーリングにおける受理率を、今回のアニーリングにおける実測値に基づいて補正して、今回のアニーリングにおけるスイープ数ごとの受理率の推定値を求める。そして、アニーリング時間推定部213は、今回のアニーリングにおけるスイープ数ごとの受理率の推定値の、スイープ数についての平均を算出して、accept_rate(今回のアニーリングにおける平均受理率の推定値)として用いる。
あるいは、アニーリング時間推定部213が、式(1)に代えて式(2)を用いて、今回のアニーリングの実行時間の推定値を算出するようにしてもよい。
【0078】
図9は、時間推定装置210が行う処理の手順の例を示す図である。
図9のステップS201からS205は、
図6のステップS101からS105と同様である。
ステップS205の後、経過データ取得部214は、シミュレーテッドアニーリングマシン130が、アニーリング開始から1スイープ分のアニーリングを実行したときの実行時間を記録する(ステップS206)。あるいは、シミュレーテッドアニーリングマシン130が実行時間を記録しておき、経過データ取得部214が、シミュレーテッドアニーリングマシン130から実行時間の情報を取得するようにしてもよい。
【0079】
次に、アニーリング時間推定部213は、ステップS206で得られた1スイープ分の実行時間に基づいて、アニーリング時間を推定し直す(ステップS207)。例えば、アニーリング時間推定部213は、式(1)に基づいてアニーリング時間の推定値T_estを算出する。
【0080】
次に、アニーリング時間推定部213は、ステップS203で得られたアニーリング時間推定値と、ステップS207で得られたアニーリング時間推定値とが乖離しているか否かを判定する(ステップS208)。例えば、アニーリング時間推定部213が、ステップS203で得られたアニーリング時間推定値と、ステップS207で得られたアニーリング時間推定値との差の大きさが、ステップS203で得られたアニーリング時間推定値の10%など所定の割合を乗算した時間よりも大きい場合に、アニーリング時間推定値が乖離していると判定するようにしてもよい。
【0081】
アニーリング時間の推定値が乖離していると判定した場合(ステップS208:YES)、アニーリング時間推定部213は、アニーリング時間の推定結果にズレが生じたことをユーザに通知する(ステップS209)。例えば、アニーリング時間推定部213は、アニーリング時間の推定結果にズレが生じた旨のメッセージをユーザ端末120に送信する。そして、ユーザ端末120は、アニーリング時間の推定結果にズレが生じた旨のメッセージを表示する。
【0082】
次に、アニーリング時間推定部213は、ステップS207で得られたアニーリング時間推定値をユーザに通知する(ステップS210)。例えば、アニーリング時間推定部213は、ステップS207で得られたアニーリング時間推定値をユーザ端末120に送信する。そして、ユーザ端末120は、ステップS207で得られたアニーリング時間推定値を表示する。
アニーリング時間推定部213が、ステップS208で、アニーリング時間の推定結果が乖離していると判定した場合のみ、ステップS210でのアニーリング時間推定値の通知を行うようにしてもよい。
【0083】
ステップS211からS217のループでは、時間推定装置210は、シミュレーテッドアニーリングマシン130が一定のスイープ数のアニーリング(予め定められた回数のスイープによる解探索)を実行するごとに、ステップS206からS210における処理と同様に、アニーリング時間の推定およびユーザへの通知を行う。
具体的には、経過データ取得部214は、シミュレーテッドアニーリングマシン130が一定のスイープ数のアニーリングを実行するごとに、その一定のスイープ数のアニーリングの実行時間を記録する(ステップS211)。あるいは、シミュレーテッドアニーリングマシン130が実行時間を記録しておき、経過データ取得部214が、シミュレーテッドアニーリングマシン130から実行時間の情報を取得するようにしてもよい。
【0084】
次に、アニーリング時間推定部213は、ステップS211で得られた一定のスイープ分の実行時間に基づいて、アニーリング時間を推定し直す(ステップS212)。例えば、アニーリング時間推定部213は、式(1)に基づいてアニーリング時間の推定値T_estを算出する。
【0085】
次に、アニーリング時間推定部213は、最新のアニーリング時間推定値と、前回のアニーリング時間推定値が乖離しているか否かを判定する(ステップS213)。最新のアニーリング時間推定値は、直近のステップS212の実行で得られたアニーリング時間推定値である。
また、ステップS213の初回実行では、前回のアニーリング時間推定値は、ステップS207で得られたアニーリング時間推定値である。一方、ステップS213の2回目以降の実行では、前回のアニーリング時間推定値は、直近よりも1つ前のステップS212の実行で得られたアニーリング時間推定値である。
ステップS208の場合と同様、アニーリング時間推定部213が、アニーリング時間推定値の差の大きさが、元のアニーリング時間に所定の割合を乗算した時間よりも大きい場合に、アニーリング時間推定値が乖離していると判定するようにしてもよい。
【0086】
アニーリング時間の推定値が乖離していると判定した場合(ステップS213:YES)、アニーリング時間推定部213は、アニーリング時間の推定結果にズレが生じたことをユーザに通知する(ステップS214)。例えば、アニーリング時間推定部213は、アニーリング時間の推定結果にズレが生じた旨のメッセージをユーザ端末120に送信する。そして、ユーザ端末120は、アニーリング時間の推定結果にズレが生じた旨のメッセージを表示する。
【0087】
次に、アニーリング時間推定部213は、最新のアニーリング時間推定値をユーザに通知する(ステップS215)。例えば、アニーリング時間推定部213は、最新のアニーリング時間推定値をユーザ端末120に送信する。そして、ユーザ端末120は、最新のアニーリング時間推定値を表示する。
アニーリング時間推定部213が、ステップS213で、アニーリング時間の推定結果が乖離していないと判定した場合も、最新のアニーリング時間推定値の通知を行うようにしてもよい。
【0088】
次に、アニーリング時間推定部213は、アニーリング終了までの計算のうち、現在までの計算の進捗率をユーザに通知する(ステップS216)。例えば、アニーリング時間推定部213は、アニーリング開始からの現在までの経過時間を最新のアニーリング時間推定値で除算した割合を、進捗率として算出する。そして、アニーリング時間推定部213は、算出した進捗率をユーザ端末120に送信する。ユーザ端末120は、アニーリング時間推定部213が算出した進捗率を表示する。
【0089】
次に、アニーリング時間推定部213は、アニーリングの終了条件が成立したか否かを判定する(ステップS217)。ここでのアニーリングの終了条件は、特定の条件に限定されず、アニーリング時間が変化し得るいろいろな条件とすることができる。例えば、ここでのアニーリングの終了時間は、スイープ1回当たりの受理率が所定の閾値以下である、という条件であってもよい。あるいは、ここでのアニーリングの終了条件は、予め設定されていたスイープ数分の解探索が行われた、という条件であってもよい。
また、シミュレーテッドアニーリングマシン130がアニーリングの終了条件の成否を判定する場合、ステップS217でのアニーリングの終了条件は、アニーリングが終了した旨の通知をシミュレーテッドアニーリングマシン130から受信した、という条件であってもよい。
【0090】
アニーリングの終了条件が成立していないとアニーリング時間推定部213が判定した場合(ステップS217:NO)、処理がステップS211へ戻る。
一方、アニーリングの終了条件が成立しているとアニーリング時間推定部213が判定した場合(ステップS217:YES)、時間推定装置210は、
図9の処理を終了する。このとき、時間推定装置210が、シミュレーテッドアニーリングマシン130に対して、アニーリングを終了するように指示するようにしてもよい。
【0091】
一方、ステップS208で、アニーリング時間推定値が乖離していないとアニーリング時間推定部213が判定した場合(ステップS208:NO)、処理がステップS210へ進む。
一方、ステップS213で、アニーリング時間推定値が乖離していないとアニーリング時間推定部213が判定した場合(ステップS213:NO)、処理がステップS216へ進む。
【0092】
以上のように、アニーリング時間推定部213は、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率に基づいてアニーリング時間の推定値を更新する。
ここで、フリップが受理されたときの方が、フリップが受理されなかったときよりも、エネルギーの計算量(評価関数の計算量)が多いなど、1スイープ分の実行時間が長いことが考えられる。時間推定装置210によれば、受理率に基づいてアニーリング時間の推定値を更新することで、フリップが受理されたときと受理されなかったときとの計算量の違いをアニーリング時間の推定に反映させることができる。時間推定装置210によれば、この点で、アニーリング時間を比較的高精度に推定できると期待される。
【0093】
<第3実施形態>
アニーリング時間が予め定められている場合、すなわち、アニーリングの打ち切り時間が決まっている場合、最適化計算システムが、アニーリング時間内で解探索をなるべく高精度に行えるように、アニーリングのパラメータを設定するようにしてもよい。第3実施形態では、この点について説明する。
【0094】
図10は、第3実施形態に係る最適化計算システムの構成の例を示す図である。
図10に示す構成で、最適化計算システム3は、温度スケジュール推定装置310と、ユーザ端末120と、シミュレーテッドアニーリングマシン130とを備える。温度スケジュール推定装置310は、入力データ取得部111と、実績データ選択部112と、温度スケジュール推定部313とを備える。
【0095】
図10の各部のうち、
図1の各部に対応して同様の機能を有する部分には同一の符号(111、112、120、130)を付し、ここでは詳細な説明を省略する。
温度スケジュール推定装置310は、アニーリング時間内での解探索をなるべく高精度に行うための温度スケジュールを推定する温度スケジュール推定部313を備える点で、アニーリング時間推定部113を備える時間推定装置110と異なる。それ以外の点では、温度スケジュール推定装置310は、時間推定装置110と同様である。
【0096】
第3実施形態では、入力データ取得部111は、ユーザ端末120からの、アニーリング実行予定のQUBO行列、打ち切りのアニーリング時間、その他のパラメータの入力を受け付ける。
温度スケジュール推定部313は、入力データ取得部111が入力を受け付けたデータと、過去のアニーリング実行時の履歴データとに基づいて、設定されたアニーリング時間でのアニーリングのための温度スケジュールを推定する。温度スケジュール推定部313は、温度スケジュール推定手段の例に該当する。
【0097】
温度スケジュール推定部313が、推定した温度スケジュールをシミュレーテッドアニーリングマシン130によるアニーリングに(自動的に)反映させるようにしてもよい。あるいは、温度スケジュール推定部313が、推定した温度スケジュールをユーザに提示するようにしてもよい。
【0098】
図11は、受理率とアニーリングの打ち切り時間との関係の例を示す図である。
図11のグラフの横軸は、スイープ数を表す。縦軸は、受理率を表す。
T_targetは、受理率が0に収束する時間を表す。ここでいう受理率が0に収束することは、受理率が所定の値以下であることであってもよい。
時間T_targetよりも前は、受理率が減少している。一方、時間T_target以降は、受理率はおおよそ0になっており、ほとんど変化していない。
【0099】
T_timeout11、T_timeout12は、それぞれ、アニーリングの打ち切り時間の例を表す。T_timeout11>T_targetである。したがって、T_timeout11は、受理率が0に収束した後の時間である。一方、T_timeout12<T_targetである。したがって、T_timeout12は、受理率が0に収束する前の時間である。
【0100】
T_timeout11では、受理率が0に収束しており、スイープ数が増加しても、計算モデルの状態はほとんど変化しない。このように、受理率が0に収束した後の時間でアニーリングを打ち切る場合、解探索が十分に行われて良好な解を得られていることが期待される。
【0101】
一方、T_timeout12では、受理率はまだ0に収束しておらず、スイープ数が増加するにつれて、フリップが受理されて計算モデルの状態が変化する。このように、受理率が0に収束する前の時間でアニーリングを打ち切る場合、解探索が十分に行われておらず良好な解を得られていないことが考えられる。
このように、解探索を十分に行う観点から、受理率が0に収束した後に、アニーリングが終了することが好ましい。
【0102】
図12は、アニーリングの打ち切り時間と温度スケジュールとの関係の例を示す図である。
図12のグラフの横軸は、スイープ数を表す。縦軸は、受理率を表す。
T_timeout21、T_timeout22は、それぞれ、アニーリングの打ち切り時間の例を表す。
線L21は、打ち切り時間がT_timeout21に設定されているときの、スイープ数ごとの受理率の例を示す。線L22は、打ち切り時間がT_timeout22に設定されているときの、スイープ数ごとの受理率の例を示す。
【0103】
上述したように、受理率が0に収束した後に、アニーリングが終了することが好ましい。そこで、温度スケジュール推定部313は、設定されている打ち切り時間において受理率が0に収束しているように、温度スケジュールを調整する。
【0104】
例えば、温度スケジュール推定部313が、打ち切り時間までの時間が短いほど温度が低くなるように、温度スケジュールを調整するようにしてもよい。温度が低く設定されているほど、エネルギーがより大きくなるような(すなわち、評価関数による評価がより悪くなるような)フリップが受理され難くなり、エネルギーが減少する速度が速くなることが考えられる。これにより、温度が低く設定されているほど、受理率が0に収束する速度が速くなることが考えられる。
【0105】
図13は、温度スケジュール推定装置310が行う処理の手順の例を示す図である。
図13の処理で、入力データ取得部111は、実行予定のQUBO行列と打ち切りのアニーリング時間及び、その他のアニーリングパラメータ値を、ユーザ端末120から取得する(ステップS301)。
【0106】
次に、実績データ選択部112は、ステップS301で得られたQUBO行列に類似した過去のQUBO行列のアニーリング実行時の、(理想的な)スイープ数と受理率との関係を示すデータを、アニーリングの実績データを蓄積しているデータベースから取得する(ステップS302)。
【0107】
例えば、実績データ選択部112が、データベースが記憶しているアニーリングの実績データのうち、アニーリングに対する評価が所定の評価以上に良い実績データにおける、スイープ数と受理率との関係を示すデータを取得するようにしてもよい。ここでのアニーリングに対する評価は、アニーリングによって得られた解の精度に対する評価であってもよい。
【0108】
次に、温度スケジュール推定部313は、ステップS301で得られデータと、ステップS302で得られたデータとに基づいて、対象問題に対するアニーリングにおいて、打ち切り時間の範囲内で、スイープ数ごとの受理率がちょうど収束するような、温度スケジュールを推定する(ステップS303)。
温度スケジュール推定部313は、ステップS303で推定した温度スケジュールをユーザに通知する(ステップS304)。例えば、温度スケジュール推定部313は、温度スケジュールをユーザ端末120に送信し、ユーザ端末120が、温度スケジュールを表示する。
【0109】
次に、入力データ取得部111が、ステップS303で推定された温度スケジュールを用いたアニーリングの実行開始をシミュレーテッドアニーリングマシン130に指示する(ステップS305)。
ステップS305の後、温度スケジュール推定装置310は、
図13の処理を終了する。
【0110】
以上のように、実績データ選択部112は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
温度スケジュール推定部313は、選択されたデータに基づいて、対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールを推定する。
【0111】
温度スケジュール推定装置310によれば、設定されている打ち切り時間に応じて推定された温度スケジュールを用いてシミュレーテッドアニーリングを実行することができ、シミュレーテッドアニーリングを比較的高精度に実行できることが期待される。
温度スケジュール推定装置310によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0112】
また、実績データ選択部112は、シミュレーテッドアニーリングの計算モデルの類似度に基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
温度スケジュール推定装置310によれば、温度スケジュールの推定に、QUBOなどシミュレーテッドアニーリングの計算モデルのサイズなどの特徴を反映させることができる。温度スケジュール推定装置310によれば、この点で、アニーリング時間を比較的高精度に推定できると期待される。
【0113】
<第4実施形態>
図14は、第4実施形態に係る最適化計算システムの構成の例を示す図である。
図14に示す構成で、最適化計算システム4は、温度スケジュール推定装置410と、ユーザ端末120と、シミュレーテッドアニーリングマシン130とを備える。温度スケジュール推定装置410は、入力データ取得部111と、実績データ選択部112と、温度スケジュール推定部413と、経過データ取得部214とを備える。
【0114】
図14の各部のうち、
図10の各部に対応して同様の機能を有する部分には同一の符号(111、112、120、130)を付し、ここでは詳細な説明を省略する。また、
図14の経過データ取得部214は、
図2の経過データ取得部214と同様であり、ここでは詳細な説明を省略する。
【0115】
温度スケジュール推定装置410は、温度スケジュール推定装置310が備える各部に加えて、経過データ取得部214を備える。
また、温度スケジュール推定装置410では、温度スケジュール推定部413は、
温度スケジュール推定装置310の温度スケジュール推定部313と同様、アニーリング開始前に今回のアニーリングのための温度スケジュールを推定することに加えて、さらに、アニーリングの実行状況に応じて温度スケジュールを更新する。温度スケジュール推定部413は、温度スケジュール推定手段の例に該当する。
それ以外の点では、温度スケジュール推定装置410は、温度スケジュール推定装置310と同様である。
【0116】
図15は、温度スケジュールの変更の例を示す図である。
図15のグラフの横軸はスイープ数を表す。縦軸は、温度を表す。
T_timeout31は、アニーリングの打ち切り時間を表す。
T32は、温度スケジュールが変更されたタイミングを表す。
線L31は、変更前の温度スケジュールを表す。
線L32は、変更後の温度スケジュールを表す。
【0117】
図15の例で、温度スケジュール推定部313は、線L31で示される当初の温度スケジュールでは、設定されている打ち切り時間T_timeout31までに受理率が0に収束しないと判定し、時間T32に、当初の温度スケジュールよりも温度を下げるように、温度スケジュールを変更している。
【0118】
図16は、温度スケジュールの変更による受理率の変化の例を示す図である。
図16は、
図15のように温度スケジュールが変更された場合の、受理率の変化の例を表している。
図16のグラフの横軸はスイープ数を表す。縦軸は、受理率を表す。
【0119】
T_timeout31は、アニーリングの打ち切り時間を表す。
T32は、温度スケジュールが変更されたタイミングを表す。
線L40は、時間T32までの、スイープ数と受理率との関係を表す。
線L41は、当初の温度スケジュールを用いた場合の、スイープ数と受理率との関係を表す。
線L42は、変更後の温度スケジュールを用いた場合の、スイープ数と受理率との関係を表す。
【0120】
図16の例で、線L41で示されるように、当初の温度スケジュールを用いた場合、受理率は、打ち切り時間T_timeout31までに0に収束しない。そこで、上記のように、温度スケジュール推定部313が、温度スケジュールを変更している。この温度スケジュールの変更により、打ち切り時間T_timeout31において、受理率が0に収束するようになっている。
【0121】
図17は、温度スケジュール推定装置410が行う処理の手順の例を示す図である。
図17のステップS401からS405は、
図13のステップS301からS305と同様である。
ステップS405の後、経過データ取得部214は、シミュレーテッドアニーリングマシン130が、アニーリング開始から1秒経過するまでのスイープ数、温度および受理率を記録する(ステップS406)。あるいは、シミュレーテッドアニーリングマシン130がこれらのデータを記録しておき、経過データ取得部214が、シミュレーテッドアニーリングマシン130からデータを取得するようにしてもよい。
【0122】
次に、温度スケジュール推定部413は、ステップS406で得られた1秒分のデータに基づいて、打ち切り時に受理率が0に収束するような温度スケジュールを推定し直す(ステップS407)。
例えば、温度スケジュール推定部413が、過去のデータを用いて学習済みの、温度の変更量と、温度の変更による受理率の変更量との関係を示すモデルを予め記憶しておくようにしてもよい。そして、温度スケジュール推定部413が、ステップS403で得られた温度スケジュールを用いた場合の時間ごとの受理率を、打ち切り時に0に収束さるための、受理率の変更量を算出し、算出した受理率の変更量を得るための、温度の変化量を算出するようにしてもよい。そして、温度スケジュール推定部413が、算出した温度の変化量を温度スケジュールに反映させた、温度スケジュールを算出するようにしてもよい。
【0123】
次に、温度スケジュール推定部413は、ステップS403で得られた温度スケジュールと、ステップS407で得られた温度スケジュールとが乖離しているか否かを判定する(ステップS408)。例えば、温度スケジュール推定部413が、ステップS407で得られた温度スケジュールを用いた場合の打ち切り時の受理率を、ステップS403で得られた温度スケジュールを用いた場合の打ち切り時の受理率で除算した値が、10%など所定の割合以下である場合に、温度スケジュールが乖離していると判定するようにしてもよい。
【0124】
温度スケジュールが乖離していると判定した場合(ステップS408:YES)、温度スケジュール推定部413は、今回のアニーリングのうちこれからアニーリングを実行する部分に用いる温度スケジュールを設定し直す(ステップS409)。
【0125】
ステップS410からS414のループでは、温度スケジュール推定装置410は、シミュレーテッドアニーリングマシン130が一定時間アニーリングを実行するごとに、ステップS406からS409における処理と同様に、温度スケジュールの推定を行う。
具体的には、経過データ取得部214は、シミュレーテッドアニーリングマシン130が一定時間アニーリングを実行するごとに、その一定時間のアニーリングの実行におけるスイープ数、温度および受理率を記録する(ステップS410)。あるいは、シミュレーテッドアニーリングマシン130がこれらのデータを記録しておき、経過データ取得部214が、シミュレーテッドアニーリングマシン130からデータを取得するようにしてもよい。
【0126】
次に、温度スケジュール推定部413は、ステップS410で得られた一定時間分のデータに基づいて、打ち切り時に受理率が0に収束するような温度スケジュールを推定し直す(ステップS411)。
【0127】
次に、温度スケジュール推定部413は、最新の温度スケジュールと、現在の温度スケジュールとが乖離しているか否かを判定する(ステップS412)。最新の温度スケジュールは、直近のステップS411の実行で得られた温度スケジュールである。また、現在の温度スケジュールは、現在(ステップS412の実行時に)設定されている温度スケジュールである。
【0128】
ステップS408の場合と同様、温度スケジュール推定部413が、最新の温度スケジュールを用いた場合の打ち切り時の受理率を、現在の温度スケジュールを用いた場合の打ち切り時の受理率で除算した値が、10%など所定の割合以下である場合に、温度スケジュールが乖離していると判定するようにしてもよい。
【0129】
温度スケジュールが乖離していると判定した場合(ステップS412:YES)、温度スケジュール推定部413は、今回のアニーリングのうちこれからアニーリングを実行する部分に用いる温度スケジュールを設定し直す(ステップS413)。
【0130】
次に、温度スケジュール推定部413は、アニーリングの打ち切り時間が経過したか否かを判定する(ステップS414)。
アニーリングの打ち切り時間が経過していないと温度スケジュール推定部413が判定した場合(ステップS414:NO)、処理がステップS410へ戻る。
一方、アニーリングの打ち切り時間が経過していると温度スケジュール推定部413が判定した場合(ステップS414:YES)、温度スケジュール推定装置410は、
図17の処理を終了する。このとき、温度スケジュール推定装置410が、シミュレーテッドアニーリングマシン130に対して、アニーリングを終了するように指示するようにしてもよい。
【0131】
一方、ステップS408で、温度スケジュールが乖離していないと温度スケジュール推定部413が判定した場合(ステップS408:NO)、処理がステップS410へ進む。
一方、ステップS412で、温度スケジュールが乖離していないと温度スケジュール推定部413が判定した場合(ステップS412:NO)、処理がステップS414へ進む。
【0132】
以上のように、温度スケジュール推定部413は、シミュレーテッドアニーリングの打ち切り時における、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率が所定の値以下となるように、温度スケジュールを更新する。
温度スケジュール推定部413によれば、シミュレーテッドアニーリングの打ち切り時に受理率が0に収束することが期待され、この点で、シミュレーテッドアニーリングを高精度に行えることが期待される。
【0133】
<第5実施形態>
図18は、第5実施形態に係る時間推定装置の構成の例を示す図である。
図18に示す構成で、時間推定装置610は、データ選択部611と、アニーリング時間推定部612とを備える。
【0134】
かかる構成で、データ選択部611は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。アニーリング時間推定部612は、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定する。
データ選択部611は、データ選択手段の例に該当する。アニーリング時間推定部612は、アニーリング時間推定手段の例に該当する。
【0135】
時間推定装置610によれば、シミュレーテッドアニーリングの実行開始前に、アニーリング時間(シミュレーテッドアニーリングに要する時間)を推定することができる。サービスを利用するユーザは、アニーリング時間の推定値を参照して、アニーリングの実行を指示する、アニーリングの実行のためのパラメータの値を変更してアニーリング時間を変化させる、あるいは、アニーリングの依頼を取りやめるなどの対応を行うことができる。
時間推定装置610によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0136】
<第6実施形態>
図19は、第6実施形態に係る温度スケジュール推定装置の構成の例を示す図である。
図19に示す構成で、温度スケジュール推定装置620は、データ選択部621と、温度スケジュール推定部622とを備える。
【0137】
かかる構成で、データ選択部621は、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。温度スケジュール推定部622は、設定されている打ち切り時間内で行うための、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールを推定する。
データ選択部621は、データ選択手段の例に該当する。温度スケジュール推定部622は、温度スケジュール推定手段の例に該当する。
【0138】
温度スケジュール推定装置620によれば、設定されている打ち切り時間に応じて推定された温度スケジュールを用いてシミュレーテッドアニーリングを実行することができ、シミュレーテッドアニーリングを比較的高精度に実行できることが期待される。
温度スケジュール推定装置620によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0139】
<第7実施形態>
図20は、第7実施形態に係る時間推定方法における処理の手順の例を示す図である。
図20に示す時間推定方法は、データを選択すること(ステップS611)と、アニーリング時間を推定すること(ステップS612)とを含む。
【0140】
データを選択すること(ステップS611)では、コンピュータが、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
アニーリング時間を推定すること(ステップS612)では、コンピュータが、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定する。
【0141】
図20に示す時間推定方法によれば、設定されている打ち切り時間に応じて推定された温度スケジュールを用いてシミュレーテッドアニーリングを実行することができ、シミュレーテッドアニーリングを比較的高精度に実行できることが期待される。
図20に示す時間推定方法によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0142】
<第8実施形態>
図21は、第8実施形態に係る温度スケジュール推定方法における処理の手順の例を示す図である。
図21に示す時間推定方法は、データを選択すること(ステップS621)と、温度スケジュールを推定すること(ステップS622)とを含む。
【0143】
データを選択すること(ステップS621)では、コンピュータが、シミュレーテッドアニーリングの実行対象となっている問題である対象問題を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する。
温度スケジュールを推定すること(ステップS622)では、コンピュータが、選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定する。
【0144】
図21に示す温度スケジュール推定方法によれば、設定されている打ち切り時間に応じて推定された温度スケジュールを用いてシミュレーテッドアニーリングを実行することができ、シミュレーテッドアニーリングを比較的高精度に実行できることが期待される。
図21に示す温度スケジュール推定方法によれば、このように、シミュレーテッドアニーリングの実行時間に応じた対応が可能である。
【0145】
図22は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図22に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740と、不揮発性記録媒体750とを備える。
【0146】
上記の時間推定装置110、時間推定装置210、温度スケジュール推定装置310、温度スケジュール推定装置410、時間推定装置610、および、温度スケジュール推定装置620のうち何れか1つ以上またはその一部が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。また、インタフェース740は、不揮発性記録媒体750用のポートを有し、不揮発性記録媒体750からの情報の読出、および、不揮発性記録媒体750への情報の書込を行う。
【0147】
時間推定装置110がコンピュータ700に実装される場合、入力データ取得部111と、実績データ選択部112と、アニーリング時間推定部113との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0148】
また、CPU710は、プログラムに従って、時間推定装置110が処理を行うための記憶領域を主記憶装置720に確保する。時間推定装置110と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。時間推定装置110とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0149】
時間推定装置210がコンピュータ700に実装される場合、入力データ取得部111と、実績データ選択部112と、アニーリング時間推定部213と、経過データ取得部214との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0150】
また、CPU710は、プログラムに従って、時間推定装置210が処理を行うための記憶領域を主記憶装置720に確保する。時間推定装置210と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。時間推定装置210とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0151】
温度スケジュール推定装置310がコンピュータ700に実装される場合、入力データ取得部111と、実績データ選択部112と、温度スケジュール推定部313との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0152】
また、CPU710は、プログラムに従って、温度スケジュール推定装置310が処理を行うための記憶領域を主記憶装置720に確保する。温度スケジュール推定装置310と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。温度スケジュール推定装置310とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0153】
温度スケジュール推定装置410がコンピュータ700に実装される場合、入力データ取得部111と、実績データ選択部112と、温度スケジュール推定部413と、経過データ取得部214との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0154】
また、CPU710は、プログラムに従って、温度スケジュール推定装置410が処理を行うための記憶領域を主記憶装置720に確保する。温度スケジュール推定装置410と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。温度スケジュール推定装置410とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0155】
時間推定装置610がコンピュータ700に実装される場合、データ選択部611と、アニーリング時間推定部612との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0156】
また、CPU710は、プログラムに従って、時間推定装置610が処理を行うための記憶領域を主記憶装置720に確保する。時間推定装置610と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。時間推定装置610とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0157】
温度スケジュール推定装置620がコンピュータ700に実装される場合、データ選択部621と、温度スケジュール推定部622との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0158】
また、CPU710は、プログラムに従って、温度スケジュール推定装置620が処理を行うための記憶領域を主記憶装置720に確保する。温度スケジュール推定装置620と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。温度スケジュール推定装置620とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0159】
上述したプログラムのうち何れか1つ以上が不揮発性記録媒体750に記録されていてもよい。この場合、インタフェース740が不揮発性記録媒体750からプログラムを読み出すようにしてもよい。そして、CPU710が、インタフェース740が読み出したプログラムを直接実行するか、あるいは、主記憶装置720または補助記憶装置730に一旦保存して実行するようにしてもよい。
【0160】
なお、時間推定装置110、時間推定装置210、温度スケジュール推定装置310、温度スケジュール推定装置410、時間推定装置610、および、温度スケジュール推定装置620が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0161】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0162】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0163】
(付記1)
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定するアニーリング時間推定手段と、
を備える時間推定装置。
【0164】
(付記2)
前記データ選択手段は、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールの類似度に基づいて、前記過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する、
付記1に記載の時間推定装置。
【0165】
(付記3)
前記データ選択手段は、シミュレーテッドアニーリングの計算モデルの類似度に基づいて、前記過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する、
付記1または付記2に記載の時間推定装置。
【0166】
(付記4)
前記アニーリング時間推定手段は、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率に基づいてアニーリング時間の推定値を更新する、
付記1から3の何れか一つに記載の時間推定装置。
【0167】
(付記5)
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択するデータ選択手段と、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための、シミュレーテッドアニーリングにおける温度パラメータ値のスケジュールである温度スケジュールを推定する温度スケジュール推定手段と、
を備える温度スケジュール推定装置。
【0168】
(付記6)
前記データ選択手段は、シミュレーテッドアニーリングの計算モデルの類似度に基づいて、前記過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択する、
付記5に記載の温度スケジュール推定装置。
【0169】
(付記7)
前記温度スケジュール推定手段は、シミュレーテッドアニーリングの打ち切り時における、シミュレーテッドアニーリングの計算モデルの変数の値を変化させるフリップの受理率が所定の値以下となるように、温度スケジュールを更新する、
付記5または付記6に記載の温度スケジュール推定装置。
【0170】
(付記8)
コンピュータが、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定する、
ことを含む時間推定方法。
【0171】
(付記9)
コンピュータが、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択し、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定する、
ことを含む温度スケジュール推定方法。
【0172】
(付記10)
コンピュータに、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングの実行時間を推定することと、
を実行させるためのプログラム。
【0173】
(付記11)
コンピュータに、
シミュレーテッドアニーリングの実行対象となっている問題である対象問題のシミュレーテッドアニーリングに関する設定を示すデータに基づいて、過去のシミュレーテッドアニーリングの実行結果を示すデータの何れかを選択することと、
選択されたデータに基づいて、前記対象問題のシミュレーテッドアニーリングを、設定されている打ち切り時間内で行うための温度スケジュールを推定することと、
を実行させるためのプログラム。
【符号の説明】
【0174】
1、2、3、4 最適化計算システム
110、210、610 時間推定装置
111 入力データ取得部
112 実績データ選択部
113、213、612 アニーリング時間推定部
120 ユーザ端末
130 シミュレーテッドアニーリングマシン
214 経過データ取得部
310、410、620 温度スケジュール推定装置
313、413、622 温度スケジュール推定部
611、621 データ選択部