IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7582471シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法
<>
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図1
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図2
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図3
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図4
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図5
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図6
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図7
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図8
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図9
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図10
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図11
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図12
  • 特許-シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法
(51)【国際特許分類】
   G06N 10/60 20220101AFI20241106BHJP
   G06N 99/00 20190101ALI20241106BHJP
【FI】
G06N10/60
G06N99/00 180
【請求項の数】 9
(21)【出願番号】P 2023528924
(86)(22)【出願日】2021-06-18
(86)【国際出願番号】 JP2021023239
(87)【国際公開番号】W WO2022264414
(87)【国際公開日】2022-12-22
【審査請求日】2023-11-02
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【弁理士】
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【弁理士】
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】荒木 拓也
【審査官】新井 則和
(56)【参考文献】
【文献】特開2020-201598(JP,A)
【文献】特開2015-172873(JP,A)
【文献】特表2007-524165(JP,A)
【文献】土居 翼 外2名,シフトスケジューリング問題に対する分解法の検討,第58回 システム制御情報学会 研究発表講演会講演論文集,2014年05月23日,予稿集2014-10024-087
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、前記組合せ最適化問題の解の候補である前記1つ以上の制約を満たす前記組合せ最適化問題の複数の変数の値の組を求める求解手段を備え、
前記求解手段は、
シミュレーテッドアニーリング方式で求解されている前記組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、
選択された変数候補の値を変更した上でSAT を求解することによって前記組合せ最適化問題の解の候補を求める
ことを特徴とするシミュレーテッドアニーリング装置。
【請求項2】
制約情報をSAT に変換する変換手段を備える
請求項1記載のシミュレーテッドアニーリング装置。
【請求項3】
組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、前記組合せ最適化問題の解の候補である前記1つ以上の制約を満たす前記組合せ最適化問題の複数の変数の値の組を求める求解手段を備え、
前記求解手段は、
シミュレーテッドアニーリング方式で求解されている前記組合せ最適化問題の暫定解が求められたときに生成された複数の変数の値の組を示す1つ以上のノードで構成されている探索木において未だ生成されていないノードをSAT を求解することによって探索し、
探索されたノードが示す前記組を解の候補として求める
ことを特徴とするシミュレーテッドアニーリング装置。
【請求項4】
求解手段は、
暫定解の値を変数の初期値として利用し、
求められた解の候補に含まれる変数のうち値が前記初期値から変更された変数をフリップ対象の変数候補に設定する
請求項1から請求項3のうちのいずれか1項に記載のシミュレーテッドアニーリング装置。
【請求項5】
解の候補に含まれるフリップ対象の変数候補のフリップを受理するか否かを判定する判定手段を備える
請求項から請求項のうちのいずれか1項に記載のシミュレーテッドアニーリング装置。
【請求項6】
判定手段は、
フリップを受理すると判定されたフリップ対象の変数候補をフリップさせ、
暫定解を解の候補に更新する
請求項記載のシミュレーテッドアニーリング装置。
【請求項7】
組合せ最適化問題は、ナースシフトスケジューリング問題である
請求項1から請求項のうちのいずれか1項に記載のシミュレーテッドアニーリング装置。
【請求項8】
コンピュータが、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、前記組合せ最適化問題の解の候補である前記1つ以上の制約を満たす前記組合せ最適化問題の複数の変数の値の組を求め、
前記コンピュータが、シミュレーテッドアニーリング方式で求解されている前記組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、
前記コンピュータが、選択された変数候補の値を変更した上でSAT を求解することによって前記組合せ最適化問題の解の候補を求める
ことを特徴とするシミュレーテッドアニーリング方法。
【請求項9】
コンピュータに、
組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、前記組合せ最適化問題の解の候補である前記1つ以上の制約を満たす前記組合せ最適化問題の複数の変数の値の組を求める求解処理を実行させ、
前記求解処理で、
シミュレーテッドアニーリング方式で求解されている前記組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択させ、
選択された変数候補の値を変更した上でSAT を求解することによって前記組合せ最適化問題の解の候補を求めさせる
めのシミュレーテッドアニーリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーテッドアニーリング装置、シミュレーテッドアニーリング方法およびシミュレーテッドアニーリングプログラムに関する。
【背景技術】
【0002】
組合せ最適化問題を量子アニーリング方式で高速に求解可能な量子コンピュータの研究が進められている。量子コンピュータは、組合せ最適化問題をイジングモデルで表し、量子重ね合わせを利用して、組合せ最適化問題の目的関数に相当するエネルギー関数を最小にする状態を探索する。
【0003】
量子コンピュータは、イジングモデルにおけるエネルギー関数を入力として、組合せ最適化問題を解く。なお、組合せ最適化問題の例として、巡回セールスマン問題、ナップサック問題、グラフ分割問題、ナースシフトスケジューリング問題が挙げられる。また、組合せ最適化問題は、他の問題でもよい。
【0004】
イジングモデルは、磁性体のスピンの振る舞いを表す統計力学上のモデルである。イジングモデルでは、個々のスピンの状態は、“1”または“-1”で表される。
【0005】
図9は、部分結合イジングモデルの例を示す説明図である。図9に示すように、イジングモデルは、2つのスピンの状態(“1”または“-1”)のいずれかを示す格子点で構成される。
【0006】
例えば、図9に示す格子点における矢印は、スピンを表している。上向きの矢印は、状態が“1”のスピンを表す。また、下向きの矢印は、状態が“-1”のスピンを表す。
【0007】
図9に示す格子点同士は、相互に作用する。組合せ最適化問題が求解される際、イジングモデルにおけるエネルギー関数が小さくなるようにスピンの向きが変化する。
【0008】
イジングモデルにおけるエネルギー関数は、以下の式(1)のように表される。
【0009】
【数1】
【0010】
式(1)におけるsi,sjは、スピンの状態を表す変数である。また、Jij は、i ,j に応じた定数である。また、hiは、i に応じた定数である。
【0011】
また、個々のスピンの状態を“1”または“0”で表すモデルとして、QUBO(Quadratic Unconstrained Binary Optimization) も知られている。イジングモデルにおけるエネルギー関数と、QUBOにおけるエネルギー関数とは、相互に変換可能である。
【0012】
QUBOにおけるエネルギー関数は、以下の式(2)のように表される。
【0013】
【数2】
【0014】
式(2)におけるxi,xjは、スピンの状態を表す変数である。また、Qij は、i ,j に応じた定数である。
【0015】
現状では、現実世界における組合せ最適化問題を求解可能な程、規模が十分に大きい量子コンピュータは実現されていない。しかし、量子コンピュータの登場を契機として、組合せ最適化技術が応用された研究も進められている。
【0016】
例えば、種々の組合せ最適化問題の解を汎用的に求めるために、現状では、イジングモデルやQUBOにおけるエネルギー関数を入力とするシミュレーテッドアニーリング方式(焼きなまし方式。以下、SA方式とも呼ぶ。)が使用されている。SA方式が使用されると、古典コンピュータであっても組合せ最適化問題の解を求めることができる。
【0017】
求解対象の組合せ最適化問題がイジングモデル形式またはQUBO形式で表されると、SA方式は、様々な組合せ最適化問題に対応できる。なお、イジングモデル形式またはQUBO形式で定式化された組合せ最適化問題は、量子コンピュータと古典コンピュータのいずれでも求解可能である。
【0018】
SA方式は、組合せ最適化問題を近似的に求解する汎用手法である。SA方式は、以下の4つの処理を1つのサイクルとして組合せ最適化問題を求解する。
【0019】
1.スピンを1つ選択する
2.選んだスピンをフリップさせた場合のエネルギーの変化量Δを計算する
3.遷移確率min(exp(-Δ/T),1)で、スピンのフリップを受理する
4.フリップが受理された場合、選んだスピンをフリップさせる
【0020】
具体的には、SA方式は、上記のステップ2で選択されたスピンの向きを“-1”→“1”、または“1”→“-1”に反転させ、スピンをフリップさせた場合のエネルギーの変化量Δを計算する。
【0021】
次いで、SA方式は、計算されたΔが負の場合、上記のステップ3でスピンのフリップを受理する。また、計算されたΔが正の場合、SA方式は、上記のように計算される確率でスピンのフリップを受理する。
【0022】
次いで、SA方式は、フリップが受理された場合、上記のステップ4で選んだスピンをフリップさせる。すなわち、SA方式は、スピン(変数)の向きを1つずつ変えてみながら、エネルギーが小さくなる状態を探索する。なお、T は、温度パラメータである。
【0023】
図10は、SA方式による組合せ最適化問題の求解処理の例を示す説明図である。図10に示す各矩形内の曲線が、エネルギー関数を表す。また、図10に示す各矩形内の黒色の円は、SA方式により得られた解が用いられたときのエネルギーの値の一例である。
【0024】
また、図10に示すグラフは、組合せ最適化問題の求解処理の時間の経過に伴う温度パラメータT の変化を表す。図10に示すグラフは、時間の経過に伴い温度パラメータT が低減することを表す。
【0025】
SA方式は、複数のスピンの向きのランダムな組合せ(解)から求解処理を開始し、近傍の解を評価して遷移していく。温度パラメータT が導入されているため、T が高温の際には、SA方式は、解の評価が悪い方向にも遷移できる。
【0026】
例えば、図10に示す求解処理の初期のように、SA方式は、T が高温であればエネルギー関数における高い山も越えることができる。高い山を越えて解の評価が悪い方向にも遷移することによって、SA方式は、局所最適解を組合せ最適化問題の最終的な解として求めることを回避できる。
【0027】
温度パラメータT が下げられることによって、図10に示す求解処理の中期のように、エネルギー関数において越えられる山が次第に低くなる。すなわち、解の評価が悪い方向への遷移が減る。
【0028】
さらに温度パラメータT が下げられると、SA方式は、エネルギー関数における山を越えられなくなる。最終的に、SA方式は、図10に示す求解処理の後期のように、エネルギー関数において最も深い谷底に高い確率で遷移し、安定する。
【0029】
以下、SA方式で巡回セールスマン問題の解を求める場合を例に、組合せ最適化問題の求解処理を説明する。巡回セールスマン問題は、各都市をどういう順番で回れば最小移動距離で回れるかという問題である。巡回セールスマン問題では、都市数N (N は正の整数)に対して、N2個のスピン(変数)が定義される。また、各スピンは、時刻t に地点k にセールスマンが存在することを示す。
【0030】
図11は、巡回セールスマン問題の対象の都市の例を示す説明図である。図11に示す黒色の円は、都市を表す。また、図11に示す線は、経路を表す。図11に示す例の場合、巡回セールスマン問題は、都市A、都市B、都市C、および都市Dをどういう順番で回れば最小移動距離で回れるかという問題になる。
【0031】
まず、巡回セールスマン問題におけるエネルギーを表す式が生成される。本例では、巡回セールスマン問題をQUBO形式で表す。巡回セールスマン問題におけるエネルギー関数は、重みが大きい制約項が目的関数に加えられることによって生成される。制約項を目的関数に加える理由は、制約条件を最適化対象(エネルギー)に課すためである。
【0032】
巡回セールスマン問題におけるエネルギー関数として、例えば以下に示す式(3)が生成される。
【0033】
【数3】
【0034】
なお、式(3)において、j は、時刻を表す。また、v ,u は、都市を表す。また、xv,jは、時刻j にセールスマンが都市v に存在するか否かを表す変数であり、スピンに該当する。すなわち、xv,j=1は、時刻j にセールスマンが都市v に存在することを表す。また、xv,j=0は、時刻j にセールスマンが都市v に存在しないことを表す。
【0035】
また、式(3)において、Wuv は、都市u と都市v の距離である。Wuv は、都市の組毎に予め定数として定められている。また、αおよびβは、予め定数として定められている。
【0036】
式(3)における右辺の第1項は、セールスマンは同じ都市を1度しか通らない、すなわち2回以上通過することは無いという制約を表す。
【0037】
また、式(3)における右辺の第2項は、セールスマンは同じ時刻に1つの都市にしか存在しないという制約を表す。
【0038】
また、式(3)における右辺の第3項は、セールスマンが通過する都市間の距離の総和を表す。右辺の第3項が、最小化対象の目的関数である。
【0039】
QUBOにおけるエネルギー関数が得られると、SA方式は、エネルギーが最小になるときの各スピンの状態を特定する。エネルギーが最小になるときの各スピンの状態が特定されると、巡回セールスマン問題の最適解が得られる。
【0040】
図12は、巡回セールスマン問題での各スピンの状態の表現例を示す模式図である。図12に示す“1”または“0”が、スピン(変数)に対応する。
【0041】
図12に示すスピンは左から順に、都市A、都市B、都市C、都市Dにそれぞれ対応している。また、図12に示すスピンは上から順に、時刻1、時刻2、時刻3、時刻4にそれぞれ対応している。すなわち、図12は、都市A、都市C、都市B、都市Dの順に回る経路を示す。
【0042】
上記のように、イジングモデルやQUBOにおけるエネルギー関数をSAに適用すれば、種々の組合せ最適化問題の解が汎用的に求められる。しかし、元の組合せ最適化問題がイジングモデル形式やQUBO形式に変換されると、解の探索の範囲である問題空間が増加するという問題がある。
【0043】
例えば、巡回セールスマン問題の本来の問題空間は、都市数がN であればN!である。しかし、巡回セールスマン問題がイジングモデル形式等に変換されると、問題空間は2のN2乗に増加する。
【0044】
また、SA方式は、問題空間における制約を満たさない多くのスピンの組合せのいずれに対しても、エネルギーの変化量Δを計算する。制約項に起因してエネルギーの変化量Δが大きくなると、SA方式は、制約を満たさない組合せを解の候補から外す。
【0045】
上記のαが大きな値に設定されていること等により、制約を満たさない組合せにおいてスピンが1つだけフリップしたときでも、計算されるエネルギーの変化量Δは大きくなる。すなわち、スピンが1つフリップしただけでは制約が満たされずにエネルギーの変化量Δが増加しすぎるという、イジングモデルの制約項に起因する解空間の急峻性により、SA方式が局所解から別の解に遷移することが困難になる。
【0046】
以上の理由により、イジングモデルやQUBOにおける制約項を含むエネルギー関数を用いてSA方式が組合せ最適化問題を求解する場合、得られる解の精度が悪化する、または最適解や準最適解を得るまでに要する計算時間が増加する可能性がある。
【0047】
上記の課題を解決するための求解システムが特許文献1に記載されている。特許文献1に記載されている求解システムは、制約項を満たすようにスピンをフリップさせる。
【0048】
例えば、巡回セールスマン問題の場合、特許文献1に記載されている求解システムは、スピン(変数)の組合せの中で1つのスピンだけ“1”を満たすようにするone-hot 制約を用いる。one-hot 制約を用いる特許文献1に記載されている求解システムは、1つしかない“1”のスピンをフリップさせる場合、同時に他の“0”のスピンもフリップさせる。
【0049】
また、非特許文献1には、制約をSAT(Boolean Satisfiability Testing) に変換する方法が記載されている。
【先行技術文献】
【特許文献】
【0050】
【文献】国際公開第2021/059338号
【非特許文献】
【0051】
【文献】Niklas Een and Niklas Sorensson, ”Translating Pseudo-Boolean Constraints into SAT,” Journal on Satisfiability, Boolean Modeling and Computation, 2(1-4), 1-26, 2006.
【発明の概要】
【発明が解決しようとする課題】
【0052】
しかし、特許文献1に記載されている求解システムは、組合せ最適化問題に複数の制約が課せられている場合、全ての制約が満たされるようにスピンをフリップさせることには対応していない。
【0053】
図13は、巡回セールスマン問題での各スピンの状態の他の表現例を示す模式図である。例えば、特許文献1に記載されている求解システムが、図13の左に示す各スピンの状態における、円で囲まれた変数xC,1=0をフリップさせるとする。
【0054】
変数xC,1が“0”から“1”にフリップすると、特許文献1に記載されている求解システムは、変数xC,1が直接関連するone-hot 制約を満たすように他の変数をフリップさせる。具体的には、特許文献1に記載されている求解システムは、図13の右に示す各スピンの状態のように、円で囲まれた変数xA,1を“1”から“0”に、円で囲まれた変数xC,2を“1”から“0”にそれぞれフリップさせる。
【0055】
しかし、図13の右に示す各スピンの状態のように、変数xA,1と変数xC,2がフリップすると、破線で囲まれた時刻2に関する変数、および都市Aに関する変数が全て“0”になる。すなわち、時刻2に関するone-hot 制約と、都市Aに関するone-hot 制約がそれぞれ満たされなくなる。
【0056】
以上のように、特許文献1に記載されている求解システムにとって、フリップさせようとする変数が直接関連する制約が満たされるように他の変数をフリップさせることは容易である。しかし、特許文献1に記載されている求解システムにとって、フリップさせようとする変数が直接関連しない他の制約も満たされるように他の変数をフリップさせることは困難である。また、非特許文献1にも、組合せ最適化問題に複数の制約が課せられている場合、全ての制約が満たされるようにスピンをフリップさせることは記載されていない。
【0057】
そこで、本発明は、組合せ最適化問題に課せられた複数の制約を全て満たす解の候補を容易に求めることができるシミュレーテッドアニーリング装置、シミュレーテッドアニーリング方法およびシミュレーテッドアニーリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【0058】
本発明によるシミュレーテッドアニーリング装置は、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、組合せ最適化問題の解の候補である1つ以上の制約を満たす組合せ最適化問題の複数の変数の値の組を求める求解手段を備え、求解手段は、シミュレーテッドアニーリング方式で求解されている組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、選択された変数候補の値を変更した上でSAT を求解することによって組合せ最適化問題の解の候補を求めることを特徴とする。
【0059】
本発明によるシミュレーテッドアニーリング方法は、コンピュータが、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、組合せ最適化問題の解の候補である1つ以上の制約を満たす組合せ最適化問題の複数の変数の値の組を求め、コンピュータが、シミュレーテッドアニーリング方式で求解されている組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、コンピュータが、選択された変数候補の値を変更した上でSAT を求解することによって前記組合せ最適化問題の解の候補を求めることを特徴とする。
【0060】
本発明によるシミュレーテッドアニーリングプログラムは、コンピュータに、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF(Conjunctive Normal Form)の形式で表されたSAT(Boolean Satisfiability Testing) を求解することによって、組合せ最適化問題の解の候補である1つ以上の制約を満たす組合せ最適化問題の複数の変数の値の組を求める求解処理を実行させ、求解処理で、シミュレーテッドアニーリング方式で求解されている組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択させ、選択された変数候補の値を変更した上でSAT を求解することによって組合せ最適化問題の解の候補を求めさせることを特徴とする。
【発明の効果】
【0061】
本発明によれば、組合せ最適化問題に課せられた複数の制約を全て満たす解の候補を容易に求めることができる。
【図面の簡単な説明】
【0062】
図1】本発明の実施形態のシミュレーテッドアニーリング装置の構成例を示すブロック図である。
図2】SAT 求解部112がSAT を求解する処理の例を示す説明図である。
図3】組合せ最適化問題の求解処理においてSAT 求解部112が解の候補を探索する例を示す説明図である。
図4】組合せ最適化問題の求解処理においてSAT 求解部112が解の候補を探索する他の例を示す説明図である。
図5】本実施形態のシミュレーテッドアニーリング装置100による組合せ最適化問題求解処理の動作を示すフローチャートである。
図6】本実施形態のシミュレーテッドアニーリング装置100による他の組合せ最適化問題求解処理の動作を示すフローチャートである。
図7】本発明によるシミュレーテッドアニーリング装置のハードウェア構成例を示す説明図である。
図8】本発明によるシミュレーテッドアニーリング装置の概要を示すブロック図である。
図9】部分結合イジングモデルの例を示す説明図である。
図10】SA方式による組合せ最適化問題の求解処理の例を示す説明図である。
図11】巡回セールスマン問題の対象の都市の例を示す説明図である。
図12】巡回セールスマン問題での各スピンの状態の表現例を示す模式図である。
図13】巡回セールスマン問題での各スピンの状態の他の表現例を示す模式図である。
【発明を実施するための形態】
【0063】
[構成の説明]
以下、本発明の実施形態を図面を参照して説明する。図1は、本発明の実施形態のシミュレーテッドアニーリング装置の構成例を示すブロック図である。
【0064】
図1に示すように、本実施形態のシミュレーテッドアニーリング装置100は、近傍解生成部110と、エネルギー計算部120と、遷移判定部130と、温度制御部140とを備える。
【0065】
また、図1に示すように、本実施形態の近傍解生成部110は、制約情報変換部111と、SAT 求解部112とを含む。
【0066】
本実施形態のシミュレーテッドアニーリング装置100は、SAT ソルバを用いて、組合せ最適化問題に課せられた全ての制約を満たすスピン(変数)の組合せを探索することを特徴とする。
【0067】
SAT は、与えられた論理式を真にする値が存在するか否かを判定する問題である。また、SAT ソルバは、SAT を求解するシステムである。
【0068】
また、SAT は、CNF(Conjunctive Normal Form)の形式で与えられる。CNF の形式で与えられたSAT は、例えば以下の式(4)のように記載される。
【0069】
【数4】
【0070】
なお、式(4)におけるxiは、trueまたはfalse のいずれかを表す変数である。また、式(4)における“∨”はORを、“∧”はAND を、“¬”はNOT をそれぞれ意味する。また、式(4)における(x1∨¬x2)等を節(clause)と呼ぶ。
【0071】
すなわち、CNF の形式で与えられたSAT では、各変数がORで結合された節同士が、AND で結合されている。SAT ソルバは、CNF の形式で与えられたSAT を満たすxiを返す。また、SAT を充足する変数が無い場合、SAT ソルバは、充足不能である旨を返す。
【0072】
本実施形態のシミュレーテッドアニーリング装置100は、xiをQUBOにおける変数、CNF の形式で与えられたSAT を組合せ最適化問題に課せられた制約とそれぞれみなすことによって、SAT ソルバで制約を満たす変数の値の組を生成する。以下、本実施形態のシミュレーテッドアニーリング装置100の各構成要素の機能を説明する。
【0073】
近傍解生成部110の制約情報変換部111は、求解対象の組合せ最適化問題に課せられた制約を示す制約情報を、CNF の形式で表されたSAT に変換する機能を有する。制約情報変換部111には、制約情報が入力される。
【0074】
one-hot 制約等をCNF で表現する方法は、例えば非特許文献1に記載されている。非特許文献1では、例えば一般化された制約である以下の式(5)が変換の対象とされている。
【0075】
【数5】
【0076】
式(5)における“wi”が“1”、“≧k ”が“=1”にそれぞれ変換されることによって、式(5)に示す制約がone-hot 制約に変換される。
【0077】
制約情報変換部111は、生成されたCNF の形式で表されたSAT をSAT 求解部112に入力する。
【0078】
なお、one-hot 制約以外の制約が変換されたCNF の形式で表されたSAT は、外部から直接SAT 求解部112に入力されてもよい。CNF の形式で表されたSAT が外部から直接SAT 求解部112に入力される場合、制約情報変換部111は、近傍解生成部110に設けられていなくてもよい。
【0079】
SAT 求解部112は、入力されたCNF の形式で表されたSAT を求解する機能を有する。すなわち、SAT 求解部112は、SAT ソルバに相当する構成要素である。SAT 求解部112は、求解することによって得られた組合せ最適化問題の解の候補をエネルギー計算部120に入力する。
【0080】
エネルギー計算部120は、上記のステップ2の処理である、入力された解の候補を基にエネルギーの変化量Δを計算する機能を有する。エネルギー計算部120は、例えば式(3)に示すようなエネルギー関数を扱う。
【0081】
なお、エネルギー計算部120が扱うエネルギー関数には、制約項が含まれていなくてもよい。その理由は、エネルギー計算部120に入力される解の候補が必ず制約を満たすため、解の候補が代入されるとエネルギー関数における制約項は0になるためである。エネルギー計算部120は、計算されたエネルギーの変化量Δを遷移判定部130に入力する。
【0082】
遷移判定部130は、上記のステップ3の処理である、入力されたエネルギーの変化量Δを用いて解の候補におけるスピンのフリップを受理するか否かを判定する機能を有する。フリップが受理された場合、遷移判定部130は、上記のステップ3の処理として、解の候補におけるスピンをフリップさせる。
【0083】
温度制御部140は、温度パラメータT を制御する機能を有する。図10に示すように、温度制御部140は、求解処理の時間の経過に伴い温度パラメータT を減少させる。
【0084】
一般的に、SAT ソルバは、SAT の解を1つ発見した段階で処理を終了する。しかし、SAでは、現在の変数の組合せから変数が1つフリップした後で、可能な限り他の変数が変更されないまま制約を満たす組合せを得ることが求められる。
【0085】
以下、上記の目的を実現するための本実施形態のSAT 求解部112の具体的な動作を説明する。本実施形態のSAT 求解部112は、DPLL(Davis-Putnam-Logemann-Loveland)と呼ばれるアルゴリズムに従って動作する。
【0086】
DPLLに従うSAT 求解部112は、CNF の形式で表されたSAT において、確定しているxiを探す。もし確定しているxiが無ければ、SAT 求解部112は、xiの中から変数を1つ選び、選ばれたxiをtrueまたはfalse に設定する。
【0087】
次いで、SAT 求解部112は、確定したxiを、CNF の形式で表されたSAT に代入する。確定したxiが代入されると、新たに確定するxiが生じる。
【0088】
例えば、節(x1∨x2∨x3)の場合、x1とx2がfalse であれば、節自体がtrueでなければならないため、x3はtrueに確定する。このような新たに変数を確定させる操作を、単位伝搬(unit propagation)と呼ぶ。SAT 求解部112は、単位伝搬を繰り返すことによって、変数の組合せを求める。
【0089】
もし¬xiとxiの両方が真でなければならない等の矛盾が発生したら、先ほど選ばれた変数のtrueまたはfalse への設定が間違っていたことになる。よって、矛盾が発生したら、SAT 求解部112は、先に設定された変数までバックトラックし、変数の値を変える。
【0090】
なお、SAT ソルバの高速化手法として他の手法も知られている。しかし、いずれの手法もDPLLが拡張された手法である。他の手法の基本的な動作は、DPLLと同じである。
【0091】
上記のアルゴリズムに従ってSAT 求解部112がSAT を求解する処理の例を、図2を参照して説明する。図2は、SAT 求解部112がSAT を求解する処理の例を示す説明図である。
【0092】
図2に示す例では、SAT 求解部112は、式(4)に示すSAT を求解する。なお、図2に示す(1)、(2)、・・・は、処理の段階を表す。また、図2に示す円は、各段階での変数の組合せの状態を表す。
【0093】
また、図2に示す直線の矢印は、変数の設定と状態の変化を表す。また、図2に示す{xi,・・・}は、確定した変数の組合せを表す。また、図2に示すφは、空集合である初期状態を表す。なお、図2に示す各表記の意味は、図3、4においても同様である。
【0094】
最初の段階(1)で、SAT 求解部112は、x1をfalse に設定する。x1がfalse に設定されると、節(x1∨¬x2)により、x2がfalse に確定する。よって、段階(1)の後、確定した変数の組合せは{¬x1,¬x2}になる。
【0095】
次の段階(2)で、SAT 求解部112は、x3をfalse に設定する。x3がfalse に設定されると、節(x1∨x3∨¬x4)により、x4がfalse に確定する。しかし、節(x3∨x4)によれば、x4がtrueに確定する。
【0096】
上記のようにx4に関して矛盾が発生したため、SAT 求解部112は、x3の設定が間違っていたと判断し、1つ前の状態までバックトラックする。次いで、段階(3)で、SAT 求解部112は、x3をtrueに設定し直す。
【0097】
x3がtrueに設定されると、節(¬x3∨¬x5)により、x5がfalse に確定する。しかし、節(¬x3∨x5)によれば、x5がtrueに確定する。
【0098】
上記のようにx5に関して矛盾が発生したため、SAT 求解部112は、x1の設定が間違っていたと判断し、2つ前の状態までバックトラックする。次いで、段階(4)で、SAT 求解部112は、x1をtrueに設定し直す。
【0099】
x1がtrueに設定されても、確定する変数は無い。よって、段階(4)の後、確定した変数の組合せは{x1}になる。
【0100】
次いで、段階(5)で、SAT 求解部112は、x3をfalse に設定する。x3がfalse に設定されると、節(x3∨x4)により、x4がtrueに確定する。よって、段階(5)の後、確定した変数の組合せは{x1,¬x3,x4}になる。
【0101】
次いで、段階(6)で、SAT 求解部112は、x2をfalse に設定する。x2がfalse に設定されても、確定する変数は無い。よって、段階(6)の後、確定した変数の組合せは{x1,¬x2,¬x3,x4}になる。
【0102】
次いで、段階(7)で、SAT 求解部112は、x5をfalse に設定する。x5がfalse に設定されると、全ての節が充足される。
【0103】
よって、段階(7)の後、変数の組合せが{x1,¬x2,¬x3,x4,¬x5}で確定するため、SAT 求解部112は、SAT を求解する処理を終了する。SAT を求解する処理は、図2に示すように、深さ優先探索処理になる。
【0104】
上述したように、SAでは、現在の変数の組合せから変数が1つフリップした後で、可能な限り他の変数が変更されないまま制約を満たす組合せ(解の候補)を得ることが求められる。なお、現在の変数の組合せは、図2に示す解の候補{x1,¬x2,¬x3,x4,¬x5}や、SA方式で求解されている組合せ最適化問題の暫定解である。
【0105】
よって、本実施形態のシミュレーテッドアニーリング装置100が組合せ最適化問題を求解する際、DPLLに従って変数の値を設定するSAT 求解部112は、可能な限り現在の変数の値を用いる。
【0106】
可能な限り現在の変数の値を用いる方法には、「1.フリップ対象の変数候補を最初に設定した上で解き直す方法」と、「2.前回生成された探索木上で強制的にバックトラックする方法」の2つの方法がある。以下、各方法をそれぞれ説明する。
【0107】
図3は、組合せ最適化問題の求解処理においてSAT 求解部112が解の候補を探索する例を示す説明図である。図3に示す例では、SAT 求解部112は、「1.フリップ対象の変数候補を最初に設定した上で解き直す方法」に従って解の候補を探索する。
【0108】
図3に示す例では、SAT 求解部112は、図2に示す解の候補{x1,¬x2,¬x3,x4,¬x5}に基づいてSAT を解き直す。なお、図3に示す例でも、SAT 求解部112は、式(4)に示すSAT を求解する。
【0109】
図3に示す例では、SAT 求解部112は、最初にx2をフリップ対象の変数候補に設定する。よって、段階(8)で、SAT 求解部112は、x2をtrueに設定する。
【0110】
x2がtrueに設定されると、節(x1∨¬x2)により、x1がtrueに確定する。よって、段階(8)の後、確定した変数の組合せは{x1,x2}になる。
【0111】
次の段階(9)で、SAT 求解部112は、前回の解の候補でfalse だったx3をfalse に設定する。x3がfalse に設定されると、節(x3∨x4)により、x4がtrueに確定する。よって、段階(9)の後、確定した変数の組合せは{x1,x2,¬x3,x4}になる。
【0112】
次の段階(10)で、SAT 求解部112は、前回の解の候補でfalse だったx5をfalse に設定する。x5がfalse に設定されると、全ての節が充足される。
【0113】
よって、段階(10)の後、変数の組合せが{x1,x2,¬x3,x4,¬x5}で確定するため、SAT 求解部112は、SAT を求解する処理を終了する。
【0114】
なお、図3に示す例には記載されていないが、最初にフリップ対象の変数候補の値が変更されたとき、巡回セールスマン問題等で、フリップ対象の変数候補以外の変数の値も制約を満たすために変更される可能性がある。
【0115】
また、フリップ後の変数の値では制約が充足されなければ、バックトラック後に変数の値が変更される。図3に示す例であれば、x1がフリップ対象の変数候補に設定されても、制約が充足されない。
【0116】
具体的には、x1がフリップ対象の変数候補に設定された場合、すなわちx1がfalse に設定された場合、解の候補が得られないため、SAT 求解部112は、DPLLに従ってx1をtrueに設定する。最終的に、SAT 求解部112は、図2に示す解の候補と同じ解の候補を得る。
【0117】
図4は、組合せ最適化問題の求解処理においてSAT 求解部112が解の候補を探索する他の例を示す説明図である。図4に示す例では、SAT 求解部112は、「2.前回生成された探索木上で強制的にバックトラックする方法」に従って解の候補を探索する。
【0118】
図4に示す例では、SAT 求解部112は、図2に示す解の候補{x1,¬x2,¬x3,x4,¬x5}が得られた状態から強制的にバックトラックし、別の選択肢を探索する。なお、図4に示す例でも、SAT 求解部112は、式(4)に示すSAT を求解する。
【0119】
図4に示す探索木は、組合せ最適化問題の解の候補が求められたときに生成された、複数の変数の値の組を示す1つ以上のノードで構成されている。なお、SA方式で求解されている組合せ最適化問題の暫定解を基にSAT 求解部112が解の候補を探索する場合であっても、同様に生成された探索木が使用される。
【0120】
図4に示す例では、SAT 求解部112は、最初に解の候補が得られた状態aから、変数x5が設定される状態bまでバックトラックする。状態aから状態bまでバックトラックする場合のバックトラック幅は「1」である。
【0121】
次いで、SAT 求解部112は、x5をtrueに設定する。x5がtrueに設定されると、全ての節が充足される。よって、状態cにおいて変数の組合せが{x1,¬x2,¬x3,x4,x5}で確定するため、SAT 求解部112は、SAT を求解する処理を終了する。
【0122】
他の解の候補を得るためには、SAT 求解部112は、探索木をさらにバックトラックする。例えば、SAT 求解部112は、最初に解の候補が得られた状態aから変数x2が設定される状態dまでバックトラックする。状態aから状態dまでバックトラックする場合のバックトラック幅は「2」である。
【0123】
すなわち、図4に示す例で、SAT 求解部112は、探索木において未だ生成されていないノードを、暫定解を示すノードを起点にSAT を求解することによって探索する。SAT 求解部112は、探索されたノードが示す複数の変数の値の組を解の候補として求める。
【0124】
ただし、探索木を遡りすぎると、SAT の求解に掛かるコストが高くなる。よって、探索木を遡りすぎる場合、SAT 求解部112は、再度SAT を解き直し、探索木を作り直す。例えば、SAT 求解部112は、変数の選択の順番をランダムに変更することによって、生成される探索木の形状を変更する。探索木の形状が変更されると、バックトラック後に値が変更される変数が変わる。
【0125】
本実施形態のシミュレーテッドアニーリング装置100は、数独(登録商標)やナースシフトスケジューリング問題等の、課せられた複数の制約を全て満たすことが難しい問題を求解する際に特に有効であることが確認された。また、「1.フリップ対象の変数候補を最初に設定した上で解き直す方法」に比べて、「2.前回生成された探索木上で強制的にバックトラックする方法」の方が、組合せ最適化問題を10倍程度高速に求解できることも確認された。
【0126】
以上のように、本実施形態のSAT 求解部112は、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF の形式で表されたSAT を求解することによって、組合せ最適化問題の解の候補である1つ以上の制約を満たす組合せ最適化問題の複数の変数の値の組を求める。また、制約情報変換部111は、制約情報をSAT に変換する。
【0127】
例えば、シミュレーテッドアニーリング装置100の求解対象の組合せ最適化問題は、ナースシフトスケジューリング問題である。
【0128】
[動作の説明]
以下、本実施形態のシミュレーテッドアニーリング装置100の動作を図5~6を参照して説明する。
【0129】
図5は、本実施形態のシミュレーテッドアニーリング装置100による組合せ最適化問題求解処理の動作を示すフローチャートである。図5は、SAT 求解部112が「1.フリップ対象の変数候補を最初に設定した上で解き直す方法」を採用した場合の組合せ最適化問題求解処理を示す。
【0130】
最初に、近傍解生成部110の制約情報変換部111に、求解対象の組合せ最適化問題の制約情報が入力される。制約情報変換部111は、入力された制約情報を、CNF の形式で表されたSAT に変換する(ステップS101)。制約情報変換部111は、生成されたSAT をSAT 求解部112に入力する。
【0131】
次いで、SAT 求解部112に、生成されたSAT の初期解が入力される。SAT の初期解は、例えばユーザが指定した値(trueまたはfalse )、またはランダムに生成された値の組である。
【0132】
SAT 求解部112は、入力された初期解の値を初期値として選ぶようにしながら入力されたSAT を求解することによって、制約を満たす変数の値の組を生成する(ステップS102)。例えば、図2に示す処理が、ステップS102の処理である。
【0133】
なお、SAT 求解部112は、制約情報変換部111以外の外部から入力されたSAT を求解してもよい。SAT 求解部112は、生成された変数の値の組をエネルギー計算部120に入力する。
【0134】
次いで、エネルギー計算部120は、入力された変数の値の組を基にエネルギーを計算する(ステップS103)。
【0135】
次いで、SAT 求解部112は、暫定解に含まれる変数の中から、フリップ対象の変数候補を1つ選択する(ステップS104)。なお、最初の繰り返し処理では、暫定解は、ステップS102で生成された変数の値の組である。
【0136】
次いで、SAT 求解部112は、選択された変数候補の値を最初に設定する。次いで、SAT 求解部112は、暫定解の値を初期値として選ぶようにしながら入力されたSAT を求解する(ステップS105)。
【0137】
次いで、SAT 求解部112は、暫定解とステップS105で求められた解の候補とで値が異なる変数を、フリップ対象の変数候補とする(ステップS106)。次いで、SAT 求解部112は、求められたフリップ対象の変数候補群を含む解の候補をエネルギー計算部120に入力する。
【0138】
次いで、エネルギー計算部120は、入力された変数候補群をフリップさせたときのエネルギーの変化量を計算する(ステップS107)。エネルギー計算部120は、計算されたエネルギーの変化量と解の候補を遷移判定部130に入力する。
【0139】
次いで、遷移判定部130は、入力されたエネルギーの変化量と温度パラメータとを基に、遷移確率を計算する(ステップS108)。
【0140】
次いで、遷移判定部130は、計算された遷移確率に基づいて、状態遷移を受理するか否かを判定する(ステップS109)。状態遷移を受理しないと判定した場合(ステップS109における”reject”)、遷移判定部130は、ステップS111に進む。
【0141】
状態遷移を受理すると判定した場合(ステップS109における”accept”)、遷移判定部130は、解の候補に含まれる変数候補群をフリップさせる(ステップS110)。変数候補群がフリップすると、解の候補が現時点での暫定解になる。
【0142】
次いで、温度制御部140は、温度パラメータT を減少させる(ステップS111)。
【0143】
次いで、遷移判定部130は、求解処理が終了条件を満たすか否かを判定する(ステップS112)。終了条件は、例えば、ステップS104~S111の処理が繰り返し実行された回数が所定の回数に達したことである。
【0144】
求解処理が終了条件を満たさない場合(ステップS112におけるNo)、遷移判定部130は、現時点での暫定解をSAT 求解部112に入力する(ステップS113)。SAT 求解部112は、再度ステップS104の処理を実行する。
【0145】
求解処理が終了条件を満たす場合(ステップS112におけるYes )、遷移判定部130は、現時点での暫定解を最適解として出力する(ステップS114)。出力した後、シミュレーテッドアニーリング装置100は、組合せ最適化問題求解処理を終了する。
【0146】
図6は、本実施形態のシミュレーテッドアニーリング装置100による他の組合せ最適化問題求解処理の動作を示すフローチャートである。図6は、SAT 求解部112が「2.前回生成された探索木上で強制的にバックトラックする方法」を採用した場合の組合せ最適化問題求解処理を示す。
【0147】
ステップS201~S203の各処理は、図5に示すステップS101~S103の各処理とそれぞれ同様である。
【0148】
次いで、SAT 求解部112は、暫定解の求解時に生成された探索木上を、暫定解が得られた状態を起点としてバックトラック幅分バックトラックする。なお、最初の繰り返し処理では、暫定解は、ステップS202で生成された変数の値の組である。
【0149】
次いで、SAT 求解部112は、バックトラックした状態で変更可能な変数の値を変更した上で、入力されたSAT を求解する。SAT を求解した後、SAT 求解部112は、バックトラック幅を1つ増やす(ステップS204)。
【0150】
次いで、SAT 求解部112は、暫定解とステップS204で求められた解の候補とで値が異なる変数を、フリップ対象の変数候補とする(ステップS205)。次いで、SAT 求解部112は、求められたフリップ対象の変数候補群を含む解の候補をエネルギー計算部120に入力する。
【0151】
ステップS206~S211の各処理は、図5に示すステップS107~S112の各処理とそれぞれ同様である。
【0152】
求解処理が終了条件を満たさない場合(ステップS211におけるNo)、SAT 求解部112は、現時点でのバックトラック幅が閾値よりも大きいか否かを判定する(ステップS212)。
【0153】
現時点でのバックトラック幅が閾値以下である場合(ステップS212におけるNo)、遷移判定部130は、現時点での暫定解をSAT 求解部112に入力する。SAT 求解部112は、遷移判定部130からの入力を暫定解に設定し(ステップS214)、再度ステップS204の処理を実行する。
【0154】
現時点でのバックトラック幅が閾値よりも大きい場合(ステップS212におけるYes )、SAT 求解部112は、暫定解の値を初期値として選ぶようにしながら、ランダムな変数順で入力されたSAT を再求解する。SAT を再求解した後、SAT 求解部112は、バックトラック幅を“1”に設定する(ステップS213)。
【0155】
次いで、SAT 求解部112は、ステップS213で求められた解の候補を暫定解に設定する(ステップS214)。SAT 求解部112は、再度ステップS204の処理を実行する。
【0156】
求解処理が終了条件を満たす場合(ステップS211におけるYes )、遷移判定部130は、現時点での暫定解を最適解として出力する(ステップS215)。出力した後、シミュレーテッドアニーリング装置100は、組合せ最適化問題求解処理を終了する。
【0157】
以上のように、「1.フリップ対象の変数候補を最初に設定した上で解き直す方法」を採用する場合、SAT 求解部112は、SA方式で求解されている組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、選択された変数候補の値を変更した上でSAT を求解することによって、組合せ最適化問題の解の候補を求める。
【0158】
また、「2.前回生成された探索木上で強制的にバックトラックする方法」を採用する場合、SAT 求解部112は、SA方式で求解されている組合せ最適化問題の暫定解が求められたときに生成された複数の変数の値の組を示す1つ以上のノードで構成されている探索木において未だ生成されていないノードを、暫定解を示すノードを起点にSAT を求解することによって探索し、探索されたノードが示す組を解の候補として求める。
【0159】
いずれの方法を採用するにせよ、SAT 求解部112は、暫定解の値を変数の初期値として利用し、求められた解の候補に含まれる変数のうち値が初期値から変更された変数をフリップ対象の変数候補に設定する。
【0160】
また、遷移判定部130は、解の候補に含まれるフリップ対象の変数候補のフリップを受理するか否かを判定する。遷移判定部130は、フリップを受理すると判定された変数候補をフリップさせ、暫定解を変数候補がフリップした解の候補に更新する。
【0161】
[効果の説明]
本実施形態のシミュレーテッドアニーリング装置100は、求解対象の組合せ最適化問題に課せられた制約を示す制約情報を、CNF の形式で表されたSAT に変換する制約情報変換部111を備える。また、シミュレーテッドアニーリング装置100は、入力されたCNF の形式で表されたSAT を求解するSAT 求解部112を備える。
【0162】
よって、本実施形態のシミュレーテッドアニーリング装置100は、SAT 求解部112がSAT ソルバとして制約を満たす組合せ最適化問題の解の候補を求めることができるため、組合せ最適化問題に課せられた全ての制約を満たしながら解の探索を進めることができる。
【0163】
上記の構成をとることによって、本実施形態のシミュレーテッドアニーリング装置100は、古典コンピュータで実現された場合であっても、特許文献1に記載されている求解システムに比べて、複数の制約が課せられた組合せ最適化問題を容易に求解できる。
【0164】
以下、本実施形態のシミュレーテッドアニーリング装置100のハードウェア構成の具体例を説明する。図7は、本発明によるシミュレーテッドアニーリング装置のハードウェア構成例を示す説明図である。
【0165】
図7に示すシミュレーテッドアニーリング装置100は、CPU(Central Processing Unit )11と、主記憶部12と、通信部13と、補助記憶部14とを備える。また、ユーザが操作するための入力部15や、ユーザに処理結果または処理内容の経過を提示するための出力部16を備える。
【0166】
シミュレーテッドアニーリング装置100は、図7に示すCPU11が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
【0167】
すなわち、CPU11が補助記憶部14に格納されているプログラムを、主記憶部12にロードして実行し、シミュレーテッドアニーリング装置100の動作を制御することによって、各機能がソフトウェアにより実現される。
【0168】
なお、図7に示すシミュレーテッドアニーリング装置100は、CPU11の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図7に示すシミュレーテッドアニーリング装置100は、CPU11とDSPとを併せて備えてもよい。
【0169】
主記憶部12は、データの作業領域やデータの一時退避領域として用いられる。主記憶部12は、例えばRAM(Random Access Memory)である。
【0170】
通信部13は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
【0171】
補助記憶部14は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
【0172】
入力部15は、データや処理命令を入力する機能を有する。入力部15は、例えばキーボードやマウス等の入力デバイスである。
【0173】
出力部16は、データを出力する機能を有する。出力部16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【0174】
また、図7に示すように、シミュレーテッドアニーリング装置100において、各構成要素は、システムバス17に接続されている。
【0175】
シミュレーテッドアニーリング装置100において、補助記憶部14は、近傍解生成部110、エネルギー計算部120、遷移判定部130、および温度制御部140を実現するためのプログラムを記憶している。
【0176】
なお、シミュレーテッドアニーリング装置100は、例えば内部に図1に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
【0177】
また、シミュレーテッドアニーリング装置100は、CPU等の素子を用いるコンピュータ機能を含まないハードウェアにより実現されてもよい。例えば、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0178】
また、シミュレーテッドアニーリング装置100の各構成要素の一部または全部は、演算部と記憶部とを備えた1つまたは複数の情報処理装置で構成されていてもよい。
【0179】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0180】
次に、本発明の概要を説明する。図8は、本発明によるシミュレーテッドアニーリング装置の概要を示すブロック図である。本発明によるシミュレーテッドアニーリング装置20は、組合せ最適化問題に課せられた1つ以上の制約を示す制約情報が変換されたCNF の形式で表されたSAT を求解することによって、組合せ最適化問題の解の候補である1つ以上の制約を満たす組合せ最適化問題の複数の変数の値の組を求める求解手段21(例えば、SAT 求解部112)を備える。
【0181】
そのような構成により、シミュレーテッドアニーリング装置は、組合せ最適化問題に課せられた複数の制約を全て満たす解の候補を容易に求めることができる。
【0182】
また、シミュレーテッドアニーリング装置20は、制約情報をSAT に変換する変換手段(例えば、制約情報変換部111)を備えてもよい。
【0183】
そのような構成により、シミュレーテッドアニーリング装置は、制約情報をSAT に変換できる。
【0184】
また、求解手段21は、シミュレーテッドアニーリング方式で求解されている組合せ最適化問題の暫定解に含まれる変数の中からフリップ対象の変数候補を1つ選択し、選択された変数候補の値を変更した上でSAT を求解することによって組合せ最適化問題の解の候補を求めてもよい。
【0185】
そのような構成により、シミュレーテッドアニーリング装置は、組合せ最適化問題に課せられた複数の制約を全て満たす解の候補を容易に求めることができる。
【0186】
また、求解手段21は、シミュレーテッドアニーリング方式で求解されている組合せ最適化問題の暫定解が求められたときに生成された複数の変数の値の組を示す1つ以上のノードで構成されている探索木において未だ生成されていないノードをSAT を求解することによって探索し、探索されたノードが示す組を解の候補として求めてもよい。
【0187】
そのような構成により、シミュレーテッドアニーリング装置は、より高速に組合せ最適化問題を求解できる。
【0188】
また、求解手段21は、暫定解の値を変数の初期値として利用し、求められた解の候補に含まれる変数のうち値が初期値から変更された変数をフリップ対象の変数候補に設定してもよい。
【0189】
そのような構成により、シミュレーテッドアニーリング装置は、暫定解に近い解の候補を求めることができる。
【0190】
また、シミュレーテッドアニーリング装置20は、解の候補に含まれるフリップ対象の変数候補のフリップを受理するか否かを判定する判定手段(例えば、遷移判定部130)を備えてもよい。また、判定手段は、フリップを受理すると判定されたフリップ対象の変数候補をフリップさせ、暫定解を解の候補に更新してもよい。
【0191】
そのような構成により、シミュレーテッドアニーリング装置は、暫定解に近い新たな解を求めることができる。
【0192】
また、組合せ最適化問題は、ナースシフトスケジューリング問題でもよい。
【0193】
そのような構成により、シミュレーテッドアニーリング装置は、容易にナースシフトスケジューリング問題を求解できる。
【0194】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0195】
11 CPU
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、100 シミュレーテッドアニーリング装置
21 求解手段
110 近傍解生成部
111 制約情報変換部
112 SAT 求解部
120 エネルギー計算部
130 遷移判定部
140 温度制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13