JP2023107619A - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP2023107619A
JP2023107619A JP2022008901A JP2022008901A JP2023107619A JP 2023107619 A JP2023107619 A JP 2023107619A JP 2022008901 A JP2022008901 A JP 2022008901A JP 2022008901 A JP2022008901 A JP 2022008901A JP 2023107619 A JP2023107619 A JP 2023107619A
Authority
JP
Japan
Prior art keywords
unit
matrix
search
value
solution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022008901A
Other languages
English (en)
Inventor
浩一 神田
Koichi Kanda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022008901A priority Critical patent/JP2023107619A/ja
Priority to US17/978,244 priority patent/US20230252105A1/en
Priority to EP22205216.9A priority patent/EP4216109A1/en
Priority to CN202211457480.5A priority patent/CN116484957A/zh
Publication of JP2023107619A publication Critical patent/JP2023107619A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/20Models of quantum computing, e.g. quantum circuits or universal quantum computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06EOPTICAL COMPUTING DEVICES; COMPUTING DEVICES USING OTHER RADIATIONS WITH SIMILAR PROPERTIES
    • G06E3/00Devices not provided for in group G06E1/00, e.g. for processing analogue or hybrid data
    • G06E3/001Analogue devices in which mathematical operations are carried out with the aid of optical or electro-optical elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Nonlinear Science (AREA)
  • Optics & Photonics (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】2ウェイ1ホット制約にしたがう問題の解を効率的に得る情報処理装置、情報処理方法及び情報処理プログラムを提供する。【解決手段】最適化部20は、2ウェイ1ホット制約を含む制約条件が与えられた問題の解を、目的関数に基づく第1行列を重み行列として用いて探索する。強制遷移部18は、最適化部20による探索が特定の状態に達した場合に、最適化部20の探索結果である解の一部の値を変更する。重み行列切替部19は、強制遷移部18により解の一部の値の変更が行われた場合に、重み行列にペナルティ係数を用いて生成した復帰用行列を重み行列として最適化部20に探索を行わせ、最適化部20による探索結果が2ウェイ1ホット制約を満たす状態に達すると、重み行列を第1行列に戻して最適化部20に探索を行わせる。【選択図】図6

Description

本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
組合せ最適化問題は、現在の社会における様々な分野に存在する。たとえば、製造・流通、マーケティングなどの分野では、コストを最適化もしくは最小化する要素の組合せが探索される。しかし、組合せ最適化問題は、上記要素に対応する変数の数が増えるにつれて指数関数的に計算時間が増加するため、従来のノイマン型コンピュータでは解くことが困難である問題として知られている。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置が存在する。このような最適化装置は、イジングマシン又はボルツマンマシンとも呼ばれる。また、エネルギー関数は、コスト関数又は目的関数と呼ばれる場合もある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
イジングモデルを用いた最小値求解問題の計算手法として、イジング型のエネルギー関数の最小値を、マルコフ連鎖モンテカルロ(Markov-Chain Monte Carlo:MCMC)を用いて求解する手法がある。MCMC法では、ボルツマン分布にしたがった遷移確率でエネルギー関数の状態変数の更新である状態遷移を行うことが一般的である。MCMC法では、状態を表すビット列のいずれかのビットを確率的に反転させて探索を行い、現在の状態から近傍状態に移行した場合のエネルギー差に基づいて移行の可否が決定される。イジング型のエネルギーは、バイナリ変数の2次系式のエネルギーである。
このような最適化問題の中には、1ホット(One Hot)制約と呼ばれる制約条件が課される問題が存在する。1ホット制約とは、複数の状態変数が存在する場合に、1つの解において値が1になる状態変数の数が1つに限定される制約である。1ホット制約が現れる最適化問題として、巡回セールスマン問題(TSP:Traveling Salesman Problem)や配車計画(VPR:Versatile Place and Route)問題といった多くのスケジューリング問題、並びに、ナップサック問題及びビンパッキング問題などがある。
さらに、1ホット制約には、2つの種類が存在する。1つは、1ウェイ1ホット(1W1H:One Way One Hot)制約と呼ばれる制約である。この場合、各変数は制約式の組に1度現れる。この制約を有する最適化問題には、交通量最適化問題やビンパッキング問題がある。
もう1つは、2ウェイ1ホット(2W2H:Two Way One Hot)制約と呼ばれる制約である。この場合、n個の変数をn×nの正方形状に並べた時に各行の和及び各列の和が全て1になる。この制約は、例えば整数1,2,・・・,nといったn個の異なる要素の順列を決める場合の制約と等価である。この制約を有する最適化問題には、巡回セールスマン問題や、配車計画問題や、二次割り当て問題(QAP:Quadratic Assignment Problem)がある。
このような2ウェイ2ホット問題の解法において、定式化を工夫することで、例えば配車計画問題であれば対象とする拠点数を20拠点程度から100拠点程度まで増加させることができた。また、異なるペナルティ係数を有する2つの評価関数のうち一方を最低エネルギー状態の決定処理に使用し、他方を最適化問題の解を探索する処理に使用して、最適化処理を行う技術が提案されている。また、状態変数の値が変化することによる評価関数の値の変化が正に大きいほど、ボルツマン分布よりも遷移確率が大きくなる遷移確率分布に基づいて、マルコフ連鎖モンテカルロ法により状態変数の値を更新する技術が提案されている。
特開2019-121137号公報 特開2020-205049号公報
しかしながら、配車計画問題の中でも大規模又は難易度が高い問題では、定式化を工夫した従来の解法では、準局所解から脱出することが非常に難しく、最適な解を得ることが困難となるおそれがある。この理由としては、定式化を工夫した従来の解法では、状態遷移を行う際に、その時点での状態の狭い近傍が探索対象となることが挙げられる。これは、2ウェイ1ホット制約にしたがった状態遷移は、順列に対する操作としては単純な操作であることが原因である。そこで、広い近傍を探索対象とすることで順最適状態を脱出する方法が考えられるが、遷移させる状態変数を増やした場合、探索すべき次の状態の数が爆発的に増えてしまい計算が困難になる。
この点、異なるペナルティ係数を有する2つの評価関数を用いて最適化処理を行う技術では、準局所解からの脱出の確率は高くなるが、広い近傍を探索対象にして2ウェイ1ホット制約にしたがった状態遷移を行う場合の計算量を減らすことは困難である。また、評価関数の値にしたがい遷移確率が大きくなる遷移確率分布に基づいて状態変数の値を更新する技術でも、広い近傍を探索対象にして2ウェイ1ホット制約にしたがった状態遷移を行う場合の計算量を減らすことは困難である。
開示の技術は、上記に鑑みてなされたものであって、2ウェイ1ホット制約にしたがう問題の解を効率的に得る情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの一つの態様において、探索部は、2ウェイ1ホット制約を含む制約条件が与えられた問題の解を、目的関数に基づく第1行列を重み行列として用いて探索する。遷移部は、前記探索部による探索が特定の状態に達した場合に、前記探索部の探索結果である前記解の一部の値を変更する。重み行列切替部は、前記遷移部により前記解の一部の値の変更が行われた場合に、前記重み行列にペナルティ係数を用いて生成した復帰用行列を前記重み行列として前記探索部に探索を行わせ、前記探索部による探索結果が前記2ウェイ1ホット制約を満たす状態に達すると、前記重み行列を前記第1行列に戻して前記単作部に探索を行わせる。
1つの側面では、本発明は、2ウェイ1ホット制約にしたがう問題の解を効率的に得ることができる。
図1は、2ウェイ1ホット制約を説明するための図である。 図2は、実施例に係る最適化装置が有する最適化部の構成図である。 図3は、実施例で用いられる重み行列を表す図である。 図4は、記憶素子のデータ格納状態の一例を示す図である。 図5は、選択回路の一例を示す図である。 図6は、実施例に係る最適化装置の制御部の詳細を表すブロック図である。 図7は、配車計画問題の一例を示す図である。 図8は、行列の要素に与えられるグループ変数の一例を表す図である。 図9は、実施例に係る最適化装置による最適化処理のフローチャートである。 図10は、2ウェイ1ホット制約にしたがった最適化処理のフローチャートである。 図11は、2ウェイ1ホット制約を満たす状態に戻すための最適化処理のフローチャートである。
以下に、本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。
2ウェイ1ホットイジングモデルに含まれる複数のスピン(スピン数=N)に対応するN個のビットの値を、状態変数であるx~xで表す場合を考える。以下では、xと表される状態変数を、状態変数x又は単にxと表す場合がある。
この場合、例えば以下の数式(1)の各括弧内のグループで値が1になる状態変数の数が1つのみであるときに1ホット制約が満たされる。
Figure 2023107619000002
例えば、あるグループ内にx,x,xの3つの状態変数がある場合、{x,x,x}={1,0,0},{0,1,0},{0,0,1}という状態は、1ホット制約を満たす。一方、{x,x,x}={0,0,0},{1,1,0},{1,0,1},{0,1,1},{1,1,1}という状態は、1ホット制約を満たさない。
さらに、2ウェイ1ホット制約の場合、2つの条件のグループにおいていずれも1ホット制約を満たす、すなわち各グループで値が1になる状態変数の数が1つとなる。2ウェイ1ホット制約では、例えば2つの条件のグループのいずれもがn個の構成要素を有する場合、各グループの構成要をまとめて表す各要素を図1に示すようにn×nの正方形に並べることができる。この場合、各行の和及び各列の和が全て1となる。図1は、2ウェイ1ホット制約を説明するための図である。図1において、m=1,2,・・・,Nであり、N=nである。
この場合、2ウェイ1ホット制約を満たすある状態から、2ウェイ1ホット制約を満たす他の状態に遷移させるためには、最適化装置は、1回の状態更新処理において4ビットの値を変化せることになる。例えば、図1において状態変数xが0の値を有する場合、xを0から1に遷移させると、xと同じ行であり値が1である状態変数xiが1から0に遷移させられる。また、xと同じ列であり値が1である状態変数xが1から0に遷移させられる。さらに、xと同じ列で且つxと同じ行にあるxが0から1に遷移させられる。以下では、ある状態変数の値が0から1又は1から0に遷移させられることを、状態変数の値の反転又はビット反転と呼ぶ。
このように、2ウェイ1ホット制約を満たすある状態から、2ウェイ1ホット制約を満たす他の状態に遷移させるためには、次の数式(2)のように4つの状態変数が遷移する。
Figure 2023107619000003
この場合の重み値を用いたイジング型のエネルギー関数は、例えば次の数式(3)で定義される。
Figure 2023107619000004
右辺の1項目は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組み合わせについて、漏れと重複なく、2つのビットの値(0または1)と重み値との積を積算したものである。xは、インデックス(ビット識別情報)がiのビットの値を表す状態変数、xは、インデックスがjのビットの値を表す状態変数である。以下では、iと表されるインデックスを、インデックスi又は単にiという場合がある。また、Wijは、インデックスがiのビットとjのビットの相互作用の大きさを示す重み値である。なお、Wii=0である。また、Wij=Wjiであることが多い。
右辺の2項目は、全ビットのそれぞれのバイアス値とビットの値との積の総和を求めたものである。bは、インデックスiのビットのバイアス値を示している。
次に、数式(2)において、xの値が変化して1-xとなると、xの増加分は、Δx=(1-x)-x=1-2xと表せる。この値の変化に伴うエネルギー変化(ΔE)は、次の数式(4)で表される。
Figure 2023107619000005
さらに、前述したように2ウェイ1ホット制約を満たすある状態から2ウェイ1ホット制約を満たす他の状態に遷移するには、4ビットの値を変化させることになる。インデックスのうち数式(2)のようにi,j,k,gを変化させたとすると、その場合のエネルギー変化は、数式(3)を用いることで次の数式(5)のように求められる。
Figure 2023107619000006
が1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hはローカルフィールド値(局所場)と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEである。
そして、xがビット反転した時の局所場hの変化分δh (j)は次の数式(6)で表される。
Figure 2023107619000007
すなわち、hを保存するレジスタを用意してxをビット反転させたときに数式(5)で表される変化分を加算することで正しいhが得られる。
が0から1に変化するときのhの変化分は、δh (j)=+Wmjであり、xが1から0に変化するときのhの変化分は、δh (j)=-Wmjである。同様に、xが変化したときのインデックスがmであるビットについてのhの変化分は、δh (i)=Δxmiと表せる。また、xが変化したときのインデックスがmであるビットについてのhの変化分は、δh (k)=Δxmkと表せる。また、xが変化したときのインデックスがmであるビットについてのhの変化分は、δh (k)=Δxmkと表せる。
前述したように、2ウェイ1ホット制約を満たすある状態から2ウェイ1ホット制約を満たす他の状態に遷移するには、4ビットの値を変化させることになる。例えば、状態変数xが0から1に変化し、状態変数xが1から0に変化し、状態変数xが0から1に変化し、状態変数xが1から0に変化した場合、インデックスがmである局所場の変化分は次の数式(7)で表される。
Figure 2023107619000008
ところで、最適化装置が、1回の状態更新処理において4ビットの値を変化させる処理を繰り返して基底状態を探索していく際、各状態更新処理では、エネルギー変化を計算するために、ローカルフィールド値の更新が行われる。例えば、あるグループにおいてインデックスj及びインデックスkのビットの値がともに0から1に変化し、インデックスi及びインデックスgのビットの値がともに1から0に変化する場合、n個のビットについてのh~hは、以下の式(8)に基づいて更新される。
Figure 2023107619000009
数式(8)においてh’~h’は、更新後のローカルフィールド値である。
次に、本実施例に係る最適化装置1の詳細について説明する。図2は、実施例に係る最適化装置が有する最適化部の構成図である。情報処理装置である最適化装置1は、制御部10及び最適化部20を有する。最適化部20は、記憶部21、局所場生成部22、エネルギー変化算出部23、オフセット加算部24、選択回路25及び更新部26を有する。この最適化部20が、「探索部」の一例にあたる。ここでは、いずれもn個の構成要素を有する条件のグループを用いる2ウェイ1ホット制約を有する最適化問題を解く場合で説明する。
記憶部21は、複数の列の経路を有し、さらに、各列に列数と同数の記憶素子210が配置される。例えば、図2では、記憶部21は、N個の列の経路を有する。そして、記憶部21は、各列にN個の記憶素子210を有する。各列の上から同じ段数に配置された記憶素子210は、N個の要素を有する行にあたる。すなわち、記憶部21は、N個のビットのそれぞれの間の相互作用の大きさを示す重み値をN×N行列に並べられた記憶素子210により保持する。重み値の行列である重み行列は、初期設定処理時に、制御部10によって記憶部21のそれぞれの記憶素子210に初期値が格納される。図2では、各行各列それぞれの記憶素子210は、行番号がiで列番号がjの場合、Wijと表される重み値を有する。記憶部21は、たとえば、レジスタやSRAM(Static Random Access Memory)などを用いて実現される。
ここで、記憶部21の記憶素子210に格納される重み行列及び重み値について説明する。図3は、実施例で用いられる重み行列を表す図である。また、図4は、記憶素子のデータ格納状態の一例を示す図である。
本実施例では、重み行列は、状態変数が2ウェイ1ホップ制約を満たしつつ最適化処理を行うための最適化行列31と、2ウェイ1ホップ制約を満たさない状態変数を2ウェイ1ホップ制約を満たす状態に戻すための復帰用行列32との2つが用いられる。この最適化行列31が、「第1行列」の一例にあたる。ここで、最適化行列31を用いて状態変数が2ウェイ1ホップ制約を満たしつつ最適化処理を行うモードを最適化モードと呼ぶ。また、復帰用行列32を用いて2ウェイ1ホップ制約を満たさない状態変数を2ウェイ1ホップ制約を満たす状態に戻すモードを復帰モードと呼ぶ。
最適化行列31は、図3に示すような0行列とディスタンス行列Dとを組み合わせた行列である。ディスタンス行列Dは、2拠点間の距離に応じたコストを与える行列である。ディスタンス行列Dは、例えば、行列33で表される。行列33は、最適化行列31における1行2列目のディスタンス行列Dにあたる。
また、復帰用行列32は、図3に示すように、ペナルティ行列Pと修正ディスタンス行列D’とを組み合わせた行列である。ペナルティ行列Pは、2ウェイ1ホット制約における一方の条件に違反する状態変数にペナルティ係数pを与える行列であり、行列35で表される。また、修正ディスタンス行列D’は、2ウェイ1ホット制約における他方の条件に違反する状態変数にペナルティを与える行列であり、ディスタンス行列Dにペナルティ係数pを対角成分とする対角行列34を加算した行列である。例えば、状態変数を行列として並べ、行に並んだ要素で時間経過が表わされ、列に並んだ要素で拠点が表される場合で説明する。この場合、ペナルティ行列Pは、時刻T1に拠点B1にいて時刻T1に拠点B2に移るなど、同時刻に2つ以上の異なる拠点にいてはいけないという条件に違反する状態変数にペナルティを与える行列である。また、修正ディスタンス行列D’は、時刻T1及び時刻T2に拠点B1にいるなど、1つの拠点に寄る回数は1回という条件に違反する状態変数にペナルティを与え、それ以外には重み値を与える行列である。
さらに、各記憶素子210に格納される重み値について説明する。例えば、記憶素子210には、図4に示したデータ211が格納される。データ211には、重み値212とフラグ213とが含まれる。
ディスタンス行列Dのうち対角成分以外の要素にあたる場所に位置する重み値212としては、その要素により表される2拠点間の距離に対応したコストを表す値が格納される。これに対して、ディスタンス行列Dの対角成分及びペナルティ行列Pの対角成分以外の要素にあたる場所に位置する重み値212としては、0及びペナルティ係数pが格納される。
また、フラグ213は、重み値212がペナルティ係数pであるか2つの拠点間の距離に応じたコストであるかを示す情報が格納される。ここでは、フラグ213の値が0の場合に重み値212がコストであることを示し、フラグ213の値が1の場合に重み値212がペナルティ係数であることを示す。すなわち、ディスタンス行列Dのうち対角成分以外の要素にあたる場所に位置する重み値212には、値が0のフラグ213が付加される。これに対して、ディスタンス行列Dの対角成分及びペナルティ行列Pの対角成分以外の要素にあたる場所に位置する重み値212には、値が1のフラグ213が付加される。
さらに、記憶素子210は、選択回路214を有する。選択回路214は記憶素子210が保持するデータ211の入力を受ける。また、選択回路214は、最適化装置1の動作モードが最適化モードか復帰モードかを示す情報の入力を制御部10から受ける。そして、選択回路214は、データ211のフラグ213を確認して重み値212がペナルティ係数pかコストかを判定する。重み値212がコストの場合、選択回路214は、重み値212の値を常にそのまま出力する。これに対して、重み値212がペナルティ係数pの場合、選択回路214は、最適化装置1が最適化モードで動作する場合には0を出力し、最適化装置1が復帰モードで動作する場合にはペナルティ係数を出力する。
図1に戻って記憶部21の説明を続ける。選択回路25により値を反転させる状態変数が選択されると、記憶部21の各記憶素子210に格納された重み値のうち選択された状態変数に対応する重みの値が、反転後の値に書き換えられる。例えば、反転させる状態変数としてxが選択された場合、選択回路25からインデックスjが入力され、Wmjとして表される重み値が書き換えられる。
ここで、2ウェイ1ホット制約を受けて最適化モードで動作する場合は、4ビットまとめて反転させられる。そのため、最適化モードの場合、記憶部21の各記憶素子210に格納された重み値のうち、選択回路25から指定されたインデックスに対応する他の3つのビットを示すインデックスで識別される記憶素子210が保持する重み値も書き換えられる。例えば、図1に示した行列の場合、インデックスjに対応する他の3つのビットを示すインデックスはi,k,gである。
局所場生成部22は、記憶部21の行列に並べられた記憶素子210の各列に対応するように配置された複数の局所場生成回路220を有する。各局所場生成回路220は、対応する列に並べられた各記憶素子210が有する重み値を取得する。そして、各局所場生成回路220は、取得した重み値を用いて局所場の値であるローカルフィールド値を生成する。
図1の例では、局所場生成部22は、N個のビットのそれぞれについてのローカルフィールド値であるh,h,…,hを生成する局所場生成回路220を有する。局所場生成回路220のそれぞれは、図示を省略しているが保持部(たとえば、レジスタ)を有し、それぞれが保持するローカルフィールド値であるh~hの保持及び更新を行う。
例えば、状態変数xが更新された場合、各局所場生成回路220は、それぞれに対応する重み値Wj1,Wj2,~,WjNを保持する局所場に加算又は減算することで局所場を更新する。具体的には、i行に対応する局所場生成回路220は、状態変数xが0から1に遷移した場合は、重み値Wjiを局所場hに加算し、状態変数xが1から0に遷移した場合は、重み値Wjiを局所場hから減算する。ここで、上述したように2ウェイ1ホットの場合4ビットが反転するので、局所場生成回路220は、数式(7)を自己が保持する局所場に加算又は減算することで局所場を更新する。
~hの初期値は、例えば、バイアス値b~bであり、初期設定処理時に、制御部10により設定される。局所場生成回路220は、たとえば、レジスタのほかに、加算器または減算器を用いて実現される。
さらに、局所場生成部22は、動作モードが最適化モードから復帰モードへ変更された場合、変更時点で局所場であるローカルフィールド値の再計算を各局所場生成回路220に行わせる。これは、動作モードが最適化モードから復帰モードへ変更される場合、1の値を有する適当な状態変数が制御部10により0に強制的に遷移させられるため、2ウェイ1ホット制約の制約違反が発生するとともに、局所場が大きく変化するためである。ただしこの場合、局所場生成部22は、局所場の計算を始めからやり直させるわけではなく、2ウェイ1ホット制約の制約違反が発生した行及び列に含まれる変数の局所場にペナルティ係数pの2倍を足し込ませることで再計算を行わせる。
エネルギー変化算出部23は、局所場生成部22が生成したローカルフィールド値に基づいて、エネルギー変化を計算する。図1の例では、エネルギー変化算出部23は、記憶部21の記憶素子210の列に対応するN個のビットのそれぞれが変化する場合のエネルギー変化であるΔE,ΔE,…,ΔEをそれぞれ算出するエネルギー変化算出回路230を有する。図2では、一例として、局所場hを保持する局所場生成回路220から各エネルギー変化算出回路230へ延びる経路を図示したが、他の局所場生成回路220からも全てのエネルギー変化算出回路230へ経路が延びる。
エネルギー変化算出回路230は、数式(5)を用いてエネルギー変化量を算出する。具体には、ΔEは、数式(2)のように4つの状態変数が遷移した場合のエネルギー変化量である。その後、各エネルギー変化算出回路230は、算出したエネルギー変化量を選択回路25へ出力する。
オフセット加算部24は、各エネルギー変化算出回路230から出力されるエネルギー変化量を監視する。そして、各エネルギー変化算出回路230から出力されるエネルギー変化量が全て正の場合、オフセット加算部24は、各値にオフセットを加算する。オフセットは負の値であり、オフセット加算部24は、エネルギー変化量が負の値、すなわちエネルギーが下がる場合のエネルギー変化量が現れるように調整する。
選択回路25は、各エネルギー変化算出回路230から出力されるエネルギー変化量の入力を受ける。ここで、エネルギー変化量が全て正だった場合には、選択回路25は、オフセット加算部24によりオフセットが加えられた値の入力を受ける。
選択回路25は、熱励起エネルギーと、複数のエネルギー変化算出回路230がそれぞれ出力するエネルギー変化量との大小関係に基づいて、値の更新を許容する1つを識別するインデックスを出力する。熱励起エネルギーは、乱数と、制御部10から入力される温度パラメータとに基づいて決定される。最適化装置1においてシミュレーテッド・アニーリングが行われる場合、温度パラメータは、例えば、制御部10によって、イジングモデルの状態を更新する処理が所定回数繰り返される毎に、値が小さくなるように制御される。また、エネルギーの減少する方向への状態変化を選ぶこともできるが、この場合局所最小値で停止する。そこで、エネルギーが増加する変化も確率的に許容する選択が行われる。
図5は、選択回路の一例を示す図である。図5の選択回路25は、並列指向で更新ビットの候補を選ぶ回路である。入力端子251は、エネルギー変化算出回路230から出力されたエネルギー変化量に対応するインデックスの値の入力を受ける端子である。各端子は2つずつセレクタ252に接続される。さらに、セレクタ252からの出力は2つずつ次の段のセレクタ252に接続される。
選択回路25は、エネルギー変化算出回路230から入力されたエネルギー変化量は制御部10から入力される温度パラメータと比較して、状態変数の遷移を受け入れ可能か否かを判定する。例えば、選択回路25は、エネルギー変化量が温度パラメータから算出される所定値未満の場合に状態変数の遷移を受け入れ可能と判定する。そして、選択回路25は、状態変数の遷移を受け入れ可能と判定したエネルギー変化に対応するインデックスに対して更新可能フラグを設定する。そして、選択回路25は、入力端子251のそれぞれに各エネルギー変化に対応するインデックスを入力して、セレクタ252によりトーナメントを行う。
セレクタ252は、例えば、図5の紙面に向かって右側の回路により実現される。この回路を有するセレクタ252は、2つのステータス01及び02の入力を受け、それぞれからフラグF1及びF2、並びに、インデックス#1及び#2を取得する。そして、セレクタ252は、乱数の入力を受けて、更新可能フラグの立ったインデックス01又は02のうちいずれか1つを選択する。セレクタ252は、選択した方の0又は1を示すエントリ番号をインデックスの上位に付け加える。そして、セレクタ252は、選択したインデックスを次の段のセレクタ252へ出力する。最終段のセレクタ252が選択したインデックスが、選択回路25により選ばれたビットを示す。この選択回路25により選択されたインデックスの情報は、更新部26へ出力されるとともに、記憶部21に送られる。これにより、インデックスで識別される記憶素子210及び対応する他のビットを表すインデックスで識別される記憶素子210が保持する重み値が更新される。
更新部26は、それぞれが状態変数を表すN個のビットの値(x~x)を保持する記憶部260を有する。記憶部260は、たとえば、レジスタやSRAMなどを用いて実現される。更新部26は、選択回路25から入力されたインデックスによって識別されるビットの値を0から1に更新する。さらに、更新部26は、選択回路25から入力されたインデックスに対応する他の3ビットの値を更新する。例えば、図1に示す状態変数xを示すインデックスjが選択回路25から入力された場合、更新部26は、インデックスi,k,gで識別されるビットの値を更新する。この場合、更新部26は、数式(2)で示すように各値を更新する。
更新部26は、状態変数の更新完了の通知を制御部10へ出力する。さらに、更新部26は、更新後の各状態変数の値も制御部10へ出力する。
次に、制御部10について説明する。図6は、実施例に係る最適化装置の制御部の詳細を表すブロック図である。制御部10は、図6に示すように、上限算出部11、目的関数生成部12、初期化実行部13、候補決定部14、温度管理部15、更新制御部16、通知部17、強制遷移部18及び重み行列切替部19を有する。制御部10は、例えば、FPGA(Field Programmable Gate Array)により実現される。より具体的には、プログラミングされたFPGAに含まれる演算器及び記憶部により上限算出部11、目的関数生成部12、初期化実行部13、候補決定部14、温度管理部15、更新制御部16、通知部17、強制遷移部18及び重み行列切替部19の機能が実現される。
ここでは、最適化装置1が配車計画問題(CVRP)を解く場合で説明する。図7は、配車計画問題の一例を示す図である。配車計画問題では、図7に示すように、集積所101及び荷物の配送先となる拠点102の位置が決められる。また、集積所101及び各拠点102の相互間の距離及び車の積載上限値が与えられる。さらに、各拠点102へ配送する荷物の量にあたる需要量が与えられる。そして、集積所101から出発して集積所101に帰着する複数台の車で各拠点102に物資を運ぶ。以上の条件で、全車が走行した総距離が最小となるルートを求める問題が、配車計画問題である。図5では、4台の車を用いて4つのルートで物資が運ばれる場合の配車計画問題を表す。
初期化実行部13は、解答する配車計画問題の条件の入力を受ける。この配車計画問題の条件である問題インスタンスは、配送先の拠点102の数、集積所101及び拠点102のそれぞれの間の距離、ルートの数などを含む。この入力された条件に応じた各要素は、いずれのルートに含まれるかという条件のグループを示す構成要件と、どの時点で配送を行う拠点化を示す条件のグループを示す構成要件とを示す行列を用いて表される。いずれのルートに含まれるかという条件のグループを示す構成要件及びどの時点で配送を行う拠点化を示す条件のグループを示す構成要件が、「2つのグループのそれぞれに含まれる所定数の構成要素」の一例にあたる。初期化実行部13は、配車計画問題の条件を上限算出部11へ出力する。
その後、初期化実行部13は、2ウェイ1ホット制約を満たす状態変数の各ビットを表す行列の情報及び目的関数の入力を目的関数生成部12から受ける。そして、初期化実行部13は、行列の要素に合わせて記憶部21の最適化に使用する記憶素子210を選択する。次に、初期化実行部13は、目的関数から各状態変数に対応する重み値を取得して、各記憶素子210に対応する重み値を設定する。
次に、初期化実行部13は、状態変数x~xを全て0に設定した後に、2ウェイ1ホットの制約を満たすように、状態変数x~xを表す各ビットを0又は1に設定する。そして、初期化実行部13は、状態変数x~xを表す各ビットの値を最適化部20へ出力する。これにより、更新部26が有する記憶部260に初期状態の各ビットの値が記憶されるとともに、各ビットの状態に応じて、局所場生成部22により各局所場であるh~hが生成され保持される。
また、図8は、行列の要素に与えられるグループ変数の一例を表す図である。初期化実行部13は、行列における同じ行の要素を同じ行グループとして行グループ番号を割り当て、同じ列の要素を同じ列グループとして列グループ番号を割り当てる。そして、初期化実行部13は、各要素を表すインデックスと行グループ番号及び列グループ番号とを対応付ける。
そして、初期化実行部13は、各要素を表すインデックスに対応付けられたグループ変数の情報を候補決定部14へ出力する。さらに、初期化実行部13は、初期温度の設定を温度管理部15に通知する。
上限算出部11は、拠点102の需要量を小さい順に並べる。次に、上限算出部11は、M番目のルートの最大拠点数を算出する際に、並べた需要量の先頭からM-1番目までの拠点数を含めた累積需要量を計算する。次に、上限算出部11は、「M×車の積載上限値」を越えない最小の拠点数を特定する。そして、上限算出部11は、特定した拠点数をMで割った時の商をN番目のルートの最大拠点数とする。これは、需要量を小さい順に並べたことにより需要量は対象減少列となり、M番目のルートが「M×車の積載上限値」を越えない最小の拠点数をMで割った数よりも大きくなることは矛盾であることを理由とする。上限算出部11は、Mを1から車の台数の上限まで変化させて1番目から車の台数の上限番目までの各ルートの最大拠点数を求める。その後、上限算出部11は、各ルートの最大拠点数の情報を目的関数生成部12へ出力する。
目的関数生成部12は、各ルートの最大拠点数の情報の入力を上限算出部11から受ける。次に、目的関数生成部12は、各ルートの最大拠点数の総和と拠点102の数との差分を算出する。そして、目的関数生成部12は、算出した差分の値を冗長拠点(ダミーデポ)の数とする。次に、目的関数生成部12は、ルート毎の最大拠点数までを順番に並べた行と、冗長拠点を含む拠点を並べた行とで表現される行列を作成する。すなわち、行が延びる方向を時間経過とすると、この行列はどの時点で実際の拠点102に冗長拠点を加えた拡大拠点のうちどの拠点を車が訪れるかを表す。各行がいずれのルートに踏まれる拠点かを示す条件のグループであり、各列がどの時点で配送を行う拠点かを示す条件のグループである。
そして、目的関数生成部12は、拠点102にi=0,1,2,・・・と番号を振り、時刻tにインデックスiの拠点102に車がいればxitを1とし、車がいなければxitを0として、状態変数を表すビットを設定する。
この行列は、1行目から第1ルートの最大拠点数の行までが第1ルートを走行する車の位置を表し、その次の行から第2ルートの最大拠点数の行までが第2ルートを走行する車の位置を表す。このように順番にルートの番号を増やしていき、この行列の最終行から第Nルートの最大拠点数前までが第Nルートを走行する車の位置を表す。この行列は、行の数と列の数が一致しており、且つ、「各行、各列の1の数は1個」という2ウェイ1ホットの制約を満たす。
その上で、目的関数生成部12は、目的関数を次の数式(9)と定義する。
Figure 2023107619000010
E(x,y)は、エネルギーを表す。そして、C(x)は、コストの総和を表す。また、P(x)は、冗長拠点の制約を表す。また、P(x,y)は、スラック変数yの不等式制約を表す。
目的関数生成部12は、生成した行列の情報及びエネルギー関数を初期化実行部13へ出力する。
温度管理部15は、初期温度設定の指示を初期化実行部13から受ける。そして、温度管理部15は、高い温度である初期温度を温度パラメータとして設定する。そして、温度管理部15は、温度パラメータを最適化部20へ通知する。その後、温度管理部15は、更新制御部16からの温度低下の指示を受けると、予め指定された温度スケジュールにしたがって温度パラメータの値を小さくしていく。温度管理部15は、温度パラメータを変更する毎に変更後の温度パラメータを最適化部20へ通知する。
候補決定部14は、各インデックスを表すグループ変数の情報の入力を初期化実行部13から受ける。また、候補決定部14は、最適化装置1の動作モードの入力を更新制御部16から受ける。そして、候補決定部14は、動作モードに合わせて遷移の候補となる反転させる状態変数を表すインデックスを決定して、最適化部20に通知する。以下に、遷移の候補となる反転させる状態変数の選択方法について説明する。
動作モードが最適化モードの場合について説明する。候補決定部14は、グループ変数の情報を用いて、値を反転させる状態変数を表すインデックスを選択する。例えば、候補決定部14は、図1に示した行列における状態変数xを示すインデックスjを選択する。そして、候補決定部14は、選択したインデックスに応じて2ウェイ1ホット制約から決まる他の3つのビットを示すインデックスを特定する。例えば、候補決定部14は、図1に示した行列における状態変数xを示すインデックスjを最初に選択した場合、他の3つのインデックスとして、i,k,gを選択する。次に、候補決定部14は、選択したインデックスに対応する状態変数を、値を反転させる候補とすることを決定する。そして、候補決定部14は、状態変数の値を反転させる候補とすることを決定したインデックスを最適化部20に通知する。
候補決定部14は、1からNまで1つずつ反転させるインデックスjを選択することで、全てのインデックスについて、各インデックスにより示される状態変数をビット反転の候補とするか否かを判定して、最適化部20へ通知する。
次に、動作モードが復帰モードの場合について説明する。この場合、2ウェイ1ホット制約を受けないため、候補決定部14は、グループ変数の情報を用いて、値を反転させる状態変数を表すインデックスを1から順にNまで選択する。そして、候補決定部14は、選択毎に、状態変数の値を反転させる候補とすることを決定したインデックスを最適化部20に通知する。
その後、候補決定部14は、次の状態変数xの選択の指示を更新制御部16から受けると、動作モードに合わせて再び1から順にNまでのインデックスの選択を行い、それぞれの状態変数をビット反転の候補とするか否かを最適化部20へ通知する。
更新制御部16は、状態変数の更新完了の通知を最適化部20から受ける。この時、更新制御部16は、各状態変数の値の入力も最適化部20から受ける。そして、更新制御部16は、更新後の状態変数の値の情報を順次蓄積し、直近の情報を用いて局所解に陥ったか否かを判定する。
局所解に陥っている場合、更新制御部16は、局所解からの脱出させるために、強制遷移処理の実行を強制遷移部18に指示する。さらに、更新制御部16は、動作モードの最適化モードから復帰モードへの変更を候補決定部14、重み行列切替部19及び最適化部20に通知する。
復帰モードへの遷移の後、更新制御部16は、状態変数の更新完了の通知を最適化部20から受けるときに、各状態変数の値も最適化部20から取得する。そして、更新制御部16は、状態変数の値が2ウェイ1ホット制約を満たす状態か否かを判定する。2ウェイ1ホット制約を満たさない状態であれば、更新制御部16は、復帰モードでの動作を継続させ、2ウェイ1ホット制約を満たす状態に復旧するための状態遷移を繰り返させる。これに対して、2ウェイ1ホット制約を満たす状態の場合、更新制御部16は、最適化モードへの復旧を決定する。そして、更新制御部16は、復帰モードから最適化モードへの変更を候補決定部14、重み行列切替部19及び最適化部20に通知する。
一方、局所解に陥っていなければ、更新制御部16は、同じ温度設定で規程回数の状態変数の選択を行ったか否かを判定する。同じ温度設定での規程回数の状態変数の選択を行っていない場合、更新制御部16は、次の状態変数xの選択を候補決定部14に指示する。
これに対して、同じ温度設定での規程回数の状態変数の選択が完了した場合、更新制御部16は、温度を所定回数下げたか否かを判定する。温度を下げた回数が所定回数に達していない場合、更新制御部16は、温度低下を温度管理部15に指示するとともに、次の状態変数xの選択を候補決定部14に指示する。
これに対して、温度を下げた回数が所定回数に達した場合、更新制御部16は、最適化処理の終了を決定する。そして、更新制御部16は、最適化部20の更新部26が有する記憶部260に格納された各状態変数(x~x)を表すN=n個のビットの値を取得する。そして、更新制御部16は、取得した各状態変数(x~x)を表すN=n個のビットの値の中から冗長拠点を表す状態変数のビット値を削除する。そして、更新制御部16は、実際の拠点102を巡回する最適化されたルートを示す情報を通知部17へ出力する。
ここで、更新制御部16は、本実施例では局所解に陥った場合に強制遷移処理の実行を決定したが、強制遷移処理の実行の機会はこれに限らない。例えば、更新制御部16は、100回に1回や1万回に1回といったように予め決められた回数のイテレーションが終了したときに、強制遷移処理の実行を決定してもよい。また、更新制御部16は、選択回路25によりx~xの遷移が全て否決されたときに、強制遷移処理の実行を決定してもよい。他にも、更新制御部16は、エネルギーの変化が小さい状態が所定回数続いた場合に、強制遷移処理の実行を決定してもよい。
通知部17は、実際の拠点102を巡回する最適化されたルートを示す情報の入力を更新制御部16から受ける。そして、通知部17は、取得した実際の拠点102を巡回する最適化されたルートを示す情報から最適なルートを求めて、求めた最適なルートを利用者が使用する端末装置(不図示)などに送信することで利用者に通知する。
強制遷移部18は、局所解に陥った場合に局所解からの脱出のための強制遷移処理の実行の指示を更新制御部16から受ける。ここで、局所解に陥った場合が、「探索が特定の状態に達した場合」の一例にあたる。そして、強制遷移部18は、予め決められたアルゴリズムにしたがい値を強制的に遷移させる行グループ及び列グループを選択する。例えば、強制遷移部18は、各拠点を巡回するルートにおいて、異なるルート同士が接近している場所や重なった場所における拠点の巡回を示す情報を含む行グループ及び列グループを選択する。図7の場合、強制遷移部18は、領域121及び122を異なるルート同士が接近している場所や重なった場所として、領域121及び122における拠点の巡回を示す情報を含む行グループ及び列グループを選択する。
その後、強制遷移部18は、選択した行グループ及び列グループに含まれる状態変数のうち値が1の状態変数の値を強制的に0に遷移させる。これにより、状態変数は、現在の状態から大きく変化した状態に遷移するとともに、2ウェイ1ホット制約に対して制約違反の状態となる。
ここで、本実施例に係る強制遷移部18は、所定のアルゴリズムを用いて強制的に状態変数の値を遷移させる行グループ及び列グループを選択したが、選択方法はこれに限らない。例えば、強制遷移部18は、ランダムに強制的に遷移させる行グループ及び列グループを選択してもよい。さらに、強制遷移部18は、強制的に遷移させる行グループ及び列グループの指定を図示しない管理者端末などから受けてもよい。また、最適化の段階に応じて強制的に遷移させる行グループ及び列グループを決定することがよい場合も考えられる。その場合、強制遷移部18は、その時点での状態変数を最適化部20の更新部26から取得して外部の装置へ出力し、外部の装置に解析を行わせていずれのビットを変更することが適切かを計算させて、その計算結果に基づいて選択を行ってもよい。この強制遷移部18が、「遷移部」の一例にあたる。
重み行列切替部19は、動作モードの最適化モードから復帰モードへの変更の通知を更新制御部16から受ける。そして、重み行列切替部19は、最適化装置1の動作が復帰モードであることを示す信号を最適化部20の記憶部21及び局所場生成部22に対して送信する。これにより、記憶部21の各記憶素子210の中でペナルティ係数pを保持する記憶素子210からペナルティ係数pが出力されるようになる。すなわち、図3の復帰用行列32が局所場の計算に用いられるようになる。また、局所場生成部22の各局所場生成回路220は、局所場を表すローカルフィールド値を再計算する。
その後、状態変数が2ウェイ1ホット制約を満たす状態に達すると、重み行列切替部19は、動作モードの復帰モードから最適化モードへの変更の通知を更新制御部16から受ける。そして、重み行列切替部19は、最適化装置1の動作が最適化モードであることを示す信号を最適化部20の記憶部21に対して送信する。これにより、記憶部21の各記憶素子210の中でペナルティ係数pを保持する記憶素子210は、0を出力する状態に戻る。すなわち、最適化行列31が局所場の計算に用いられる状態に戻る。
図9は、実施例に係る最適化装置による最適化処理のフローチャートである。次に、図7を参照して、実施例に係る最適化装置1による最適化処理の流を説明する。この最適化処理は、最適化装置1において実行される情報処理プログラムにより実現される。
初期化実行部13は、配車計画問題の条件の入力を受ける。そして、初期化実行部13は、取得した配車計画問題の条件を上限算出部11へ出力する。上限算出部11は、需要量が小さい順に配送先となる拠点102を並べる。次に、上限算出部11は、需要量が小さい順に並べられた拠点102を先頭から順に選択して選択した拠点102までの累積需要量と車の積載上限値とを用いて各ルートの最大拠点数を算出する。目的関数生成部12は、最大拠点数を用いて冗長拠点を設定し、冗長拠点と実際の拠点102とを含む拡大拠点について含まれるルートと配送順とを示す行列を生成する。そして、目的関数生成部12は、生成した行列の各要素を表すビットを与えて、それらのビットを用いて目的関数を生成する。初期化実行部13は、目的関数生成部12により生成された行列及び目的関数を取得する。次に、初期化実行部13は、以下に示すグループインデックスの設定及び初期化プロセスを実行する(ステップS1)。
具体的には、初期化実行部13は、取得した行列の行毎の各要素に各行を示す行グループ番号を与え、且つ、列毎の各要素に各列を示す列グループ番号を与える。そして、初期化実行部13は、各要素を表すインデックスと行グループ番号及び列グループ番号とを対応付ける。さらに、初期化実行部13は、各インデックスが冗長拠点への配送を示すか否かにより冗長変数グループに属するか否かを表す情報を設定する。
また、初期化実行部13は、行列の各要素に応じた最適化部20の記憶部21が有する記憶素子210を確保し、目的関数から取得したビット毎の重み値を格納させる。さらに、初期化実行部13は、2ウェイ1ホットを満たすように各ビットの初期値を設定して最適化部20に通知する。これにより、最適化部20は、局所場生成部22は局所場であるh~hを計算して保持するとともに、更新部26が有する記憶部260に各ビットの初期値を格納する。
温度管理部15は、初期化実行部13からの温度の設定の指示を受ける。そして、温度管理部15は、温度設定を未だ行っていない場合、高い温度である初期温度を最適化部20に通知して初期温度を設定する。また、既に温度設定済みの場合、温度管理部15は、その時点で設定済みの設定温度から予め指定された温度スケジュールにしたがって温度を下げる。そして、温度管理部15は、温度を下げた新たな設定温度を最適化部20に通知して温度を設定する(ステップS2)。
制御部10及び最適化部20は、2ウェイ1ホット制約にしたがった最適化処理を実行する(ステップS3)。
その後、制御部10の更新制御部16は、最適化部20における状態変数及び局所場の更新が完了すると、更新された各状態変数の値を基に局所解に陥ったか否かを判定する(ステップS4)。
局所解に陥った場合(ステップS4:肯定)、更新制御部16は、局所解からの脱出のための強制遷移処理の実行を強制遷移部18に指示する。強制遷移部18は、決められたアルゴリズムにしたがって強制的に値を遷移させる行グループ及び列グループを選択する。そして、強制遷移部18は選択した行グループ及び列グループにおける1の値を有する状態変数の値を0に遷移させる(ステップS5)。
また、更新制御部16は、動作モードの復帰モードへの変更を記憶部21及び局所場生成部22に通知する。そして、記憶部21の記憶素子210が有する選択回路214に復帰モードを示す信号が入力される。選択回路214は、フラグ213を用いて入力された重み値がペナルティ係数pであるか否かを判定し、重み値がペナルティ係数pである場合、入力されたペナルティ係数pを表す重み値を出力する。この時、重み値がコストである場合も、選択回路214は、コストを表す重み値を出力する。これにより、記憶部21は、使用される重み行列を復帰用行列32に変更する(ステップS6)。
局所場生成部22は、動作モードの復帰モードへの変更の通知を更新制御部16から受けて、いくつかの状態変数の値が強制的に1から0に遷移された後の局所場の再計算を各局所場生成回路220に行わせる(ステップS7)。
そして、制御部10及び最適化部20は、2ウェイ1ホット制約を満たす状態に戻すための最適化処理を実行する(ステップS8)。
その後、制御部10の更新制御部16は、最適化部20における状態変数及び局所場の更新が完了すると、更新された各状態変数の値を基に2ウェイ1ホット制約を満たす状態に戻ったか否かを判定する(ステップS9)。
状態変数が2ウェイ1ホット制約を満たす状態に戻っていない場合(ステップS9:否定)、最適化処理は、ステップS8を繰り返す。
これに対して、状態変数が2ウェイ1ホット制約を満たす状態に戻った場合(ステップS9:肯定)、更新制御部16は、動作モードの最適化モードへの復旧を記憶部21に通知する。そして、記憶部21の記憶素子210が有する選択回路214に最適化モードを示す信号が入力される。選択回路214は、フラグ213を用いて入力された重み値がペナルティ係数pであるか否かを判定し、重み値がペナルティ係数pである場合、重み値として0を出力する。この時、重み値がコストであれば、選択回路214は、コストを表す重み値を出力する。これにより、記憶部21は、使用される重み行列を最適化行列31に戻す(ステップS10)。その後、最適化処理は、ステップS3へ戻る。
一方、局所解に陥っていない場合(ステップS4:否定)、更新制御部16は、状態変数の更新が規程回数終了したか否かを判定する(ステップS11)。状態変数の更新が規程回数に達していない場合(ステップS11:否定)、最適化処理は、ステップS3に戻る。
これに対して、状態変数の更新が規程回数終了した場合(ステップS11:肯定)、更新制御部16は、温度を規程回数下げたか否かを判定する(ステップS12)。
温度を規程回数下げていない場合(ステップS12:否定)、最適化処理は、ステップS2へ戻る。これに対して、温度を規程回数下げた場合(ステップS12:肯定)、最適化装置1は、最適化処理を終了する。
図10は、2ウェイ1ホット制約にしたがった最適化処理のフローチャートである。次に、図10を参照して、2ウェイ1ホット制約にしたがった最適化処理の流れを説明する。図10に示した各処理は、図9におけるステップS3で実行される処理の一例にあたる。
候補決定部14は、各状態変数を表すインデックスに対応付けられたグループ変数の情報を初期化実行部13から取得する。次に、候補決定部14は、反転させる状態変数を表すインデックスとして図1に示した行列の要素のうちxに対応するインデックスjを選択する。次に、候補決定部14は、選択したインデックスjに応じて2ウェイ1ホット制約から決まる他の3つのビットを示すインデックスとして、図1に示した行列の状態変数x,x,xに対応するインデックスであるi,k,gを特定する(ステップS101)。候補決定部14は、インデックスを1からNまで順番にインデックスjとして選択する。
候補決定部14は、インデックスi,j,k,gを最適化部20に通知する。最適化部20は、更新部26が有する記憶部260に保持されたxの値を読み出す。そして、最適化部20は、xの値の遷移が0から1か1から0かをエネルギー変化算出部23に通知する。エネルギー変化算出部23は、jに対応した局所場であるhを読み出し、さらに、jに対応するi,k,gを特定し、h,h,hを保持する局所場生成回路220のそれぞれからh,h,hを読み出す(ステップS102)。
次に、エネルギー変化算出部23は、各jについてエネルギー変化量であるΔE(ΔE,ΔE,・・・,ΔE)を計算する(ステップS103)。その後、エネルギー変化算出部23は、算出したエネルギー変化量の情報を出力する。
オフセット加算部24は、エネルギー変化算出部23から出力されたエネルギー変化量が全て正の場合、各エネルギー変化量にオフセットを加算する(ステップS104)。
選択回路25は、エネルギー変化算出部23から出力された各エネルギー変化量の情報を取得する。そして、選択回路25は、制御部10の温度管理部15から取得した設定温度と比較して値の反転を受け入れ可能な状態変数を示すインデックスに更新可能フラグを設定する。その後、選択回路25は、更新可能フラグが付加されたインデックスの中から1つのインデックスqを選択する(ステップS105)。
最適化部20は、各インデックスに割り当てられたグループ変数の情報を制御部10から取得する。そして、最適化部20は、選択回路25により選択されたインデックスqが示す状態変数xの値の反転に対応して2ウェイ1ホット制約を満たして値が反転する状態変数x,x,xを示すインデックスp,r,sを特定する。そして、最適化部20は、インデックスp,r,sを表すグループ変数を特定する(ステップS106)。
記憶部21は値が更新される状態変数を示すインデックスであるp、q、r、sの情報が入力され、そのインデックスに対応した重み値が局所場生成部22の各局所場生成回路220へ出力される。各局所場生成回路220は、p、q、r、sの更新に対応した重み値の入力を受けて、保持する局所場を更新する(ステップS107)。
さらに、記憶部21は、インデックスp、q、r、sに対応する記憶素子210に格納された重み値を更新する(ステップS108)。
更新部26は、値が更新される状態変数を示すインデックスであるp、q、r、sの情報が入力され、記憶部260が保持する状態変数の中から取得したインデックスで示される状態変数であるx,x,x,xを特定する。そして、更新部26は、特定した状態変数であるx,x,x,xの値を反転させて更新する(ステップS109)。
その後、更新部26は、記憶部260に更新後の全ての状態変数を書き込む。また、各局所場生成回路220は、保持するレジスタに更新後の局所場を書き込む(ステップS110)。
図11は、2ウェイ1ホット制約を満たす状態に戻すための最適化処理のフローチャートである。次に、図11を参照して、2ウェイ1ホット制約を満たす状態に戻すための最適化処理の流れを説明する。図11に示した各処理は、図9におけるステップS8で実行される処理の一例にあたる。
候補決定部14は、各状態変数を表すインデックスに対応付けられたグループ変数の情報を初期化実行部13から取得する。次に、候補決定部14は、反転させる状態変数を表すインデックスとして図1に示した行列の要素のうちxに対応するインデックスjを選択する(ステップS201)。候補決定部14は、インデックス1からインデックスNまで順番にインデックスjとして選択する。
候補決定部14は、インデックスjを最適化部20に通知する。最適化部20は、更新部26が有する記憶部260に保持されたxの値を読み出す。そして、最適化部20は、xの値の遷移が0から1か1から0かをエネルギー変化算出部23に通知する。エネルギー変化算出部23は、jに対応した局所場であるhを読み出す。次に、エネルギー変化算出部23は、各jについてエネルギー変化量であるΔE(ΔE,ΔE,・・・,ΔE)を計算する(ステップS202)。その後、エネルギー変化算出部23は、算出したエネルギー変化量の情報を出力する。
オフセット加算部24は、エネルギー変化算出部23から出力されたエネルギー変化量が全て正の場合、各エネルギー変化量にオフセットを加算する(ステップS203)。
選択回路25は、エネルギー変化算出部23から出力された各エネルギー変化量の情報を取得する。そして、選択回路25は、制御部10の温度管理部15から取得した設定温度と比較して値の反転を受け入れ可能な状態変数を示すインデックスに更新可能フラグを設定する。その後、選択回路25は、更新可能フラグが付加されたインデックスの中から1つのインデックスqを更新するインデックスとして選択する(ステップS204)。
記憶部21は値が更新される状態変数を示すインデックスqの情報が入力され、そのインデックスに対応した重み値が局所場生成部22の各局所場生成回路220へ出力される。各局所場生成回路220は、インデックスqの更新に対応した重み値の入力を受けて、保持する局所場を更新する(ステップS205)。
さらに、記憶部21は、インデックスqに対応する記憶素子210に格納された重み値を更新する(ステップS206)。
更新部26は、値が更新される状態変数を示すインデックスqの情報が入力され、記憶部260が保持する状態変数の中から取得したインデックスで示される状態変数であるxを特定する。そして、更新部26は、特定した状態変数であるxの値を反転させて更新する(ステップS207)。
その後、更新部26は、記憶部260に更新後の全ての状態変数を書き込む。また、各局所場生成回路220は、保持するレジスタに更新後の局所場を書き込む(ステップS208)。
以上に説明したように、本実施例に係る最適化装置は、2ウェイ1ホット制約を有する最適化問題を解く際に、局所解に陥るなど予め決められた状態に達した場合に、いくつかの状態変数の値を強制的に1から0に遷移させる。そして、ペナルティ係数を用いた行列に重み行列を切り替えて、最適化処理を行い2ウェイ1ホット制約を満たす状態に復帰させる。これにより、順最適解に陥った場合に容易に脱出することが可能となり、容易に最適な解を得ることが可能となる。
1 最適化装置
10 制御部
11 上限算出部
12 目的関数生成部
13 初期化実行部
14 候補決定部
15 温度管理部
16 更新制御部
17 通知部
18 強制遷移部
19 重み行列切替部
20 最適化部
21 記憶部
22 局所場生成部
23 エネルギー変化算出部
24 オフセット加算部
25 選択回路
26 更新部
210 記憶素子
220 局所場生成回路
230 エネルギー変化算出回路
260 記憶部

Claims (8)

  1. 2ウェイ1ホット制約を含む制約条件が与えられた問題の解を、目的関数に基づく第1行列を重み行列として用いて探索する探索部と、
    前記探索部による探索が特定の状態に達した場合に、前記探索部の探索結果である前記解の一部の値を変更する遷移部と、
    前記遷移部により前記解に含まれる複数の変数の前記一部の値の変更が行われた場合に、前記重み行列にペナルティ係数を用いて生成した復帰用行列を前記重み行列として前記探索部に探索を行わせ、前記探索部による探索結果が前記2ウェイ1ホット制約を満たす状態に達すると、前記重み行列を前記第1行列に戻して前記探索部に探索を行わせる重み行列切替部と
    を備えたことを特徴とする情報処理装置。
  2. 前記探索部は、2つのグループのそれぞれに含まれる所定数の構成要素に対して重複を許さずに所定数の状態変数を割り当てることで2ウェイ1ホット制約を満たし、
    前記遷移部は、前記解の一部の値を変更することで、前記構成要素に対する前記状態変数の一部の割り当てを解消する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記遷移部は、前記探索部による探索が局所解に陥った場合に、前記解の一部を他の値に遷移させることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記探索部に前記第1行列を用いて探索を行わせる場合、前記2ウェイ1ホット制約を満たすように前記目的関数の変数のうち変化させる変数を4つずつ選択して前記探索部に探索を行わせ、前記探索部に前記復帰用行列を用いて探索を行わせる場合、前記目的関数の変数のうち変化させる変数を1つずつ選択して前記探索部に探索を行わせる候補決定部をさらに備えたことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
  5. 前記探索部は、前記遷移部により前記解の一部の値が変更された場合、局所場を再計算することを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。
  6. 前記第1行列は、複数の第1要素に目的関数で使用される値が与えられ、前記第1要素以外の第2要素に0が与えられ、
    前記復帰用行列は、前記第1要素に前記第1行列と同じ値が与えられ、前記第2要素に前記ペナルティ係数の値が与えられ、
    前記探索部は、前記復帰用行列の各要素を保持する記憶素子を有し、前記復帰用行列を使用する場合には前記第2要素の値が格納された前記記憶素子から前記ペナルティ係数の値を読み出し、前記第1行列を使用する場合には前記第2要素の値が格納された前記記憶素子から0を読み出す
    ことを特徴とする請求項1に記載の情報処理装置。
  7. 2ウェイ1ホット制約を含む制約条件が与えられた問題の解を、目的関数に基づく第1行列を重み行列として用いて探索し、
    探索が特定の状態に達した場合に、探索結果である前記解の一部の値を変更し、
    前記解の一部の値の変更を行った場合に、前記重み行列にペナルティ係数を用いて生成した復帰用行列を前記重み行列として前記解の探索を行い、
    探索結果が前記2ウェイ1ホット制約を満たす状態に達すると、前記重み行列を前記第1行列に戻して前記解の探索を行う
    処理をコンピュータに実行させることを特徴とする情報処理方法。
  8. 2ウェイ1ホット制約を含む制約条件が与えられた問題の解を、目的関数に基づく第1行列を重み行列として用いて探索し、
    探索が特定の状態に達した場合に、探索結果である前記解の一部の値を変更し、
    前記解の一部の値の変更を行った場合に、前記重み行列にペナルティ係数を用いて生成した復帰用行列を前記重み行列として前記解の探索を行い、
    探索結果が前記2ウェイ1ホット制約を満たす状態に達すると、前記重み行列を前記第1行列に戻して前記解の探索を行う
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
JP2022008901A 2022-01-24 2022-01-24 情報処理装置、情報処理方法及び情報処理プログラム Pending JP2023107619A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022008901A JP2023107619A (ja) 2022-01-24 2022-01-24 情報処理装置、情報処理方法及び情報処理プログラム
US17/978,244 US20230252105A1 (en) 2022-01-24 2022-11-01 Information processing apparatus, information processing method, and computer-readable recording medium storing information processing program
EP22205216.9A EP4216109A1 (en) 2022-01-24 2022-11-03 Information processing apparatus, information processing method, and information processing program
CN202211457480.5A CN116484957A (zh) 2022-01-24 2022-11-21 信息处理装置、信息处理方法和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022008901A JP2023107619A (ja) 2022-01-24 2022-01-24 情報処理装置、情報処理方法及び情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2023107619A true JP2023107619A (ja) 2023-08-03

Family

ID=84329998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022008901A Pending JP2023107619A (ja) 2022-01-24 2022-01-24 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (4)

Country Link
US (1) US20230252105A1 (ja)
EP (1) EP4216109A1 (ja)
JP (1) JP2023107619A (ja)
CN (1) CN116484957A (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6988476B2 (ja) 2017-12-29 2022-01-05 富士通株式会社 最適化装置および最適化装置の制御方法
US11809147B2 (en) 2019-06-17 2023-11-07 Fujitsu Limited Optimization device, method for controlling optimization processing, and non-transitory computer-readable storage medium for storing program for controlling optimization processing

Also Published As

Publication number Publication date
CN116484957A (zh) 2023-07-25
US20230252105A1 (en) 2023-08-10
EP4216109A1 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
Matsubara et al. Digital annealer for high-speed solving of combinatorial optimization problems and its applications
Zachariadis et al. An adaptive memory methodology for the vehicle routing problem with simultaneous pick-ups and deliveries
Bayram et al. A comprehensive mathematical model for dynamic cellular manufacturing system design and Linear Programming embedded hybrid solution techniques
JP7197789B2 (ja) 最適化装置及び最適化装置の制御方法
Crispin et al. Quantum annealing algorithm for vehicle scheduling
Aleman et al. A tabu search with vocabulary building approach for the vehicle routing problem with split demands
JP2021165196A (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP7139805B2 (ja) 化合物探索装置、化合物探索方法、及び化合物探索プログラム
EP3862936A1 (en) Information processing apparatus, recording medium, information processing method, and information processing system
Hamzadayi et al. Nested simulated annealing approach to periodic routing problem of a retail distribution system
JP2023107619A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US11409836B2 (en) Optimization problem arithmetic method and optimization problem arithmetic apparatus
JP2021144351A (ja) 情報処理装置、経路生成方法および経路生成プログラム
JP7219402B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
Schneider et al. Traveling salesman problem with clustering
JP2023108368A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Satyananda et al. Sequential order vs random order in operators of variable neighborhood descent method
CN114169488A (zh) 基于混合元启发式算法的带容量约束的车辆路径获取方法
US20210173978A1 (en) Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program
Hosseini et al. A new soft computing algorithm based on cloud theory for dynamic facility layout problem
Yassen et al. A hybrid meta-heuristic algorithm for vehicle routing problem with time windows
Yasudo Bandit-based Variable Fixing for Binary Optimization on GPU Parallel Computing
JP7496952B1 (ja) 最適化装置、最適化方法、及びプログラム
Tyagi et al. Sequencing and scheduling methodologies
JP7239521B2 (ja) 情報処理装置および情報処理方法