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

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

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

<>
  • 特許-変数割当装置および変数割当方法 図1
  • 特許-変数割当装置および変数割当方法 図2
  • 特許-変数割当装置および変数割当方法 図3
  • 特許-変数割当装置および変数割当方法 図4
  • 特許-変数割当装置および変数割当方法 図5
  • 特許-変数割当装置および変数割当方法 図6
  • 特許-変数割当装置および変数割当方法 図7
  • 特許-変数割当装置および変数割当方法 図8
  • 特許-変数割当装置および変数割当方法 図9
  • 特許-変数割当装置および変数割当方法 図10
  • 特許-変数割当装置および変数割当方法 図11
  • 特許-変数割当装置および変数割当方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】変数割当装置および変数割当方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20241106BHJP
【FI】
G06N99/00 180
【請求項の数】 9
(21)【出願番号】P 2023549197
(86)(22)【出願日】2021-09-21
(86)【国際出願番号】 JP2021034586
(87)【国際公開番号】W WO2023047463
(87)【国際公開日】2023-03-30
【審査請求日】2024-02-02
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【弁理士】
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【弁理士】
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】鈴木 基己
【審査官】今城 朋彬
(56)【参考文献】
【文献】BLOCK, Benjamin ほか,Multi-GPU Accelerated Multi-Spin Monte Carlo Simulations of the 2D Ising Model,[online],arXiv,2010年07月21日,pp.1-12,インターネット:<URL:https://arxiv.org/pdf/1007.3726.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる変数割当装置であって、
制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換する変数割当手段と、
前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する行列変換手段とを備える
ことを特徴とする変数割当装置。
【請求項2】
個々の並列処理手段から、割り当てた変数の値を返された時に、各変数のインデックスを変換前のインデックスに逆変換するインデックス逆変換手段を備える
請求項1に記載の変数割当装置。
【請求項3】
変数の組に定められた制約には、制約の種別により優先度が予め定められ、
前記変数割当手段は、
制約の優先度に従って、制約が定められた変数の組に属する変数をいずれか1つの並列処理手段に割り当てる
請求項1または請求項2に記載の変数割当装置。
【請求項4】
前記変数割当手段は、
制約が定められた変数の組に属する変数を、並列処理手段に定められた割当可能な変数の数の上限値と既に並列処理手段に割り当てられている変数の数との差が最も大きい並列処理手段に割り当てる
請求項1から請求項3のうちのいずれか1項に記載の変数割当装置。
【請求項5】
前記変数割当手段は、
制約が定められた変数の組に属する変数のうち、少なくとも2つの変数が既に異なる並列処理手段に割り当てられている場合に、前記組に属する変数が複数の並列処理手段に割り当てられることを許容する
請求項1から請求項4のうちのいずれか1項に記載の変数割当装置。
【請求項6】
前記変数割当手段は、
制約が定められた変数の組に属する変数のうちの一部の変数が、既に1つの並列処理手段のみに割り当てられている場合、前記並列処理手段に定められた割当可能な変数の数の上限値と既に前記並列処理手段に割り当てられている変数の数との差が、前記組に属する変数のうちの前記一部の変数以外の変数の数以上ならば、前記組に属する変数のうちの前記一部の変数以外の変数を、前記並列処理手段に割り当てる
請求項1から請求項5のうちのいずれか1項に記載の変数割当装置。
【請求項7】
前記変数割当手段は、
制約が定められた変数の組に属する変数のうちの一部の変数が、既に1つの並列処理手段のみに割り当てられている場合、前記並列処理手段に定められた割当可能な変数の数の上限値と既に前記並列処理手段に割り当てられている変数の数との差が、前記組に属する変数のうちの前記一部の変数以外の変数の数よりも小さいならば、前記組に属する変数が複数の並列処理手段に割り当てられることを許容する
請求項1から請求項6のうちのいずれか1項に記載の変数割当装置。
【請求項8】
組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる変数割当方法であって、
コンピュータが、
制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換し、
前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する
ことを特徴とする変数割当方法。
【請求項9】
組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる処理をコンピュータに実行させるための変数割当プログラムであって、
前記コンピュータに、
制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換する変数割当処理、および、
前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する行列変換処理
を実行させるための変数割当プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列に処理を行う複数の装置に対して、組合せ最適化問題の変数を割り当てる変数割当装置、変数割当方法、および、変数割当プログラムに関する。
【背景技術】
【0002】
磁性体の統計力学的モデルの1つとして、1または-1の2値を取る変数とその二次形式で与えられるハミルトニアンによって定式化されるイジングモデルがある。イジングモデルは、磁性体のスピンの振る舞いを記述する。イジングモデルは、多くの組合せ最適化問題の評価関数として応用可能である。例えば、イジングモデルに擬似焼きなまし法を適用することによって、汎用的に組合せ最適化問題を解くことができる。
【0003】
例えば、特許文献1に、イジングモデルを用いて組合せ最適化問題を汎用的に解くアプローチが記載されている。また、非特許文献1に、数分割問題、グラフ分割問題、充足可能性問題、巡回セールスマン問題等を含む多種の組合せ最適化問題をイジングモデルまたはそれと等価なモデルに定式化する具体的な方法が記載されている。
【0004】
ある温度Tにおけるイジングモデルの確率分布は、マルコフ連鎖モンテカルロ法(MCMC)によって計算可能である。マルコフ連鎖モンテカルロ法では、スピンが1つ選択され、スピン状態を変更する際のハミルトニアンの変化量が計算される。さらに、温度に対応したボルツマン重みに従った確率によって状態更新を受理または棄却する力学系によって、温度Tとハミルトニアンに従った確率分布でスピン状態がサンプリングされる。
【0005】
以下、一般的なマルコフ連鎖モンテカルロ法をイジングモデルに適用する場合を例にして説明する。まず、記法と用語を説明する。
【0006】
【数1】
【0007】
式(1)において、sはi番目の変数である。変数には番号が割り当てられている。この番号をインデックスと呼ぶ。添え字のiは、インデックスを表す。変数の数がN個であれば、1≦i≦Nである。イジングモデルでは、変数の値は+1または-1のいずれかである。統計力学や組合せ最適化問題の分野では、各変数をスピンとも呼ぶ。sは、N個の変数を全て要素として持つベクトルである。また、Jijは、i番目の変数とj番目の変数とをつなぐ結合を表す定数である。Jijの値が小さいほど、つながれた2つの変数が同じ値を取りやすい。また、Jijは、評価関数で用いられる行列の要素であるということができる。
【0008】
最適化の分野では、ハミルトニアンを評価関数またはコスト関数と呼ぶ。式(2)で表されるような、評価関数を最小にする変数の組合せを最適解または基底状態と呼ぶ。非特許文献1には、多くの最適化問題に対するハミルトニアンが示されている。例えば、非特許文献1に示される方法によってJijが得られる。そして、式(2)で示されるような最適解を求める。
【0009】
【数2】
【0010】
マルコフ連鎖モンテカルロ法の目的は、温度Tに対して、式(3)で表される確率分布(ボルツマン分布)に比例した確率で状態sをサンプリングすることである。
【0011】
【数3】
【0012】
サンプリングの動作は以下の5つの処理を含む。
【0013】
処理1.初期状態sをランダムに決める。
【0014】
処理2.N個の変数から1つをランダムに選ぶ。
【0015】
処理3.選んだ変数を-1倍した状態をs’とし、式(4)によって評価関数の変化量を計算する。
【0016】
【数4】
【0017】
処理4.以下に示す式(5)で与えられる確率でsからs’への状態遷移を受理するか否かを判定し、受理すると判定した場合には、状態sを状態s’に更新する。また、状態遷移を棄却すると判定した場合には、状態をsのまま保持する。
【数5】
【0018】
処理5.処理2から処理4を繰り返す。
【0019】
以上の動作中で、繰り返しの処理を無限回行う極限で、状態sの出現確率は、目的であった確率分布(式(3))に収束することが保証されている。
【0020】
また、式(1)と同値なモデルとして、変数の値が1または0の2値を取るモデルもよく使用されている。これらのモデルを区別するため、1または-1の2値を取る変数として符号sを用いることとし、1または0の2値を取る変数として符号xを用いることとするようにして、符号を使い分ける。また、前者のモデルの評価関数で用いる行列では符号Jを用いることとし、後者のモデルの評価関数で用いる行列では符号Qを用いることとして符号を使い分ける。両者のモデルは、等価であり、以下では、前者のモデル(イジングモデル)を用いる場合を例にする。
【0021】
処理1~5は、マルコフ連鎖モンテカルロ法のメトロポリス法による1つの実施形態である。現在の状態から次の状態を選択する方法(処理2に相当)、および、処理4に現れる更新を受理する確率の選び方には任意性がある。
【0022】
しかし、収束先の確率分布が目的としていた確率分布に一致するためには、釣り合いの条件およびエルゴード性の2条件を満たすように、次の状態を選択する方法、および、受理確率を定める必要がある。一般には、この2条件を満たした力学系を構成することは容易ではない。よく知られた手法として、メトロポリス法または熱浴法が採用される。
【0023】
マルコフ連鎖モンテカルロ法を用いる解法が使用される場合、対象とするモデルの規模が大きくなるにつれて処理時間が増大する。従って、マルコフ連鎖モンテカルロ法を用いる解法には、処理時間を短縮させる工夫が求められる。大規模なモデルに対する力学系の処理が大規模計算機を用いて実行されることもある。大規模計算機が用いられる場合でも、処理時間を短縮するには、高い効率で処理を並列化することが重要である。
【0024】
力学系の状態更新を並列化する技術が記載された文献として、例えば、特許文献2、特許文献3がある。特許文献2に記載された技術は、上記の処理2に相当する処理で複数個の変数を選択し、それぞれの変数について独立に処理3~4を行う。この技術は、処理4で受理された変数のうち1つを選択し、その変数のみ状態を変更する。処理3~4は、一度の繰り返し処理で複数回実行されるものの、独立であるため並列化が可能である。
【0025】
特許文献3に記載された技術は、変数を離散値ではなく実数値とし、ハミルトン力学に基づいて状態更新を行う。ハミルトン力学は、マルコフ連鎖モンテカルロ法とは異なり、微分方程式に従う決定論的な力学系である。この技術は、原理的に各変数の更新を並列に行うことができる。
【0026】
また、マルコフ連鎖モンテカルロ法による力学系を用いて、組合せ最適化問題の解を求めることができる。処理1~5に示したマルコフ連鎖モンテカルロ法の基本動作に加えて、温度Tを高温から徐々に下げる処理を行うことで、力学系の更新を長時間行う場合に、式(2)の解を高い確率で得ることができる。
【0027】
組合せ最適化問題の解探索を効率化するための技術が、例えば、特許文献4に記載されている。
【0028】
特許文献4に記載された技術では、ハミルトニアンに加えて、変数の組に対して定められた制約が与えられる。変数の組に対して定められる制約は、式(2)が示す条件とは別に定められる条件である。具体的な制約の一例として、「組に属する変数のうち、1つの変数のみが1であり、他の変数は-1である」という制約が挙げられる。この制約は、One-Hot 制約と称されることもある。組合せ最適化問題では、このような制約がいくつか与えられた上で、式(2)の解を求める設定がよく用いられる。なお、One-Hot 制約は、制約の一例である。
【0029】
特許文献4に記載された技術では、上記の処理2に相当する処理で、変数(スピン)を選択するときに、その変数の値を更新すると、その変数が属する組に定められた制約が満たされた状態から、満たされない状態に変化してしまうならば、制約が満たされた状態を維持するために、その変数に加えて、更新の候補となる変数をさらに選択する。すなわち、複数の変数を同時に選択する。この結果、制約条件を満たさなくなるような解探索を省略することができる。例えば、上記のOne-Hot 制約が定められた変数の組が存在し、その組に属する変数がOne-Hot 制約を満たしているとする。その変数の中から1つの変数のみを選択し、状態遷移が受理されると、必ずOne-Hot 制約が満たされない状態になってしまう。このようなことを回避するために、1つの変数を選択し、さらに、One-Hot 制約を満たしたままにするためにもう1つの変数を選択する。そして、2つの変数の状態遷移の受理判定を行い、状態遷移を受理する場合には、その2つの変数の状態を同時に更新する。この結果、状態遷移後も、One-Hot 制約は満たされている。すわなち、処理3では、選択した複数個の変数を全て更新した場合の評価関数の変化量を計算し、処理4では、その複数個の変数全ての更新を受理するか否かを判定する。従って、特許文献4に記載された技術では、与えらえた制約をできるだけ満たしながら状態を遷移させることができる。そして、制約を満たさない不必要な解探索をできるだけ回避し、効率的な解探索を実現できる。
【先行技術文献】
【特許文献】
【0030】
【文献】国際公開第2019/078354号
【文献】特開2018-41351号公報
【文献】特開2019-145010号公報
【文献】国際公開第2021/059338号
【非特許文献】
【0031】
【文献】A. Lucas, "Ising formulations of many NP problems", Frontiers in Physics, 2014, Volume 2, Article 5
【発明の概要】
【発明が解決しようとする課題】
【0032】
本発明の発明者は、力学系の状態更新を並列化する技術を見出した。以下、この技術を便宜的に「技術T」と称する。技術Tでは、分散並列環境を想定し、プロセスが分散されているものとする。換言すれば、プロセスを実行する装置が分散配置され、各装置が各プロセスを実行する。そして、分散されたそれぞれのプロセスにおいて、処理2、処理3が独立に実行される。すなわち、独立に変数が選択され、評価関数の変化量Δも独立に計算される。その後の処理4では、プロセスの番号順に、状態遷移の受理判定を行う。このとき、後に続くプロセスでは、前のプロセスで受理された状態遷移を考慮せずにΔを計算する。従って、式(4)で得られる変化量の値Δが、本来の値と異なることになる。しかし、後に続くプロセスは、前に並ぶプロセスで状態が更新された変数の番号(インデックス)を通信することによって、この変化量の値Δを修正してから、状態遷移の受理判定を行う。処理3における式(4)の計算は、ボトルネックになる処理であるが、発明者が見出した技術Tでは、この計算を並列化しつつ、状態更新の逐次性を失うことなく力学系を構成することができる。
【0033】
また、各プロセスには、値を更新できる変数が割り当てられていて、各プロセスは、割り当てられた変数の値を更新できる。しかし、各プロセスは、割り当てられていない変数の値を更新できない。また、評価関数(式(1))で用いられる行列の要素Jijは、各プロセスのメモリに分散して保持されている。各プロセスは、割り当てられた変数のインデックスiの集合について、要素Jij(1≦j≦N)を保持する。このインデックスの集合をIと記す。また、プロセス(各プロセスを実行する各装置)は円環状に通信可能に接続され、それぞれのプロセスは、前後2つのプロセスと通信を行うことができる。
【0034】
上記の技術Tでは、それぞれのプロセスで、以下のように処理が進められる。
【0035】
処理1’.各プロセスに共通の初期状態が与えられる。
【0036】
処理2’.集合Iからp個の変数をランダムに選択する。pは、1つのプロセスが処理する変数の個数であり、効率的な処理の実行のためのパラメータである。
【0037】
処理3’-1.この時点での状態をsとする。そして、選択したp個の変数のうちの1つを-1倍した状態を、s’とする。選択した変数の数はp個であるので、s’もp個存在する。そして、それぞれのs’毎に、式(4)の計算を行い、状態sにおける評価関数の値から、状態s’における評価関数の値への変化量Δを計算する。従って、Δの計算もp回実行する。
【0038】
処理3’-2.1つ前のプロセスから、更新された変数のインデックスの集合(Kとする。)を受信する。状態sから、集合Kに含まれるインデックスが示す変数を-1倍した状態をs’’とする。そして、状態s’’における評価関数の値と、状態s’における評価関数の値との差分Δ’を計算する。Δ’の計算は、既に計算しているΔを用いることで、簡略化することができる。すなわち、以下に示す式(6)でΔ’を計算することで、計算を簡略化することができる。
【0039】
【数6】
【0040】
Δ’は、これまでに実行された変数の値の更新結果を反映した、Δの本来の値である。すなわち、式(6)で、Δを本来の値に修正していることになる。
【0041】
処理4.受理確率を表す式(5)でΔの代わりにΔ’を用いて、状態遷移の受理確率を計算する。
【0042】
処理4’-1.状態遷移の受理判定を行う。状態遷移を受理すると判定した場合、インデックスiの変数の値を更新する。そして、この場合、集合Kにインデックスiを追加する。
【0043】
処理4’-2.p個の変数について、処理3’-2から処理4’-1までを繰り返す。
【0044】
処理4’-3.集合Kを通信経路上の次のプロセスに送信する。
【0045】
処理5’.処理2’から処理4’―3までを繰り返す。
【0046】
このような技術Tに、特許文献4に記載された技術を単純に適用することはできない。技術Tでは、各プロセスに変数を割り当てる。このとき、制約が定められた変数の組に属している変数が、複数のプロセスに分散して割り当てられてしまうことが多いと考えられる。すると、特許文献4に記載された技術を実現することができなくなってしまう。すなわち、1つのプロセスに、制約が定められた変数の組に属している変数がまとめて割り当てられる保証がないため、1つのプロセスが、特許文献4に記載された技術のように、制約が定められた変数の組に属している複数個の変数を同時に選択することができないことが頻発する。その結果、与えられた制約の多くが満たされないまま解探索が進められることになってしまう。
【0047】
そこで、本発明は、並列に処理を行う複数の装置に対して、組合せ最適化問題の変数を適切に割り当てることができる変数割当装置、変数割当方法、および、変数割当プログラムを提供することを目的とする。
【課題を解決するための手段】
【0048】
本発明による変数割当装置は、組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる変数割当装置であって、制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換する変数割当手段と、前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する行列変換手段とを備えることを特徴とする。
【0049】
本発明による変数割当方法は、組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる変数割当方法であって、コンピュータが、制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換し、前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換することを特徴とする。
【0050】
本発明による変数割当プログラムは、組合せ最適化問題の変数が割り当てられ、割り当てられた前記変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段に対して、それぞれ、前記組合せ最適化問題の変数を割り当てる処理をコンピュータに実行させるための変数割当プログラムであって、前記コンピュータに、制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換する変数割当処理、および、前記組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する行列変換処理を実行させる。また、本発明は、上記の変数割当プログラムを記録したコンピュータ読み取り可能な記録媒体であってもよい。
【発明の効果】
【0051】
本発明によれば、並列に処理を行う複数の装置に対して、組合せ最適化問題の変数を適切に割り当てることができる。
【図面の簡単な説明】
【0052】
図1】本発明による変数割当装置と、技術Tにおける分散されたプロセスを実行する複数の要素とを示す模式図である。
図2】変数割当装置の構成例を示すブロック図である。
図3】本発明の実施形態の処理経過の例を示すフローチャートである。
図4】本発明の実施形態の処理経過の例を示すフローチャートである。
図5】優先度順に並べ替えられた変数の組を示す模式図である。
図6】力学系更新部に割り当てられた変数を示す模式図である。
図7】変換後のインデックスを示す模式図である。
図8】1つの力学系更新部の構成例を示すブロック図である。
図9】力学系更新部の処理経過の例を示すフローチャートである。
図10】力学系更新部の処理経過の例を示すフローチャートである。
図11】本発明の実施形態の変数割当装置に係るコンピュータの構成例を示す概略ブロック図である。
図12】本発明の変数割当装置の概要の例を示すブロック図である。
【発明を実施するための形態】
【0053】
以下、本発明の実施形態を図面を参照して説明する。
【0054】
図1は、本発明による変数割当装置と、前述の技術Tにおける分散されたプロセスを実行する複数の要素とを示す模式図である。
【0055】
図1に示す力学系更新部20~20は、それぞれ、技術Tにおける分散されたプロセスを実行する要素である。ただし、力学系更新部20~20は、特許文献4に記載された技術を適用して、技術Tにおける分散されたプロセスを実行する。本発明の実施形態の変数割当装置10が、組合せ最適化問題の変数を、各力学系更新部20~20に割り当てることによって、力学系更新部20~20は、特許文献4に記載された技術を適用して、技術Tにおける分散されたプロセスを実行できる。
【0056】
なお、各力学系更新部20~20を特に区別しない場合には、添え字のない符号20を用いる。
【0057】
各力学系更新部20を、並列処理手段と称してもよい。
【0058】
図1では、3つの力学系更新部20を示しているが、力学系更新部20の数は、複数であればよく、3つに限定されない。
【0059】
各力学系更新部20~20は、円環状に通信可能に接続されている。そして、複数の力学系更新部20は、順序付けられている。本実施形態では、符号20の添え字が、力学系更新部20の順序を表している。また、各力学系更新部20は、1つ前の力学系更新部20および1つ後の力学系更新部20と通信可能である。
【0060】
また、各力学系更新部20には、それぞれ、割当可能な変数の数の上限値が定められている。
【0061】
本実施形態では、個々の力学系更新部20が、それぞれ情報処理装置(コンピュータ)によって実現されている場合を例にするが、個々の力学系更新部20は、例えば、プロセッサ等によって実現されていてもよい。
【0062】
また、本実施形態では、変数割当装置10は、各力学系更新部20とは別の情報処理装置(コンピュータ)によって実現される場合を例にして説明する。
【0063】
変数割当装置10には、予め、組合せ最適化問題の評価関数と、組合せ最適化問題の各変数と、制約が定められた変数の組およびその制約の内容とが予め与えられている。制約が定められた変数の組は、1つとは限らない。変数の各組、および、各組が満たすべき制約は、例えば、本実施形態の変数割当装置10を利用するユーザによって定められる。
【0064】
変数割当装置10は、各力学系更新部20~20と通信可能に接続されている。変数割当装置10は、各力学系更新部20~20それぞれに変数を割り当て、割り当てた変数の情報を割当先となる力学系更新部20に送信する。
【0065】
ここで、組合せ最適化問題の変数の組に定められる制約の種別について説明する。
【0066】
(1)変数の組に対する制約の種別の1つとして、組に属する複数の変数のうち、1つの変数のみを“1”とし、その組に属する他の全ての変数を“-1”とするという制約(One-Hot 制約)が挙げられる。以下、この制約を「第1の制約」と記す。
【0067】
(2)変数の組に対する制約の他の種別として、3つの変数x,y,zからなる組において、x=y*zとするという制約が挙げられる。この場合において、xを補助スピン(補助変数)と称する。以下、この制約を「第2の制約」と記す。第2の制約が定められた組に属する変数の数は3個である。
【0068】
(3)第1の制約および第2の制約以外の制約を、第3の制約と記すこととする。第3の制約の例として、例えば、組に属する複数の変数のうち、少なくとも1つの変数を“1”とするという制約や、組に属する複数の変数のうち、少なくとも1つの変数を“-1”とするという制約が挙げられる。
【0069】
1つの変数が、制約が定められた複数の組に属している場合もある。
【0070】
本実施形態では、制約には、制約の種別に応じて優先度が定められる。本実施形態では、「第1の制約」の優先度が最も高く、「第2の制約」の優先度が2番目に高く、「第3の制約」の優先度が3番目に高いものとする。
【0071】
上記のような制約の種別に応じた優先度が定められる。その上で、制約の種別が同一である場合には、制約が定められた組に属する変数の数が多い組ほど、優先度が高いものとする。例えば、「第1の制約」が定められた複数の組では、属している変数の数が多い組ほど、優先度が高い。第3の制約においても同様である。また、同じ種別の制約が定められた複数の組で、属している変数の数が等しい場合には、それらの組の優先度は任意に定めてよい。
【0072】
次に、変数割当装置10について説明する。図2は、変数割当装置10の構成例を示すブロック図である。変数割当装置10は、変数割当部11と、行列変換部12と、通信部13と、インデックス逆変換部14とを備える。
【0073】
変数割当部11は、制約の優先度に従って、制約が定められた変数の組を並べ替える。変数割当部11は、優先度の高い順に、制約が定められた変数の組を選択し、選択した組毎に、組に属する変数をいずれか1つの力学系更新部20に割り当てる。このとき、変数割当部11は、力学系更新部20に割当可能な変数の数の上限値と、既に力学系更新部20に割り当てられている変数の数との差が最も大きい力学系更新部20に、選択した組に属する変数を割り当てる。ただし、変数割当部11は、1つの組に属する変数が複数の力学系更新部20に割り当てられることを許容する場合もある。
【0074】
全ての変数をいずれかの力学系更新部20に割り当てた後に、変数割当部11は、力学系更新部20の順番に従って、力学系更新部20に割り当てた変数のインデックスを変換する。変数割当部11は、力学系更新部20の順番に従って、変数のインデックスが1から昇順になるように、インデックスを変換する。例えば、力学系更新部20にインデックスが“10”,“16”,“20”である3つの変数が割り当てられたとする。この場合、変数割当部11は、インデックス“10”,“16”,“20”をそれぞれ、インデックス“1”,“2”,“3”に変換する。そして、変数割当部11は、2番目の力学系更新部20に割り当てられた変数のインデックスを“4”,“5”等のように変換する。変数割当部11は、各変数の変換前のインデックスと変換後のインデックスとの対応関係を保持する。
【0075】
行列変換部12は、組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する。
【0076】
この変換について、より具体的に説明する。組合せ最適化問題の評価関数で用いられる行列は、2つのインデックスi,jに応じたJijを要素としている。ここで、変数の数をN個とした場合、1≦i≦N,1≦j≦Nである。変換後の行列の要素を、J’にインデックスを添え字として付して表すこととする。インデックスi,jの変換後のインデックスをそれぞれ、σ(i),σ(j)とする。この場合、変換後のJ’σ(i)σ(j)が、変換前のJijと同一になるように、行列変換部12は、行列の各要素を変換する。例えば、インデックス“10”,“16”が、インデックス“1”,“2”に変換されたとする。この場合、変換後のJ’1,2が、変換前のJ10,16と同一になる。このように、行列変換部12は、行列の各要素を変換する。
【0077】
通信部13は、各力学系更新部20と、情報を送受信する。
【0078】
通信部13は、個々の力学系更新部20に対して、割り当てた変数の変換後のインデックスと、割り当てた変数に応じた変換後の行列の要素と、割り当てた変数の組に定められた制約とを送信する。送信される行列の要素についてより具体的に説明する。例えば、力学系更新部20に割り当てた変数の変換後のインデックスのうちの1つが“5”であるならば、通信部13は、J’5,1~J’5,Nをその力学系更新部20に送信する。他の変換後のインデックスにも応じて、通信部13は、その力学系更新部20に変換後の行列の要素を送信する。すなわち、力学系更新部20に割り当てた変数の変換後のインデックスがσ(i)ならば、通信部13は、J’σ(i),1~J’ σ(i),Nをその力学系更新部20に送信する。ここで、σ(i)の値は複数種類存在する。
【0079】
また、通信部13は、個々の力学系更新部20から、個々の力学系更新部20において求められた各変数の値(1または-1の値)を、その各変数のインデックスとともに受信する。
【0080】
インデックス逆変換部14は、各力学系更新部20から各変数の値とともに受信した各変数のインデックスを、変換前のインデックスに戻す。すなわち、インデックス逆変換部14は、各変数のインデックスを変換前のインデックスに逆変換する。
【0081】
通信部13は、例えば、変数割当プログラムに従って動作するコンピュータのCPU(Central Processing Unit )、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体から変数割当プログラムを読み込み、その変数割当プログラムに従って、通信インタフェースを用いて、通信部13として動作すればよい。この通信インタフェースは、各力学系更新部20との通信で用いられるインタフェースである。また、変数割当部11、行列変換部12およびインデックス逆変換部14は、例えば、変数割当プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体から変数割当プログラムを読み込み、その変数割当プログラムに従って、変数割当部11、行列変換部12およびインデックス逆変換部14として動作すればよい。
【0082】
次に、処理経過について説明する。図3および図4は、本発明の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、詳細な説明を省略する。
【0083】
まず、変数割当部11は、制約が定められた変数の組を優先度順に並べ替える(ステップS1)。図5は、優先度順に並べ替えられた変数の組を示す模式図である。図5に示すように、第1の制約が定められた組の優先度が高く、第1の制約が定められた組の中では、組に属する変数の数が多いほど、優先度が高い。次に、第2の制約が定められた組の優先度が高い。第2の制約が定められた組に属する変数の数は同一なので、第2の制約が定められた複数の組の優先度は任意に定められる。次に、第3の制約が定められた組の優先度が高く、第3の制約が定められた組の中では、組に属する変数の数が多いほど、優先度が高い。
【0084】
次に、変数割当部11は、優先度の高い順に、未選択の組(制約が定められた変数の組)を1つ選択する(ステップS2)。
【0085】
そして、変数割当部11は、選択した組に属する変数のうちの一部の変数が、いずれかの力学系更新部20に割り当て済みであるか否かを判定する(ステップS3)。選択した組に属する全ての変数がどの力学系更新部20にも割り当てられていない場合(ステップS3のNo)、ステップS7に移行する。
【0086】
ステップS7では、変数割当部11は、選択した組に属する変数を1つの力学系更新部20に割り当てる。このとき、変数割当部11は、力学系更新部20に割当可能な変数の数の上限値と、既に力学系更新部20に割り当てられている変数の数との差が最も大きい力学系更新部20に、選択した組に属する変数を割り当てる。
【0087】
また、選択した組に属する変数のうちの一部の変数が、いずれかの力学系更新部20に割り当て済みである場合(ステップS3のYes)、ステップS4に移行する。
【0088】
ステップS4では、変数割当部11は、選択した組に属する変数のうち、少なくとも2つの変数が既に異なる力学系更新部20に割り当てられているか否かを判定する。少なくとも2つの変数が異なる力学系更新部20に割り当てられている場合(ステップS4のYes)、ステップS2以降の処理を繰り返す。この場合、上記の選択した組に属する変数のうち、まだ力学系更新部20に割り当てられていない変数は、後述のステップS9で、力学系更新部20に割り当てられる。このことは、変数割当部11が、上記の選択した組に属する変数が異なる力学系更新部20に割り当てられることを許容することを意味する。
【0089】
上記の一部の変数が1つの力学系更新部20のみに割り当てられている場合(ステップS4のNo)、ステップS5に移行する。ステップS5では、変数割当部11は、上記の一部の変数が割り当てられている力学系更新部20における割当可能な変数の数の上限値と、既にその力学系更新部20に割り当てられている変数の数との差が、選択した組に属する変数のうちの上記の一部の変数以外の変数(残りの変数と記す。)の数以上であるか否かを判定する。
【0090】
上記の差が、残りの変数の数よりも小さい場合(ステップS5のNo)、ステップS2以降の処理を繰り返す。この場合、上記の選択した組に属する変数のうち、まだ力学系更新部20に割り当てられていない変数は、後述のステップS9で、力学系更新部20に割り当てられる。このことは、変数割当部11が、上記の選択した組に属する変数が異なる力学系更新部20に割り当てられることを許容することを意味する。
【0091】
上記の差が、残りの変数の数以上である場合(ステップS5のYes)、変数割当部11は、上記の一部の変数が割り当てられている力学系更新部20に、残りの変数を割り当てる(ステップS6)。
【0092】
ステップS6の後、および、ステップS7の後に、変数割当部11は、全ての組(制約が定められた変数の組)が選択済みであるか否かを判定する(ステップS8)。未選択の組がある場合(ステップS8のNo)、ステップS2以降の処理を繰り返す。
【0093】
全ての組が選択済みである場合(ステップS8のYes)、ステップS9に移行する。ステップS9以降の処理は、図4に示している。
【0094】
ステップS9において、変数割当部11は、まだ力学系更新部20に割り当てられていない変数を、力学系更新部20に割り当てる。ステップS9では、変数割当部11は、力学系更新部20に割当可能な変数の数の上限値と、既に力学系更新部20に割り当てられている変数の数との差が最も大きい力学系更新部20に優先的に、変数を割り当てていく。
【0095】
力学系更新部20~20のいずれにおいても、割当可能な変数の数の上限値が10個であるとする。そして、図5に示す9個の組が与えられているとする。この場合、上記のステップS9までの処理で、各組に属する変数は、例えば、図6に示すように、力学系更新部20~20に割り当てられる。なお、この例では、図5に示す優先度“5”の組に属する変数は、異なる力学系更新部20,20に割り当てられる(図5図6を参照)。また、図5に示す優先度“8”の組に属するインデックス18,19で示される変数は、ステップ9で力学系更新部20に割り当てられたものとする。
【0096】
次に、変数割当部11は、力学系更新部20の順番に従って、変数のインデックスが1から昇順になるように、インデックスを変換する(ステップS10)。図6に示すように、力学系更新部20にインデックス3,5,10,16,20,1,7,8,9で示される変数が割り当てられているとする。また、力学系更新部20にインデックス2,4,6,12,14で示される変数が割り当てられているとする。また、力学系更新部20にインデックス11,13,15,17,18,19で示されるインデックスが割り当てられているとする。この場合、変数割当部11は、インデックス3,5,10,16,20,1,7,8,9を、インデックス1,2,3,4,5,6,7,8,9に変換する。また、変数割当部11は、インデックス2,4,6,12,14を、インデックス10,11,12,13,14に変換する。また、変数割当部11は、インデックス11,13,15,17、18,19を、インデックス15,16,17,18,19,20に変換する。このようにインデックスを変更した後の状態を、図7に示す。変数割当部11は、各変数の変換前のインデックスと変換後のインデックスとの対応関係を保持する。
【0097】
次に、行列変換部12は、評価関数で用いられる行列を変換する(ステップS11)。前述のように、インデックスi,jの変換後のインデックスをそれぞれ、σ(i),σ(j)とする。行列変換部12は、変換後のJ’σ(i)σ(j)が、変換前のJijと同一になるように、行列変換部12は、行列の各要素を変換すればよい。
【0098】
次に、通信部13は、個々の力学系更新部20に対して、割り当てた変数の変換後のインデックスと、割り当てた変数に応じた変換後の行列の要素と、割り当てた変数の組に定められた制約とを送信する(ステップS12)。
【0099】
通信部13は、変数を各力学系更新部20に割り当てる際に、属している変数が異なる力学系更新部20に割り当てられた組に定められた制約については、送信対象から除外する。例えば、図5ないし図7に示した例では、優先度“5”の組,優先度“8”の組に定められた制約は、送信対象から除外されてもよい。
【0100】
また、変数を各力学系更新部20に割り当てる際に、属している変数が異なる力学系更新部20に割り当てられた組に定められた制約を、通信部13が、それぞれの力学系更新部20に送信してもよい。例えば、図5ないし図7に示した例では、優先度“8”の組には、変換後のインデックス4,19,20が属していて、変換後のインデックス4で示される変数は、力学系更新部20に割り当てられ、変換後のインデックス19,20で示される変数は、力学系更新部20に割り当てられている。この場合、通信部13は、力学系更新部20にインデックス4で示される変数からなる組に第3の制約が定められていることを示す情報を送信し、同様に、力学系更新部20にインデックス18,19で示される変数からなる組に第3の制約が定められていることを示す情報を送信を送信してもよい。ただし、この技術事項は、第2の制約が定められた組には適用されない。
【0101】
ステップS12で送信された情報を受信した各力学系更新部20~20は、割り当てられた変数の値を求める処理を並列に実行し、求めた変数の値およびその変数のインデックスを変数割当装置10に送信する。この力学系更新部20の動作については、後述する。
【0102】
変数割当装置10は、各力学系更新部20から送信された変数のインデックスおよび値を受信する(ステップS13)。
【0103】
次に、インデックス逆変換部14は、各力学系更新部20から変数の値とともに受信したインデックスを、変換前のインデックスに逆変換する(ステップS14)。
【0104】
この結果、変換前のインデックスで示される各変数の値が得られる。この各変数の値は、組合せ最適化問題の解に相当する。
【0105】
ここで、上記の処理経過の変形例について説明する。上記の処理経過では、選択した組に属する変数のうち、少なくとも2つの変数が既に異なる力学系更新部20に割り当てられている場合(ステップS4のYes)、直ちにステップS2に移行する場合を説明した。この場合(ステップS4のYes)、変数割当部11は、上記の異なる力学系更新部20のうちの1つの力学系更新部20に、選択した組に属する変数のうち、まだその力学系更新部20に割り当てていない変数を割り当ててもよい。
【0106】
例えば、変数割当部11が、図5に示す優先度“5”の組を選択したとする。このとき、この組に属するインデックス1,3で示される変数は、力学系更新部20に割り当てられ、この組に属するインデックス2で示される変数は、力学系更新部20に割り当てられている。この場合、変数割当部11は、力学系更新部20,20のいずれか一方に、選択した組に属する変数のうち、まだその力学系更新部20に割り当てていない変数を割り当ててもよい。このとき、変数割当部11は、変数を割り当てる力学系更新部20として、割当可能な上限値と、既に割り当てられている変数の数との差が、最も大きい力学系更新部20を選択すればよい。
【0107】
ただし、変数割当部11が、選択した力学系更新部20に変数を割り当てるときに、以下の2つの条件を満たしていなければならない。第1の条件は、これから割り当てる変数の数が、割当可能な上限値と、既に割り当てられている変数の数との差以上であることである。
【0108】
第2の条件は、変数を割り当てた場合に、複数の力学系更新部20に重複して割り当てられている変数の重複数が、重複許容数以下であることである。例えば、上記の例において、変数割当部11が、力学系更新部20に、インデックス1,3の変数を割り当てるとする。この場合、インデックス1で示される変数、および、インデックス3で示される変数は、それぞれ、力学系更新部20,20に割り当てられることになる。この場合、複数の力学系更新部20に重複して割り当てられている変数の重複数は2となる。また、重複許容数とは、各力学系更新部20に定められた割当可能な変数の上限値の総和から、組合せ最適化問題の変数の個数を減算した値である。本例では、上記の総和は30であり、変数の個数は20個であるので、重複許容数は、30-20=10となる。複数の力学系更新部20に重複して割り当てられている変数の重複数が重複許容数より大きくなると、どの力学系更新部20にも割り当てることができない変数が生じてしまうので、第2の条件も満たす必要がある。
【0109】
第1の条件および第2の条件がともに満たされる場合には、変数割当部11は、選択した力学系更新部20に変数を割り当ててもよい。その後、ステップS2以降の動作を繰り返す。以上が、処理経過の変形例の説明である。
【0110】
次に、力学系更新部20について説明する。図8は、1つの力学系更新部20の構成例を示すブロック図である。各力学系更新部20の構成は、共通である。力学系更新部20は、通信部21と、次状態生成部22と、エネルギー計算部23と、遷移判定部24と、温度制御部25とを備える。
【0111】
通信部21は、ステップS12(図4参照)で変数割当装置10が送信した情報を受信する。すなわち、通信部21は、力学系更新部20に割り当てられた変数のインデックスと、割り当てられた変数に応じた変換後の行列の要素と、割り当てられた変数の組に定められた制約とを受信する。
【0112】
また、通信部21は、1つ前の力学系更新部20や次の力学系更新部20との間で、更新された変数のインデックスの集合Kを送受信する。
【0113】
次状態生成部22は、p個の次状態を生成する。次状態とは、原則的には、1つの変数の値を更新した状態である。ただし、その1つの変数の値を更新することで、その変数が属する組に定められた制約が、満たされた状態から満たされない状態に変化する場合、その制約が満たされた状態を維持するように、その1つの変数に加えて、その組に属する他の変数の値も変更した状態が次状態になる。ただし、制約が満たされた状態が維持されるように、他の変数も更新される組は、1つであるものとする。
【0114】
ただし、値を更新できる変数は、変数割当装置10によって力学系更新部20に割り当てられた変数のみである。
【0115】
現時点の各変数の状態をsとする。そして、個々の次状態をs’とする。エネルギー計算部23は、次状態毎に、式(4)の計算によって、評価関数の値の変化量Δを計算する。すなわち、エネルギー計算部23は、p個の変化量Δを計算する。
【0116】
また、エネルギー計算部23は、通信部21が1つ前の力学系更新部20から集合Kを受信すると、次状態毎に変化量Δを修正する。修正後の変化量をΔ’とする。エネルギー計算部23は、以下に示す式(7)の計算によって、修正後の変化量Δ’を計算する。
【0117】
【数7】
【0118】
s’’は、状態sから、集合Kに含まれるインデックスが示す変数を-1倍した状態である。
【0119】
遷移判定部24は、次状態毎に、次状態への状態遷移を受理するか棄却するかを判定する。遷移判定部24は、状態遷移を受理すると判定した場合には、着目している次状態に更新する。また、遷移判定部24は、状態遷移を棄却すると判定した場合には、着目している次状態への更新を行わない。遷移判定部24は、状態遷移を受理するか棄却するかを判定する際に、式(8)に示す受理確率を用いる。
【0120】
【数8】
【0121】
温度制御部25は、温度Tを制御する。例えば、温度制御部25は、状態の更新を所定回数行うごとに、温度Tを所定値低下させる。
【0122】
通信部21は、例えば、プログラムに従って動作するコンピュータのCPU、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、通信部21として動作すればよい。この通信インタフェースは、変数割当装置10や隣接する力学系更新部20との通信で用いられるインタフェースである。また、次状態生成部22、エネルギー計算部23、遷移判定部24および温度制御部25は、例えば、プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが上記のようにプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、次状態生成部22、エネルギー計算部23、遷移判定部24および温度制御部25として動作すればよい。
【0123】
次に、力学系更新部20の処理経過について説明する。図9および図10は、力学系更新部20の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、詳細な説明を省略する。なお、図9および図10において、温度制御部25の動作は、図示していない。温度制御部25は、状態の更新を所定回数行うごとに、温度Tを所定値低下させる動作を実行しているものとする。
【0124】
各力学系更新部20はそれぞれ、ステップS12(図4参照)で変数割当装置10が送信した情報を受信しているものとする。また、各力学系更新部20には、各変数の初期状態として共通の初期状態が与えられているものとする。各力学系更新部20に共通の初期状態を与える方法は特に限定されない。
【0125】
まず、次状態生成部22は、p個の次状態を生成する(ステップS21)。ただし、値を更新できる変数は、変数割当装置10によって力学系更新部20に割り当てられた変数のみである。
【0126】
次に、エネルギー計算部23は、次状態毎にそれぞれ、式(4)の計算によって、評価関数の値の変化量Δを計算する(ステップS22)。
【0127】
次に、通信部21は、1つ前の力学系更新部20から、更新された変数のインデックスの集合Kを受信する(ステップS23)。
【0128】
次に、エネルギー計算部23は、p個の次状態のなかから、未選択の次状態を1つ選択する(ステップS24)。
【0129】
そして、エネルギー計算部23は、選択した次状態について、式(7)の計算によって、Δ’を計算する(ステップS25)。換言すれば、エネルギー計算部23は、選択した次状態について、ΔをΔ’に修正する。Δ’は、これまでに実行された変数の値の更新結果を反映した、Δの本来の値である。
【0130】
次に、遷移判定部24は、ステップS24で選択された次状態への状態遷移の受理判定を行う(ステップS26)。ステップS26において、遷移判定部24は、式(8)に示す受理確率を用いる。
【0131】
次状態への状態遷移を棄却する場合、状態の更新を行わずにステップS24以降の動作を繰り返す。
【0132】
次状態への状態遷移を受理する場合、遷移判定部24は、現在の状態から、ステップS24で選択された次状態に更新する(ステップS27)。
【0133】
遷移判定部24は、ステップS27において値を更新した変数のインデックスを集合Kに追加する(ステップS28)。
【0134】
次に、エネルギー計算部23は、ステップS21で生成されたp個の次状態が全て選択済みであるか否かを判定する(ステップS29)。まだ、選択されていない次状態があるならば(ステップS29のNo)、ステップS24以降の動作を繰り返す。
【0135】
p個の次状態が全て選択済みであるならば(ステップS29のYes)、通信部21は、集合Kを次の力学系更新部20に送信する(ステップS30)。
【0136】
次に、次状態生成部22は、ステップS21から始まる繰り返し処理の終了条件が満たされているか否かを判定する(ステップS31)。ステップS21から始まる繰り返し処理の回数が所定の回数に達したことを、終了条件として予め定めておけばよい。ただし、上記の例は、終了条件の一例であり、終了条件は、上記の例に限定されない。
【0137】
終了条件が満たされていない場合(ステップS31のNo)、ステップS21以降の処理を繰り返す。
【0138】
終了条件が満たされている場合、ステップS32に移行する。ステップS32は、図10に示している。
【0139】
ステップS32において、通信部21は、力学系更新部20に割り当てられた変数の値およびインデックスを、変数割当装置10に送信する。
【0140】
各力学系更新部20がステップS32で変数の値およびインデックスを、変数割当装置10に送信し、変数割当装置10の通信部13は、ステップS13(図4参照)で、その変数の値およびインデックスを受信する。そして、変数割当装置10は、ステップS13以降の動作を行う。
【0141】
本実施形態によれば、変数割当装置10の変数割当部11は、制約が定められた変数の組毎に、組に属する変数をいずれか1つの力学系更新部20に割り当てる。従って、力学系更新部20の次状態生成部22は、次状態として、変数の組に定められた制約が満たされている状態を維持するように、その組に属する複数の変数を更新した次状態を生成することができる。従って、複数の力学系更新部20において、技術Tに、特許文献4に記載された技術を適用した処理を実行することができる。
【0142】
すなわち、複数の力学系更新部20において、技術Tに、特許文献4に記載された技術を適用できるように、並列に処理を行う複数の力学系更新部20に対して、組合せ最適化問題の変数を適切に割り当てることができる。
【0143】
図11は、本発明の実施形態の変数割当装置10に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、通信インタフェース1005とを備える。
【0144】
本発明の実施形態の変数割当装置10は、例えば、コンピュータ1000によって実現される。変数割当装置10の動作は、変数割当プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのプログラムを読み出し、そのプログラムを主記憶装置1002に展開し、そのプログラムに従って、本発明の実施形態で説明した変数割当装置10の処理を実行する。
【0145】
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、変数割当プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って上記の実施形態で説明した変数割当装置10の処理を実行してもよい。
【0146】
また、変数割当装置10の各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述の回路等とプログラムとの組合せによって実現されてもよい。
【0147】
これらの点は、力学系更新部20にも当てはまる。
【0148】
次に、本発明の概要を説明する。図12は、本発明の変数割当装置の概要の例を示すブロック図である。本発明の変数割当装置は、組合せ最適化問題の変数が割り当てられ、割り当てられた変数の値を求める処理を並列に行う複数の並列処理手段であって、順序が定められた複数の並列処理手段(例えば、複数の力学系更新部20)に対して、それぞれ、組合せ最適化問題の変数を割り当てる。変数割当装置は、変数割当手段71と、行列変換手段72とを備える。
【0149】
変数割当手段71(例えば、変数割当部11)は、制約が定められた変数の組毎に、組に属する変数をいずれか1つの並列処理手段に割り当て、全ての変数をいずれかの並列処理手段に割り当てた後に、並列処理手段の順序に従って、並列処理手段に割り当てた変数のインデックスを変換する。
【0150】
行列変換手段72(例えば、行列変換部12)は、組合せ最適化問題の評価関数で用いられる行列を、変数の変換後のインデックスに応じて変換する。
【0151】
そのような構成により、並列に処理を行う複数の装置に対して、組合せ最適化問題の変数を適切に割り当てることができる。
【0152】
個々の並列処理手段から、割り当てた変数の値を返された時に、各変数のインデックスを変換前のインデックスに逆変換するインデックス逆変換手段(例えば、インデックス逆変換部14)を備える構成であってもよい。
【0153】
変数の組に定められた制約には、制約の種別により優先度が予め定められ、変数割当手段71が、制約の優先度に従って、制約が定められた変数の組に属する変数をいずれか1つの並列処理手段に割り当てる構成であってもよい。
【0154】
変数割当手段71が、制約が定められた変数の組に属する変数を、並列処理手段に定められた割当可能な変数の数の上限値と既に並列処理手段に割り当てられている変数の数との差が最も大きい並列処理手段に割り当てる構成であってもよい。
【0155】
変数割当手段71が、制約が定められた変数の組に属する変数のうち、少なくとも2つの変数が既に異なる並列処理手段に割り当てられている場合に、その組に属する変数が複数の並列処理手段に割り当てられることを許容する構成であってもよい。
【0156】
変数割当手段71が、制約が定められた変数の組に属する変数のうちの一部の変数が、既に1つの並列処理手段のみに割り当てられている場合、その並列処理手段に定められた割当可能な変数の数の上限値と既にその並列処理手段に割り当てられている変数の数との差が、その組に属する変数のうちの一部の変数以外の変数の数以上ならば、その組に属する変数のうちの一部の変数以外の変数を、その並列処理手段に割り当てる構成であってもよい。
【0157】
変数割当手段71が、制約が定められた変数の組に属する変数のうちの一部の変数が、既に1つの並列処理手段のみに割り当てられている場合、その並列処理手段に定められた割当可能な変数の数の上限値と既にその並列処理手段に割り当てられている変数の数との差が、その組に属する変数のうちの一部の変数以外の変数の数よりも小さいならば、その組に属する変数が複数の並列処理手段に割り当てられることを許容する構成であってもよい。
【0158】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【0159】
本発明は、並列に処理を行う複数の装置に対して、組合せ最適化問題の変数を割り当てる変数割当装置に好適に適用される。
【符号の説明】
【0160】
10 変数割当装置
11 変数割当部
12 行列変換部
13 通信部
14 インデックス逆変換部
20 力学系更新部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12