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

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

▶ 富士通株式会社の特許一覧

<>
  • 特許-最適化装置及び最適化方法 図1
  • 特許-最適化装置及び最適化方法 図2
  • 特許-最適化装置及び最適化方法 図3
  • 特許-最適化装置及び最適化方法 図4
  • 特許-最適化装置及び最適化方法 図5
  • 特許-最適化装置及び最適化方法 図6
  • 特許-最適化装置及び最適化方法 図7
  • 特許-最適化装置及び最適化方法 図8
  • 特許-最適化装置及び最適化方法 図9
  • 特許-最適化装置及び最適化方法 図10
  • 特許-最適化装置及び最適化方法 図11
  • 特許-最適化装置及び最適化方法 図12
  • 特許-最適化装置及び最適化方法 図13
  • 特許-最適化装置及び最適化方法 図14
  • 特許-最適化装置及び最適化方法 図15
  • 特許-最適化装置及び最適化方法 図16
  • 特許-最適化装置及び最適化方法 図17
  • 特許-最適化装置及び最適化方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-19
(45)【発行日】2024-11-27
(54)【発明の名称】最適化装置及び最適化方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20241120BHJP
【FI】
G06N99/00 180
【請求項の数】 7
(21)【出願番号】P 2020199761
(22)【出願日】2020-12-01
(65)【公開番号】P2022087691
(43)【公開日】2022-06-13
【審査請求日】2023-08-04
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】神田 浩一
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特開2020-173661(JP,A)
【文献】特開2020-064535(JP,A)
【文献】鷹野芙美代 ほか,"組合せ最適化問題における制約条件を考慮したQUBOソルバ",情報処理学会 研究報告 アルゴリズム(AL) [online],2019年,[2019年12月05日検索],インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=200692&file_id=1&file_no=1>,2019-AL-175
【文献】鈴木久敏 ほか,"訪問順序制約のある最短路問題の解法",日本経営工学会誌,社団法人日本経営工学会,1987年,Vol. 38,No. 5,p. 326-333
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06Q 10/047
G06Q 50/40
B65G 61/00
(57)【特許請求の範囲】
【請求項1】
組合せ最適化問題をモデル化したイジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数の何れかの値が変化した場合の前記エネルギーの変化量に基づいて、前記値の変化の可否を判定する判定処理と、前記判定処理の結果に基づいて、前記値を変化させる処理と、を繰返すことで前記エネルギーを最小化する最適解を探索する探索部と、
前記複数の状態変数に含まれ、それぞれ、1つの状態変数が第1の値をもち残りの状態変数が第2の値をもつ複数の状態変数群のうち、第1の状態変数群において前記第1の値をもつ第1の状態変数の第1の識別番号に基づいて、前記複数の状態変数群のうちの第2の状態変数群において前記第2の値からの変化を許容する第2の状態変数の第2の識別番号の上限または下限を決定する遷移許容範囲決定部と、
を有する最適化装置。
【請求項2】
前記探索部は、前記エネルギーの変化量を計算するエネルギー変化量算出部を有し、
前記エネルギー変化量算出部は、前記第2の状態変数群において、前記第2の値からの変化が許容される前記第2の状態変数以外の状態変数が前記第2の値から変化した場合の前記変化量として所定の正の値を出力する、請求項1に記載の最適化装置。
【請求項3】
前記組合せ最適化問題が複数のノードのルーティング問題である場合、前記複数の状態変数の数は、出発点を除く前記複数のノードの数に複数の運搬車の台数-1を加算した値の2乗である、請求項1または2に記載の最適化装置。
【請求項4】
前記複数の状態変数群の数は前記台数-1であり、前記複数の状態変数群のそれぞれは、前記台数-1の運搬車の何れかが、各時刻において前記出発点に帰ってきたか否かを表す、前記出発点を除く前記複数のノードの数に前記複数の運搬車の前記台数-1を加算した値の数分の状態変数を含む、請求項3に記載の最適化装置。
【請求項5】
前記遷移許容範囲決定部は、前記台数-1の運搬車のうち、第1の運搬車よりも前の時刻に前記複数のノードの何れかに訪問する第2の運搬車が、前記第1の運搬車よりも前の時刻に、前記出発点に帰ってくるように、前記上限または前記下限を決定する、請求項4に記載の最適化装置。
【請求項6】
前記遷移許容範囲決定部は、前記第2の運搬車が前記出発点に帰ってくる時刻の直後の時刻に、前記第1の運搬車が前記出発点に帰ってこないように前記上限または前記下限を決定する、請求項5に記載の最適化装置。
【請求項7】
探索部が、組合せ最適化問題をモデル化したイジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数の何れかの値が変化した場合の前記エネルギーの変化量に基づいて、前記値の変化の可否を判定する判定処理と、前記判定処理の結果に基づいて、前記値を変化させる処理と、を繰返すことで前記エネルギーを最小化する最適解を探索し、
遷移許容範囲決定部が、前記複数の状態変数に含まれ、それぞれ、1つの状態変数が第1の値をもち残りの状態変数が第2の値をもつ複数の状態変数群のうち、第1の状態変数群において前記第1の値をもつ第1の状態変数の第1の識別番号に基づいて、前記複数の状態変数群のうちの第2の状態変数群において前記第2の値からの変化を許容する第2の状態変数の第2の識別番号の上限または下限を決定する、
最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置及び最適化方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な組合せ最適化問題を計算する最適化装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある。
【0003】
イジング装置による計算では、計算対象の問題は磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えられる。そして、疑似焼き鈍し法やレプリカ交換法(交換モンテカルロ法とも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジングモデル型の評価関数の値(イジングモデルのエネルギーに相当する)が最小となる状態の探索が行われる。なお、状態は、評価関数に含まれる複数の状態変数の値によって表される。
【0004】
従来、デジタル回路を用いてマルコフ連鎖モンテカルロ法を行うことでエネルギーが最小となる状態を探索する最適化装置がある。従来の最適化装置は、一度に1つの状態変数の値だけ変化するとしてエネルギーの変化量を計算し、その変化量に対して温度に対応するノイズ値を加えた値に応じて状態変数の変化を許容するか否かを決定する。エネルギーが増加する状態変数の値の変化も所定の確率で許容され、温度が低くなるにつれてその確率は低くなる。
【0005】
ところで、最適化問題には、評価関数に含まれる状態変数群のうち値が1となる状態変数の数を1つのみとする制約(1-hot制約)をもつものがある。1-hot制約には、各状態変数が制約式の組に一度しか現れないものと、N個の状態変数をN行N列の行列状に並べたときに各行と各列に含まれる状態変数の値の和が1となるものがある。以下、前者の1-hot制約を1-Way 1-hot制約、後者の1-hot制約を2-Way 1-hot制約という。たとえば、交通量最適化問題やビンパッキング問題などは、1-Way 1-hot制約をもつ。たとえば、巡回セールスマン問題、配車計画問題、2次割り当て問題などは、2-Way 1hot制約をもつ。
【0006】
なお、従来、配車計画問題を、遺伝的アルゴリズムや量子計算を用いて計算する手法が提案されている(たとえば、特許文献1,2参照)。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2003-285930号公報
【文献】特開2003-114132号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
組合せ最適化問題によっては制約条件を多く含むものがあり、そのような組み合わせ最適化問題についての評価関数には各制約条件に対応した制約項が含まれることになる。制約項を多く含む評価関数は極大値や極小値が多く含まれる複雑なポテンシャル形状となるため、最適解への収束性が悪化する問題があった。
【0009】
1つの側面では、本発明は、最適解への収束性を向上可能な最適化装置、最適化方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
1つの実施態様では、組合せ最適化問題をモデル化したイジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数の何れかの値が変化した場合の前記エネルギーの変化量に基づいて、前記値の変化の可否を判定する判定処理と、前記判定処理の結果に基づいて、前記値を変化させる処理と、を繰返すことで前記エネルギーを最小化する最適解を探索する探索部と、前記複数の状態変数に含まれ、それぞれ、1つの状態変数が第1の値をもち残りの状態変数が第2の値をもつ複数の状態変数群のうち、第1の状態変数群において前記第1の値をもつ第1の状態変数の第1の識別番号に基づいて、前記複数の状態変数群のうちの第2の状態変数群において前記第2の値からの変化を許容する第2の状態変数の第2の識別番号の上限または下限を決定する遷移許容範囲決定部と、を有する最適化装置が提供される。
【0011】
また、1つの実施態様では、最適化方法が提供される。
【発明の効果】
【0012】
1つの側面では、本発明は、最適解への収束性が向上できる。
【図面の簡単な説明】
【0013】
図1】第1の実施の形態の最適化装置の一例を示す図である。
図2】変換結果の一例を示す図である。
図3】制約条件を満たす場合と満たさない場合の例を示す図である。
図4】値の変化を許容する範囲の別の決定例を示す図である。
図5】第2の実施の形態の最適化装置の一例を示す図である。
図6】遷移許容範囲決定部の一例を示す図である。
図7】境界値の計算例を示す図である。
図8】遷移可否信号出力部と記憶部の一例を示す図である。
図9】遷移可否ビット生成回路の一例を示す図である。
図10】ΔE算出部の一例を示す図である。
図11】Dとri,tの記憶例を示す図である。
図12】ケース1の一例を示す図である。
図13】ケース1の状態遷移前後におけるri,tの記憶例を示す図である。
図14】ケース2の一例を示す図である。
図15】ケース3の一例を示す図である。
図16】ケース3の状態遷移前後におけるri,tの記憶例を示す図である。
図17】ΔE算出部の他の例を示す図である。
図18】最適化装置の全体の動作の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
【0015】
最適化装置10は、組合せ最適化問題をモデル化したイジングモデルのエネルギーを最小化する最適解を探索する。
イジングモデルのエネルギーは、たとえば、以下の式(1)に示すような評価関数(E(x))で定義される。
【0016】
【数1】
【0017】
右辺第1項は、評価関数に含まれる全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xは、i番目の状態変数である。xは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み(たとえば、結合の強さ)を示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。
【0018】
右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。bは、i番目の状態変数に対するバイアス係数を示している。cは定数である。
【0019】
たとえば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を、0または1の値をとるビットと呼ぶこともできる。
【0020】
式(1)の値が最小となる状態変数の値の組合せが問題の解(最適解)となる。
最適化装置10は、探索部11と遷移許容範囲決定部12を有する。
探索部11は、上記のような評価関数に含まれる複数の状態変数の何れかの値が変化した場合のエネルギーの変化量に基づいて、その値の変化の可否を判定する判定処理を行う。そして、探索部11は、判定処理の結果に基づいて、複数の状態変数の何れかの値を変化させる処理(更新処理)を行う。探索部11はこれらの処理を繰返すことでエネルギーを最小化する最適解を探索する。
【0021】
以下の例では、探索部11は、1-hot制約(以下の例では、1-Way 1-hot制約)を満たしつつ更新処理を行う。なお、探索部11は、2-Way 1-hot制約を満たしつつ更新処理を行うものであってもよい。
【0022】
探索部11は、たとえば、式(1)に含まれる重み係数群を用いて計算されるエネルギーの変化量に基づいて、1-hot制約を満たすべき状態変数群(以下グループという)の何れか2つの状態変数の値の更新を行うか否かの判定を行う。1-hot制約を満たすためには、グループに含まれる状態変数のうち、値が1である状態変数を0に更新した場合、値が0である状態変数を1つだけ1に更新することになる。
【0023】
ところで、式(1)において、xの値が変化して1-xとなると、xの増加分は、Δx=(1-x)-x=1-2xと表せる。この値の変化に伴うエネルギーの変化量(ΔE)は、以下の式(2)で表される。
【0024】
【数2】
【0025】
式(2)において、xが1から0に変化するとき、Δxは-1となり、xが0から1に変化するとき、Δxは1となる。なお、hは局所場(ローカルフィールド)と呼ばれ、Δxに応じてhに符号(+1または-1)を乗じたものがΔEである。
【0026】
が0から1に変化するときのhの変化分は、Δh (j)=+Wij、xが1から0に変化するときのhの変化分は、Δh (j)=-Wijである。同様に、xが変化したときのxについてのhの変化分は、Δh (i)=Δxij、と表せる。
【0027】
したがって、x,xが両方変化したときのエネルギーの変化量(ΔEij)は、以下の式(3)で表せる。
【0028】
【数3】
【0029】
前述のように、1-hot制約を満たすある状態から、その制約を満たす別の状態に遷移するには、2つの状態変数の値を変化させることになる。xが1から0に変化するとともにxが0から1に変化する場合のエネルギーの変化量をΔEと表記すると、Δx=-1、Δx=1であるため、式(3)から、ΔEは以下の式(4)で表せる。
【0030】
【数4】
【0031】
なお、式(1)において、Wijは、x,xの何れか一方が0であれば、エネルギーに関与しないため、式(4)のWijはなくてもよい。
探索部11は、1-hot制約を満たすべき各グループの状態変数のうち、値が0である状態変数のそれぞれについて、上記のようにエネルギーの変化量を計算する。そして、探索部11は、ΔEに基づいて、疑似焼き鈍し法やレプリカ交換法などを用いて、そのエネルギーの変化量を生じさせる状態変数の変化を許容するか否かを判定する。探索部11は、式(1)のE(x)が小さくなる状態変数の変化を優先的に受け入れるが、E(x)が大きくなる変化についても確率的に許容する。ただ、ΔEが正の非常に大きな値の場合、その変化が許容される確率は非常に小さくなる。
【0032】
探索部11は、あるグループにおいて値を0から1に更新する状態変数が決定された場合、その状態変数の値を0から1に更新するとともに、そのグループにおいて現在の値が1である状態変数の値を1から0に更新する。
【0033】
なお、探索部11は、現在の全状態変数(x~x)の値を保持する記憶部11aを有する。
探索部11は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路により実現される。記憶部11aは、たとえば、SRAM(Static Random Access Memory)またはレジスタなどの電子回路である。なお、探索部11は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサがプログラムを実行することによるソフトウェア処理にて実現されるようにしてもよい。
【0034】
遷移許容範囲決定部12は、x~xに含まれ、それぞれ、1つの状態変数が第1の値をもち残りの状態変数が第2の値をもつ複数のグループについて、値の変化を許容する範囲を決定する。以下の例では、遷移許容範囲決定部12は、上記と同様に1-Way 1-hot制約を満たすべき複数のグループについて、値の変化を許容する範囲を決定するものとして説明する。すなわち、第1の値を1、第2の値を0とするが、これに限定されるものではなく、第1の値が0、第2の値が1であってもよい。
【0035】
遷移許容範囲決定部12は、上記複数のグループのうち、あるグループにおいて、値が1の状態変数の識別番号に基づいて、別のグループにおいて0から1への値の変化を許容する状態変数の識別番号の上限または下限を決定する。
【0036】
このようにすることで、後述のように制約項を追加せずにある制約条件を満たすことができる。
遷移許容範囲決定部12は、たとえば、ASICやFPGAなどの電子回路にて実現される。なお、遷移許容範囲決定部12は、CPUやGPUなどのプロセッサがプログラムを実行することによるソフトウェア処理にて実現されるようにしてもよい。
【0037】
以下では、CVRP(Capacitated Vehicle Routing Problem)などの複数のノードのルーティング問題の計算を例にして説明を行う。このような問題では、たとえば、ある時刻にある運搬車があるノードにいるか否かを0、1で表す状態変数が用いられるが、ノード数や運搬車の台数が増えると、状態変数の数が増加する。
【0038】
CVRPは、デポ(出発点)と呼ばれる特定の施設に待機する運搬車により、顧客位置(以下、ノードと呼ぶ)に需要を配送(または収集)し再びデポに戻るときに、各種入力変数に基づいて総移動距離などを最小化する顧客訪問順(ルート)を求める問題である。
【0039】
CVRPの制約条件として以下の制約条件A~Gがある。
(制約条件A)全ルートにおいて、ルート上のデポを除くノードのデマンドの合計値は、1台の運搬車(以下トラックという)の最大積載量以内である。
【0040】
(制約条件B)全ての時刻において、トラックは、同時刻に1ルートの1箇所(1つのノード)だけを通過(訪問)する。
(制約条件C)デポを除く全てのノードは、トラックによって1回だけ通過される。
【0041】
(制約条件D)トラックは、デポを除き、あるルートである時刻(>0)にあるノードを通過した場合、そのトラックは、そのルートの1つ前の時刻に、何れかのノードを通過している。
【0042】
(制約条件E)トラックは、デポを除き、あるルートである時刻(<M(全ノードを回る時間))にあるノードを通過したら、そのルートの1つ後の時刻に、何れかのノードを通過する。
【0043】
(制約条件F)全てのルートにおいて、トラックは同一ルート上でデポを2回通る。
(制約条件G)全てのルートにおいて、開始時刻及び終了時刻ではトラックはデポ以外を通らない。
【0044】
第1の実施の形態の最適化装置10は、たとえば、図1に示すような状態変数を用いる。“1”と記載されているマスは、値が1である状態変数を示し、値が記載されていないマスは、値が0である状態変数を示している。図1では、トラック数が4台でノード数が13のCVRPを計算する場合の状態変数の例が示されている。なお、デポの数は複数あってもよいが、以下では1つであるものとする。
【0045】
横軸の1~13はノードの番号を表し、D0~D4はデポを表している。縦軸は時刻tを表している。なお、上記のようにデポは1つであるが、4台のトラックがデポから出発する時刻と帰ってくる時刻を区別できるようにD0~D4が用いられている。すなわち、1台目のトラックが出発するデポがD0で表され、1台目のトラックが帰ってくるデポと2台目のトラックが出発するデポがD1で表され、2台目のトラックが帰ってくるデポと3台目のトラックが出発するデポがD2で表されている。また、3台目のトラックが帰ってくるデポと4台目のトラックが出発するデポがD3で表され、4台目のトラックが帰ってくるデポがD4で表されている。
【0046】
このため、状態変数の数は、18×18とすればよいが、時刻t=0に1台目のトラックがデポから出発し、最後の時刻t=17には、4台目のトラックがデポに帰ってくるものとすれば、t=0,17の行と、D0,D4の列の状態変数はなくてもよい。したがって、4台のトラックの何れかが、時刻tに13のノードまたはデポの何れかにいるか否かを示す状態変数の数は、図1の枠15内の、16×16=256でよい。
【0047】
つまり、評価関数に含める状態変数の数は、デポを除くノード数+トラック台数-1の2乗でよい。
制約条件B,C,Fを満たすために、16×16の状態変数は、各行と各列に含まれる状態変数の値の和が1となる2-Way 1-hot制約をもつ。
【0048】
したがって、D1~D3の各列の状態変数によるグループは、1-Way 1-hot制約を満たすべきグループである。また、枠15内のD1~D3の各列の状態変数によるグループは、4台のトラックによる各ルートでの積載量の和(ノードのデマンドの合計値)を計算するために用いることができる。
【0049】
以下、枠15内のD1~D3の各列の状態変数によるグループを、グループgD1,gD2,gD3という。また、枠15内において、時刻tにノード番号nのノードにトラックがいるか否かを表す状態変数(x~x208)を、xt,nと表記する。また、グループgD1の16個の状態変数(x209~x224)を、yD1,1~yD1,16、グループgD2の16個の状態変数(x225~x240)を、yD2,1~yD2,16、グループgD3の16個の状態変数(x241~x256)を、yD3,1~yD3,16と表記する。
【0050】
4台のトラックによる各ルートでの積載量の和を計算するために、上記のように表記したグループgD1~gD3の状態変数は、以下の式(5)に基づいて、たとえば、探索部11によって変換される。
【0051】
【数5】
【0052】
なお、式(5)において、k=1,2,3であり、i=1,2,3,…,16である。
図2は、変換結果の一例を示す図である。
図2の例では、yD1,5,yD2,8,yD3,14が1になっている。このため、式(5)より、変換後の値は、zD1,1~zD1,5,zD2,1~zD2,8,zD3,1~zD3,14が1でそれ以外は0になっている。
【0053】
4台のトラックによる各ルートでの積載量の和(DTOT1~DTOT4)は、上記変換後の値を用いて、たとえば、以下の式(6)により計算できる。
【0054】
【数6】
【0055】
式(6)において、Dは、時刻tにおけるデマンドの合計であり、以下の式(7)により表される。
【0056】
【数7】
【0057】
式(7)において、Dは、ノード番号nのノードのデマンドである。なお、デポのデマンドは0である。
ところで、以上のようなDTOT1~DTOT4の定式化を可能とするには、グループgD1~gD3の状態変数において、値が1になる順序が、グループgD1,gD2,gD3の順番になっていることが制約条件である。すなわち、2台目トラックよりも前の時刻に複数のノードの何れかに訪問する1台目のトラックが、2台目のトラックよりも前の時刻に、デポに帰ってくることが求められる。さらに、3台目トラックよりも前の時刻に複数のノードの何れかに訪問する2台目のトラックが、3台目のトラックよりも前の時刻に、デポに帰ってくることが求められる。この制約条件に合わない場合には、制約条件違反(制約条件違反1)となる。
【0058】
また、以下の例では、グループgD1の状態変数が1となる直後の時刻にグループgD2の状態変数が1となる場合と、グループgD2の状態変数が1となる直後の時刻にグループgD3の状態変数が1となる場合も制約条件違反(制約条件違反2)とする。すなわち、1台目のトラックがデポに帰ってくる時刻の直後の時刻に、2台目のトラックがデポに帰ってこないようにすることが求められる。さらに、2台目のトラックがデポに帰ってくる時刻の直後の時刻に、3台目のトラックがデポに帰ってこないようにすることが求められる。
【0059】
さらに、トラックが最初にデポを出発した直後の時刻にグループgD1~gD3の状態変数が1となる場合と、トラックが最後にデポに到着する直前の時刻にグループgD1~gD3の状態変数が1となる場合についても制約条件違反(制約条件違反3)とする。制約条件違反2,3は、4台のトラックの何れかが、どのノードにも訪問しない場合を意味する。ただ、問題設定によっては、必ずしも制約条件違反としなくてもよい。
【0060】
図3は、制約条件を満たす場合と満たさない場合の例を示す図である。
図3において、“OK”と示されている例は、上記の何れの制約条件違反にも該当していない。“NG1”と“NG2”の例は、制約条件違反1に該当する。“NG3”の例は制約条件違反2に該当し、“NG4”の例は制約条件違反3に該当する。
【0061】
以上のような制約条件違反を防ぐために、評価関数に制約項を追加する場合、制約項の数が増えてしまい、最適解への収束性が悪化する可能性がある。
そこで、遷移許容範囲決定部12は、グループgD1~gD3のうち、あるグループにおいて、値が1の状態変数の識別番号に基づいて、別のグループにおいて0から1への値の変化を許容する状態変数の識別番号の上限または下限を決定する。
【0062】
なお、遷移許容範囲決定部12は、記憶部12aを有している。記憶部12aは、グループgD1,gD2,gD3の状態変数を識別するための識別番号を記憶する。さらに、記憶部12aは、グループgD1,gD2,gD3において、値が1である状態変数(ホットビット)hD1,hD2,hD3を識別するための識別番号を記憶する。記憶部12aは、たとえば、SRAMまたはレジスタなどの電子回路である。
【0063】
図1の例では、グループgD1の状態変数の識別番号として、x209~x224の識別番号である209~224が記憶されている。また、グループgD2の状態変数の識別番号として、x225~x240の識別番号である225~240、グループgD3の状態変数の識別番号として、x241~x256の識別番号である241~256が記憶されている。また、ホットビットhD1の識別番号として、x213の識別番号である213、ホットビットhD2の識別番号として、x232の識別番号である232、ホットビットhD3の識別番号として、x254の識別番号である254が記憶されている。
【0064】
図1には、遷移許容範囲決定部12の処理例が示されている。
グループgD1において0から1への値の変化を許容する状態変数の識別番号の下限は、上記の制約条件違反3を避けるために、グループgD1の状態変数の最初の識別番号である209+1=210である。
【0065】
グループgD1において0から1への値の変化を許容する状態変数の識別番号の上限は、上記の制約条件違反1,2を避けるために、ホットビットhD2の識別番号に基づいて決定される。図1の例のように各グループgD1~gD3に含まれる状態変数の数(グループサイズ)が16の場合、ホットビットhD2の識別番号-16-2がグループgD1において0から1への値の変化を許容する状態変数の識別番号の上限となる。ホットビットhD2の識別番号が232の場合、上限は、232-16-2=214となる。
【0066】
グループgD2において0から1への値の変化を許容する状態変数の識別番号の下限は、上記の制約条件違反1,2を避けるために、ホットビットhD1の識別番号に基づいて決定される。グループサイズ=16の場合、ホットビットhD1の識別番号+16+2がグループgD2において0から1への値の変化を許容する状態変数の識別番号の下限となる。ホットビットhD1の識別番号が213の場合、下限は、213+16+2=231となる。
【0067】
グループgD2において0から1への値の変化を許容する状態変数の識別番号の上限は、上記の制約条件違反1,2を避けるために、ホットビットhD3の識別番号に基づいて決定される。グループサイズ=16の場合、ホットビットhD3の識別番号-16-2がグループgD2において0から1への値の変化を許容する状態変数の識別番号の上限となる。ホットビットhD3の識別番号が254の場合、上限は、254-16-2=236となる。
【0068】
グループgD3において0から1への値の変化を許容する状態変数の識別番号の下限は、上記の制約条件違反1,2を避けるために、ホットビットhD2の識別番号に基づいて決定される。グループサイズ=16の場合、ホットビットhD2の識別番号+16+2がD3の列の状態変数群において0から1への値の変化を許容する状態変数の識別番号の下限となる。ホットビットhD2の識別番号が232の場合、下限は、232+16+2=250となる。
【0069】
グループgD3において0から1への値の変化を許容する状態変数の識別番号の上限は、上記の制約条件違反3を避けるために、グループgD3の状態変数の最後の識別番号である256-1=255である。
【0070】
遷移許容範囲決定部12は、上記のように決定した上限または下限に基づいて、グループgD1~gD3の各状態変数について、0から1への値の変化を許容するか否かを示す信号(遷移禁止または遷移許容を示す信号)を出力する。図1の例では、遷移禁止を示す信号が1、遷移許容を示す信号が0である。
【0071】
たとえば、グループgD2については、0から1への値の変化が許容されたx231~x236のうち、すでに値が1であるx232以外について、遷移許容を示す信号が出力される。x232、x225~x230、x237~x240については、遷移禁止を示す信号が出力される。
【0072】
探索部11は、遷移禁止を示す信号が出力された状態変数については、それら状態変数の値が変化した場合のエネルギーの変化量として、所定の大きな正の値を用いる。これによりそれらの状態変数の値の変化が許容されることを抑制され、制約条件違反1~3の発生を抑制できる。
【0073】
図4は、値の変化を許容する範囲の別の決定例を示す図である。
図4の例では、グループgD1~gD3において、0から1への値の変化が許容される状態変数は、値が1の状態変数の識別番号に対して+1及び-1の識別番号の状態変数である。ただし、上記制約条件違反1~3に該当しないように、上記の例と同様に、変化が許容される状態変数の識別番号の上限または下限が決定されている。
【0074】
たとえば、図4の例のようにグループgD1において、値が1の状態変数の識別番号に対して+1の識別番号の状態変数の値が1に変化した場合、グループgD2において値が1の状態変数との関係で制約条件違反2に該当してしまう。そのため、グループgD1では、値が1の状態変数の識別番号に対して-1の識別番号の状態変数だけ変化が許容される。
【0075】
グループgD2において、値が1の状態変数の識別番号に対して-1の識別番号の状態変数の値が1に変化した場合、グループgD1において値が1の状態変数との関係で制約条件違反2に該当してしまう。そのため、グループgD2では、値が1の状態変数の識別番号に対して+1の識別番号の状態変数だけ変化が許容される。
【0076】
グループgD3において、値が1の状態変数の識別番号に対して+1の識別番号の状態変数の値が1に変化した場合、制約条件違反3に該当してしまう。そのため、グループgD3では、値が1の状態変数の識別番号に対して-1の識別番号の状態変数だけ変化が許容される。
【0077】
このように値の変化を許容する範囲をより限定することで、状態変数の値が変化した場合のエネルギーの変化量に基づいて、その変化を許容するか否かを判定する探索部11のハードウェア構成を簡略化できる。
【0078】
なお、図4の例では、0から1への値の変化が許容される状態変数は、値が1の状態変数の識別番号に対して+1及び-1の識別番号の状態変数であるとしたが、+1及び-1に限定されず、適宜設定可能である。
【0079】
以上のように、第1の実施の形態の最適化装置10によれば、あるグループにおいて、値が1である状態変数の識別番号に基づいて、別のグループにおいて、0から1への値の変化を許容する状態変数の識別番号の上限または下限が決定される。これにより、現在の状態に応じて、次に値の変化を許容する状態変数の範囲を制限することができ、制約項を増やさずに制約条件を満たす解の探索が可能となるため、最適解への収束性を向上させることができる。
【0080】
また、図1のように評価関数に含める状態変数の数は、デポを除くノード数+トラック台数-1の2乗でよく、ノード数やトラック台数が増加しても状態変数の数を抑えることができる。
【0081】
さらに、最適化装置10では、トラック台数-1のトラックについて、各時刻にデポに帰ってきたか否かを示すグループgD1~gD3(トラック台数-1のグループ)を設け、これらを用いて各トラックによる各ルートでの積載量の和を計算可能としている。これにより、積載量の和が最大積載量を超えることを避けるための制約項を算出できる(制約項の算出例については後述する)。このため、最大積載量を満たす各トラックの積載量の組合せを複数パターン用意して、各パターンについて最適解の探索をする、などの手間が不要になり、最適解の探索処理の実行回数の増加を抑えることができる。
【0082】
なお、上記のように値が0から1への値の変化を許容する状態変数の識別番号の上限または下限を決定する手法は、CVRPなどの複数のノードのルーティング問題に限定されず、他の組合せ最適化問題においても適用可能である。
【0083】
(第2の実施の形態)
図5は、第2の実施の形態の最適化装置の一例を示す図である。
第2の実施の形態の最適化装置20は、探索部21と、遷移許容範囲決定部22を有する。
【0084】
探索部21は、評価関数に含まれる複数の状態変数の何れかの値が変化した場合のエネルギーの変化量に基づいて、その値の変化の可否を判定する判定処理を行う。そして、探索部21は、判定処理の結果に基づいて、複数の状態変数の何れかの値を変化させる更新処理を繰返すことでエネルギーを最小化する最適解を探索する。
【0085】
探索部21は、1-hot制約(以下の例では、2-Way 1-hot制約)を満たしつつ更新処理を行う。なお、探索部21は、第1の実施の形態の探索部11のように、1-Way 1-hot制約を満たしつつ更新処理を行うものであってもよい。
【0086】
CVRPを計算するために前述の図1に示したように設定した16×16の状態変数(16行16列に配列された状態変数)は、2-Way 1-hot制約をもつ。
2-Way 1-hot制約を満たす状態以外の状態の探索を除外する場合、一度の状態遷移において、4つの状態変数の値を変化させることになる。
【0087】
なお、2-Way 1-hot制約が満たされている状態で、値が0の状態変数の1つを更新対象候補とした場合、他の3つの更新対象候補の状態変数が決まる。値が0の状態変数であるxを更新対象候補としたとき、xと同じ行及び同じ列に含まれる状態変数のうち、値が1の状態変数であるx,xが更新対象候補となる。さらに、xと同じ列、かつ、xと同じ行である、値が0のxが更新対象候補となる。
【0088】
これら4つの状態変数の値を変化させた場合に生じるイジングモデルのエネルギー変化をΔEとすると、ΔEは、以下の式(8)のように表せる。
【0089】
【数8】
【0090】
また、x,x,x,xが変化することによるローカルフィールドの変化分(Δh(m=1,2,…,N))は、以下の式(9)のように表せる。
【0091】
【数9】
【0092】
探索部21は、ΔE算出部21a、選択回路21b、識別番号計算部21c、更新部21d、制御部21eを有する。
ΔE算出部21aは、1-hot制約を満たす各グループにおいて、ハミング距離=4の状態遷移によって1-hot制約を満たすある状態から1-hot制約を満たす別の状態に遷移するときのエネルギーの変化量(ΔE~ΔE)を算出する。ΔE算出部21aは、1-hot制約を満たしつつ更新処理を行うために、式(8)に示したようなエネルギーの変化量を算出する。
【0093】
ただし、ΔE算出部21aは、遷移許容範囲決定部22から遷移禁止を示す信号が出力された状態変数、または現在の値が1である状態変数については、それら状態変数の値が変化した場合のエネルギーの変化量として、所定の大きな正の値を出力する。所定の大きな正の値は、たとえば、最適化装置20が出力できる正の最大値である。現在の値が1である状態変数については、更新部21dが出力するN個の制御信号ENによって通知される。たとえば、現在の値が1である状態変数に対応した制御信号ENは1となり、現在の値が0である状態変数に対応した制御信号ENは0となる。
【0094】
ΔE算出部21aは、たとえば、重み係数やローカルフィールドを保持するレジスタ、式(8)、式(9)の計算に用いる重み係数を選択するセレクタや、式(8)、式(9)の計算を行う加減算器などを用いて実現される。
【0095】
選択回路21bは、熱励起エネルギーと、ΔE~ΔEとの大小関係に基づいて、各グループに含まれる値が0の状態変数のうち、0から1への値の変化を許容する1つを識別する識別番号=jを出力する。熱励起エネルギーは、乱数と、制御部21eから入力される温度を表すパラメータであるTに基づいて決定され、ノイズ値と呼ばれる場合もある。なお、熱励起エネルギーと、ΔE~ΔEとの大小関係によっては、値が0の状態変数のうち1つも変化が許容されない場合がある。以下では、選択回路21bは、識別番号=jとともに、識別番号=jの状態変数の値の変化が許容されたか否かを示すフラグfを出力するものとする。たとえば、フラグfの値が1であれば、その状態変数の値の変化が許容されたことを示し、フラグfの値が0であれば、変化が許容されなかったことを示す。
【0096】
識別番号計算部21cは、たとえば、各状態変数が属するグループの識別番号と、各グループにおいて値が1の状態変数の識別番号を記憶するレジスタを有している。識別番号計算部21cは、選択回路21bが出力する識別番号=jに基づいて、他の3つの識別番号=i,k,lを計算する。
【0097】
たとえば、i,lは、xと同じ行及び同じ列に含まれる状態変数のうち、値が1の状態変数であるx,xの識別番号である。kは、xと同じ列、かつ、xと同じ行である、xの識別番号である。なお、kは、k=i+l-jにより算出できる。
【0098】
以下では、識別番号計算部21cは、選択回路21bから供給される識別番号=jとフラグfについても出力するものとする。識別番号=i,j,k,lは、ΔE算出部21aに供給され、エネルギーの変化量を計算するために用いられるローカルフィールドを式(9)に基づいて更新する際に用いられる。なお、フラグfが変化を許容しなかったことを示す場合、識別番号計算部21cは、たとえば、識別番号=i,j,k,lを無効な値(たとえば、0)とする。
【0099】
識別番号計算部21cは、たとえば、CPUやGPUなどのプロセッサがレジスタに記憶された識別番号に基づいて上記のような処理を行うものであってもよいし、各種論理回路を用いて実現されるものであってもよい。
【0100】
更新部21dは、N個の状態変数(x~x)の値などを保持する記憶部21d1を有している。記憶部21d1は、たとえば、レジスタやSRAMなどの電子回路を用いて実現される。更新部21dは、フラグfが変化を許容することを示す場合、識別番号計算部21cが出力する識別番号=i,lの状態変数の値を1から0に更新するとともに、識別番号=j,kの状態変数の値を0から1に更新する。
【0101】
また、更新部21dは、識別番号=i,j,k,lの状態変数の変化に対応するエネルギーの変化量に基づいてエネルギーを更新する。記憶部21d1は、各更新時点での最少エネルギーとその最少エネルギーが得られたときの状態(最少エネルギー時の状態)とを保持する。また、更新部21dは、前述の制御信号ENと、x~xをΔE算出部21aに供給する。
【0102】
更新部21dは、エネルギーを更新するための加算回路や、更新したエネルギーとこれまでの最小エネルギーとを比較する比較器や、識別番号=i,j,k,lの状態変数の値を0から1または1から0に反転させる各種論理回路などを用いて実現できる。
【0103】
制御部21eは、最適化装置20の初期設定処理を行う。初期設定処理として、式(4)の計算を行うための重み係数の設定や、ローカルフィールドや状態変数の初期値の設定、各状態変数が属するグループの識別番号の設定などが行われる。なお、状態変数の初期値は、各グループにおいて1-hot制約を満たすように設定される。さらに、後述の遷移許容範囲決定部22が、値の変化を許容する範囲を決定するグループについては、たとえば前述のような制約条件違反1~3に該当しないように、ホットビットが設定される。
【0104】
また、制御部21eは、イジングモデルの状態を更新する更新処理が所定回数繰り返されるごとに、たとえば、外部から指定される温度スケジュールにしたがってTの値を小さくしていく。
【0105】
さらに、制御部21eは、更新処理が所定の繰り返し回数、繰り返されたのちに、記憶部21d1に保持されている状態(x~x)を取得し、たとえば、最適化問題に対する解として外部に出力する。なお、制御部21eは、記憶部21d1が保持している、最少エネルギーや最少エネルギー時の状態を、更新処理が所定の繰り返し回数、繰り返された後に取得して出力してもよい。制御部21eは、取得した各種情報を、図示しない表示装置に出力して表示させてもよいし、外部の情報処理装置に送信してもよい。
【0106】
制御部21eは、たとえば、ASICやFPGAなどの電子回路にて実現できる。なお、制御部21eは、CPUやGPUなどのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の処理を行う。
【0107】
遷移許容範囲決定部22は、複数のグループについて、所定の制約条件違反に該当しないように、値の変化を許容する範囲を決定する。
図6は、遷移許容範囲決定部の一例を示す図である。
【0108】
遷移許容範囲決定部22は、記憶部22a、ホットビット更新部22b、境界値計算部22c、遷移可否信号出力部22dを有する。
記憶部22aは、たとえば、N個の状態変数の値及び識別番号と、各状態変数が属するグループの識別番号と、遷移許容範囲が決定される複数のグループの状態変数を識別するための識別番号と、グループサイズ(各グループに属する状態変数の数)を記憶する。さらに、記憶部22aは、遷移許容範囲が決定される各グループにおけるホットビットの識別番号を記憶する。これらの識別番号やグループサイズは、制御部21eによる前述の初期設定処理において、記憶部22aに記憶される。さらに、記憶部22aは、境界値計算部22cが計算する、遷移許容範囲が決定される各グループにおいて0から1への値の変化を許容する状態変数の識別番号の境界値(上限と下限)を記憶する。記憶部22aは、たとえば、SRAMまたはレジスタなどの電子回路である。
【0109】
ホットビット更新部22bは、識別番号計算部21cが出力する識別番号=j,kとフラグfと、記憶部21d1に保持されている状態(x~x)に基づいて、記憶部22aに記憶されているホットビットの識別番号を更新する。たとえば、ホットビット更新部22bは、jまたはkが、記憶部22aに記憶されている遷移許容範囲が決定されるグループの状態変数の識別番号に一致し、xまたはxが1になると、jまたはkをそのグループのホットビットの識別番号とする。このようなホットビット更新部22bは、各種論理回路により実現できる。
【0110】
境界値計算部22cは、遷移許容範囲が決定される各グループの状態変数とホットビットの識別番号とグループサイズに基づいて、各グループにおいて0から1への値の変化を許容する状態変数の識別番号の境界値(上限と下限)を計算する。
【0111】
図7は、境界値の計算例を示す図である。
図7には、前述したような制約違反条件1~3に該当しないように、境界値を計算する例が示されている。
【0112】
グループgD1では、下限Minは、グループgD1の状態変数の最初の識別番号を+1した値であり、上限Maxは、グループgD2のホットビットの識別番号から18を引いた値である。なお、前述のように18は、グループサイズ(16)+2である。
【0113】
グループgD2では、下限Minは、グループgD1のホットビットの識別番号に18を加えた値であり、上限Maxは、グループgD3のホットビットの識別番号から18を引いた値である。
【0114】
グループgD3では、下限Minは、グループgD2のホットビットの識別番号に18を加えた値であり、上限Maxは、グループgD3の状態変数の最後の識別番号を-1した値である。
【0115】
このような処理を行う境界値計算部22cは、たとえば、加減算回路などの各種論理回路を用いて実現される。
遷移可否信号出力部22dは、境界値計算部22cが計算し記憶部22aに記憶された境界値に基づいて、上記複数のグループに属する各状態変数について、値の変化の可否を示す信号(遷移可否信号)を出力する。
【0116】
図8は、遷移可否信号出力部と記憶部の一例を示す図である。
図8には、記憶部22aに記憶される情報の一部を記憶するレジスタ群22a1,22a2,22a3,22a4,22a5が示されている。
【0117】
レジスタ群22a1には、x~xの識別番号(1~N)が記憶され、レジスタ群22a2には、x~xのそれぞれが属するグループの識別番号(g~g)が記憶され、レジスタ群22a3には、x~xの値が記憶される。また、レジスタ群22a4には、x~xのそれぞれが属するグループにおける前述の下限(Min~Min)が記憶され、レジスタ群22a5には、x~xのそれぞれが属するグループにおける前述の上限(Max~Max)が記憶される。
【0118】
なお、Min~MinとMax~Maxのうちj番目のMinとMaxは、識別番号=jの状態変数(x)が属するグループの識別番号が、記憶部22aに記憶されている遷移許容範囲が決定されるグループの識別番号に一致した場合に、更新される。このため、遷移許容範囲が決定されるグループとは異なるグループについては、上記の下限や上限は初期値のままとなる。
【0119】
遷移可否信号出力部22dは、遷移可否ビット生成回路22d1,22d2,…,22dNを有する。遷移可否ビット生成回路22d1~22dNは、x~xの値と、Min~Minと、Max~Maxに基づいて、x~xのそれぞれについて、0から1への値の変化を許容するか否かを示す遷移可否ビットp,p,…,pを生成し出力する。これにより、N個の遷移可否ビットp~pによる遷移可否信号が、遷移可否信号出力部22dから出力される。
【0120】
図9は、遷移可否ビット生成回路の一例を示す図である。
図9には、図8に示した遷移可否ビット生成回路22d1~22dNのうち、i番目の遷移可否ビット生成回路22diの回路例が示されている。他の遷移可否ビット生成回路についても同様の回路構成により実現できる。
【0121】
遷移可否ビット生成回路22diは、比較回路30,31、NAND(否定論理積)回路32を有する。
比較回路30は、xが属するグループにおける前述の下限Minと、識別番号=iとの比較結果を出力する。比較回路30は、Min≦iの場合、1を出力し、Min>iの場合、0を出力する。
【0122】
比較回路31は、xが属するグループにおける前述の上限Maxと、識別番号=iとの比較結果を出力する。比較回路30は、Max≧iの場合、1を出力し、Max<iの場合、0を出力する。
【0123】
NAND回路32は、比較回路30,31の出力信号と、xの値を反転させた値(xの値が0の場合は1、1の場合は0)との否定論理積を出力する。NAND回路32は、3つの入力が全て1の場合、遷移可否ビットpとして、xの0から1への値の変化を許容することを示す、0を出力する。NAND回路32は、3つの入力の何れか1つでも0の場合、遷移可否ビットpとして、xの0から1への値の変化を禁止することを示す、1を出力する。
【0124】
以上のような遷移許容範囲決定部22を用いることで、複数のグループについて、所定の制約条件違反に該当しないように、値の変化を許容する範囲を決定することができる。 なお、遷移許容範囲が決定されるグループとは異なるグループについては、たとえば、上記の下限の初期値を1、上記の上限の初期値をNとしておけばよい。その場合、その異なるグループに属する状態変数については、0から1への値の変化を許容することを示す遷移可否ビットである0が出力されることになる。
【0125】
(CVRPの制約条件を考慮したエネルギーの変化量の計算手法その1)
ところで前述のようにCVRPでは、全ルートにおいて、ルート上のデポを除くノードのデマンドの合計値は、1台のトラックの最大積載量以内である、という制約条件がある。たとえば、4台のトラックによる各ルートでの積載量の和(DTOT1~DTOT4)は、前述の式(6)により計算できるが、これらは、状態変数についての2次式になっている。そのため、DTOT1~DTOT4は、それぞれ以下の式(10)のように変換できる。
【0126】
【数10】
【0127】
式(10)において、xは(x,x,…,x)の行列であり、V~Vのそれぞれは、N×Nの行列である。
最大積載量をQとした場合、上記制約条件は、DTOT1~DTOT4≦Qと表せる。
【0128】
このような2次式の不等式制約を制約項として含む評価関数は、以下の式(11)で表すことができる。
【0129】
【数11】
【0130】
式(11)においてCはコスト項であり、4台のトラックによる総移動距離を表す。コスト項Cは、以下の式(12)で表せる。
【0131】
【数12】
【0132】
式(12)において、Wは式(1)に示したようなWijによる、N×Nの行列である。
上記のような評価関数の値の変化分(エネルギーの変化量)ΔEは、以下の式(13)で表せる。
【0133】
【数13】
【0134】
図5に示したようなΔE算出部21aにおいて、式(13)に示すような上記のようなΔEを計算するために、ΔC、ΔP~ΔPを、それぞれ並列に計算し、足し合わせればよい。
【0135】
図10は、ΔE算出部の一例を示す図である。
ΔE算出部40は、記憶部41a,41b1~41b4、ΔC計算回路42a、ΔDTOT計算回路42b1~42b4、ΔE出力回路43を有する。
【0136】
記憶部41aは、前述のWを記憶する。記憶部41b1~41b4は、前述のV~Vを記憶する。記憶部41a,41b1~41b4は、たとえば、レジスタやSRAMなどの電子回路を用いて実現できる。
【0137】
ΔC計算回路42aは、x~xのそれぞれについて、式(8)に示したようなΔEに対応するエネルギーの変化量(ΔC)を計算する。ΔC計算回路42aに供給される識別番号=i,j,k,lは、計算に用いるWの要素を選択するために用いられる。x~xは、式(8)のローカルフィールド(たとえば、レジスタに保持されている)を、x~xの何れかについてのエネルギーの変化量を計算する回路に伝搬させるために用いられる。
【0138】
ただし、ΔC計算回路42aは、対応する制御信号ENが1になっている状態変数、または対応する遷移可否ビットp~pが1になっている状態変数については、変化量として正の大きな値を出力する。
【0139】
ΔDTOT計算回路42b1~42b4は、x~xのそれぞれについて、式(8)に示したようなΔEに対応するエネルギーの変化量(ΔDTOT1~ΔDTOT4)を計算する。ただし、ΔDTOT計算回路42b1~42b4は、ΔC計算回路42aと異なり、Wの代わりにV~Vを用いる。たとえば、ΔDTOT計算回路42b1は、Vを用いてx~xのそれぞれについてのエネルギーの変化量ΔDTOT1を計算する。
【0140】
ΔDTOT計算回路42b1~42b4に供給される識別番号=i,j,k,lは、計算に用いるV~Vの要素を選択するために用いられる。x~xは、式(8)のローカルフィールドを、x~xの何れかについてのエネルギーの変化量を計算する回路に伝搬させるために用いられる。
【0141】
なお、ΔDTOT計算回路42b1~42b4についても、対応する制御信号ENが1になっている状態変数、または対応する遷移可否ビットp~pが1になっている状態変数については、変化量として正の大きな値を出力するようにしてもよい。
【0142】
ΔE出力回路43は、式(13)に基づいて、x~xのそれぞれについてのエネルギーの変化量であるΔE~ΔEを計算して出力する。
(CVRPの制約条件を考慮したエネルギーの変化量の計算手法その2)
2つ目の計算手法では、最適化装置20は、各時刻tにおけるデマンドの合計Dを、式(7)に基づいて計算し記憶する。また、最適化装置20は、トラックがルートiを、時刻tに通るか否かを示す変数ri,tを記憶する。
【0143】
図11は、Dとri,tの記憶例を示す図である。
図11には、i=1~4、t=1~16の場合のDとri,tの記憶例が示されている。ri,tは、トラックがルートiを、時刻tに通る場合には1、通らない場合には0となる。
【0144】
~xのうち、値が変化する状態変数の識別番号に応じて、同一ルート内で訪問するノードの訪問順が変化するケース1と、異なるルート間で訪問するノードが入れ替わるケース2と、デポとノードを訪問する順序が入れ替わるケース3がある。
【0145】
図12は、ケース1の一例を示す図である。
図12では、図1と同様にトラック数が4台でノード数が13のCVRPを計算する場合の状態変数(枠15内の16×16の状態変数)において、4つの状態変数の値が変化することで、ノード番号=2,4のノードの訪問順が入れ替わる例が示されている。
【0146】
ケース1では、各時刻tにおけるデマンドの合計Dのうち、図12の例ではDとDが入れ替わることになるが、各ルートでの積載量の和(DTOT1~DTOT4)は変わらない。このため、式(11)に示したような評価関数における制約項に変化はない。
【0147】
図13は、ケース1の状態遷移前後におけるri,tの記憶例を示す図である。
ケース1の場合、図13に示すように、状態遷移(4つの状態変数の変化(4ビット遷移))前後において、ri,tは変化しない。
【0148】
図14は、ケース2の一例を示す図である。
図14の例では、1つ目のルートにおいて、トラックが時刻t=2に訪問するノードが、ノード番号=2からノード番号=3のノードに変更されている。また、2つ目のルートにおいて、トラックが時刻t=3に訪問するノードが、ノード番号=3からノード番号=2のノードに変更されている。つまり、異なるルート間で訪問するノードが入れ替わっている。
【0149】
ケース2では、各時刻tにおけるデマンドの合計Dのうち、DとDが入れ替わることになり、DTOT1とDTOT2が変わる。このため、制約項に変化が生じる。ただ、ケース2の状態遷移前後におけるri,tは、図13と同様になり遷移前後において変化しない。
【0150】
図15は、ケース3の一例を示す図である。
図15の例では、1つ目のルートにおいて、トラックは時刻t=3にノード番号=4のノードを訪問する代わりにデポに戻っている。2つ目のルートにおいて、トラックは時刻t=5にデポにいる代わりに、ノード番号=4のノードに訪問している。
【0151】
ケース3では、各時刻tにおけるデマンドの合計Dのうち、DとDが入れ替わることになり、DTOT1とDTOT2が変わる。このため、制約項に変化が生じる。
図16は、ケース3の状態遷移前後におけるri,tの記憶例を示す図である。
【0152】
ケース3の場合、2つのルートにおける訪問ノード数が状態遷移前後において変わる。したがって、2つのルートについてのri,tも、図16のように、状態遷移前後において変化する。
【0153】
最適化装置20は、Dとri,tに基づいて、DTOT1~DTOT4を計算するとともに、上記ケース1~3を考慮してΔDTOT1~ΔDTOT4を計算する。前述のように、ケース1の状態遷移では、DTOT1~DTOT4は変わらない。一方、ケース2,3の状態遷移では、DTOT1~DTOT4の何れか2つにおいて変化が生じる。
【0154】
図14に示した例(ケース2)では、状態遷移前のDTOT1は、DTOT1=D+D+D+D+Dであり、状態遷移前のDTOT2は、DTOT2=D+D+Dである。状態遷移後のDTOT1は、DTOT1=D+D’+D+D+Dであり、状態遷移後のDTOT2は、DTOT2=D’+D+Dである。なお、D’=-D’である。
【0155】
状態遷移前後における積載量の和の変化分は、ΔDTOT1=ΔD=D’-Dであり、これは、以下の式(14)のように表すことができる。
【0156】
【数14】
【0157】
式(14)において、Δr1,iは、時刻t=iにおける状態遷移前後のr1,iの変化分を表し、図14の例では0である。
一方、ΔDTOT2=-ΔDTOT1と表せる。
【0158】
図15に示した例(ケース3)では、状態遷移前のDTOT1は、DTOT1=D+D+D+D+Dであり、状態遷移前のDTOT2は、DTOT2=D+D+Dである。状態遷移後のDTOT1は、DTOT1=D+D+D’であり、状態遷移後のDTOT2は、DTOT2=D+D’+D+D+Dである。
【0159】
状態遷移前後における積載量の和の変化分は、ΔDTOT1=ΔD-(D+D)=ΔD+(DΔr1,4+DΔr1,5)であり、これは、以下の式(15)のように表すことができる。
【0160】
【数15】
【0161】
式(15)において、Δr1,iは、時刻t=iにおける状態遷移前後のr1,iの変化分を表し、ケース3では1である。
一方、ΔDTOT2=-ΔDTOT1と表せる。
【0162】
上記の例を考慮すると、あるルートpにおける、状態遷移前後における積載量の和の変化分ΔDTOTpは、以下の手順により計算できる。
手順1:最適化装置20は、遷移候補の4つの状態変数の識別番号=i,j,k,lを生成する。
【0163】
手順2:最適化装置20は、識別番号=i,j,k,lに基づいて、積載量の和の変化が生じるルートpを計算する。
手順3:最適化装置20は、ルートpに関して積載量の和の変化が生じる識別番号の区間[s1,s2]を求める。
【0164】
手順4:最適化装置20は、区間[s1,s2]に対してΔD、Δri,tを計算する。
手順5:最適化装置20は、以下の式(16)に基づいて、ΔDTOTpを計算する。
【0165】
【数16】
【0166】
最適化装置20において、以上のような手順1~5を実行するために、たとえば、以下のようなΔE算出部を用いることができる。
図17は、ΔE算出部の他の例を示す図である。図17において、図10に示した要素と同じ要素については同一符号が付されている。
【0167】
ΔE算出部50は、記憶部51、更新回路52、遷移候補生成回路53、ルートp計算回路54、ΔDTOT計算回路55、ΔE出力回路56を有する。
記憶部51は、図11に示したような、Dとri,tを記憶する。記憶部51は、たとえば、レジスタやSRAMなどの電子回路を用いて実現できる。
【0168】
更新回路52は、x~xの値に基づいて、記憶部51に記憶されているDとri,tを更新する。
遷移候補生成回路53は、x~xの値に基づいて、遷移候補の4つの状態変数の識別番号=i,j,k,lを生成する。たとえば、遷移候補生成回路53は、現在値が0である状態変数の識別番号から識別番号=jを選択し、2-Way 1-hot制約を満たすように他の識別番号=i,k,lを生成する処理を、値が0である状態変数の個数分、繰り返す。ただし、遷移候補生成回路53は、遷移可否ビットp~pが1になっている状態変数の識別番号については識別番号=i,j,k,lの何れかとして採用しない。
【0169】
前述の図4のように値の変化を許容する範囲をより限定することで、遷移候補生成回路53や、以降の処理を行う回路のハードウェア構成を簡略化できる。
ルートp計算回路54は、遷移候補生成回路53が生成した識別番号=i,j,k,lに基づいて、積載量の和の変化が生じるルートpを計算する。たとえば、この処理は、遷移候補生成回路53が生成した識別番号=i,j,k,lの組の数だけ行われる。
【0170】
ΔDTOT計算回路55は、ルートpに関して積載量の和の変化が生じる識別番号の区間[s1,s2]を求める。たとえば、図14の例(ケース2)の場合、s1=s2=2であり、図15の例(ケース3)の場合、s1=3、s2=5である。そして、ΔDTOT計算回路55は、Dとri,tに基づき、区間[s1,s2]に対してΔD、Δri,tを計算し、式(16)に示したようなΔDTOTpを計算する。
【0171】
ΔE出力回路56は、Dとri,tに基づき、DTOTpを計算する。そして、ΔE出力回路56は、ΔC計算回路42aが出力するx~xのそれぞれについてのΔCに対して、積載量の和の変化が生じる全てのルートpについてΔPを加算することでΔE~ΔEを計算して出力する。なお、ΔP=max(DTOTp+ΔDTOTp-Q,0)-max(DTOTp-Q,0)である。
【0172】
(最適化装置20の全体動作例)
図18は、最適化装置の全体の動作の流れの一例を示すフローチャートである。
なお、以下では、疑似焼き鈍し法が用いられる場合を例にして説明するが、これに限定されず、レプリカ交換法などの手法を用いることもできる。
【0173】
まず、制御部21eの制御のもと、初期設定処理が行われる(ステップS1)。初期設定処理において、制御部21eは、式(4)の計算を行うための重み係数の設定や、ローカルフィールドや状態変数の初期値の設定、各状態変数が属するグループの識別番号の設定などが行われる。また、前述のΔEの計算手法のその1が用いられる場合、制御部21eは、V~Vの設定を行い、ΔEの計算手法のその2が用いられる場合、Dとri,tの初期値を設定する。
【0174】
なお、状態変数の初期値は、各グループにおいて1-hot制約を満たすように設定される。さらに、遷移許容範囲決定部22が、値の変化を許容する範囲を決定するグループについては、たとえば前述のような制約条件違反1~3に該当しないように、ホットビットが設定される。
【0175】
また、制御部21eは、所定の温度変更スケジュールに基づいたTの初期値や、更新処理の繰り返し回数の設定などを行う。
その後、遷移許容範囲決定部22は、値の変化を許容する範囲(遷移許容範囲)を決定する(ステップS2)。
【0176】
そして、ΔE算出部21a,40,50は、1-hot制約を満たす各グループにおいて、ハミング距離=4の状態遷移によって1-hot制約を満たすある状態から1-hot制約を満たす別の状態に遷移するときのΔE~ΔEを算出する(ステップS3)。
【0177】
ただし、ΔE算出部21a,40,50は、遷移許容範囲決定部22から遷移禁止を示す信号が出力された状態変数または現在の値が1である状態変数である遷移禁止ビットについては、エネルギーの変化量として、所定の大きな正の値を出力する。
【0178】
ステップS3の処理後、選択回路21bは、ΔE~ΔEに基づいて、識別番号=jを選択する(ステップS4)。
ステップS4の処理は、ΔE~ΔEに基づいて、x~xの何れかの変化の可否を判定する判定処理である。たとえば、選択回路21bは、Tと一様乱数とに基づいて生成される熱励起エネルギーと、ΔE~ΔEのそれぞれとを比較し、熱励起エネルギーよりも小さくなるエネルギーの変化量を選択して、その変化量に対応する識別番号をjとして選択する。熱励起エネルギーよりも小さくなるエネルギーの変化量が複数ある場合、選択回路21bは、たとえば、所定のルールにしたがって、またはランダムに、そのうちの1つのエネルギーの変化量を選択する。熱励起エネルギーよりも小さくなるエネルギーの変化量がない場合、何れの状態変数の変化も生じないが、選択回路21bは、オフセット値を熱励起エネルギーに加えるなどして、状態遷移の発生を促してもよい。
【0179】
ステップS4の処理後、識別番号計算部21cは、さらに、選択した識別番号=jから、識別番号=i,k,lを計算する(ステップS5)。
その後、更新処理が行われる(ステップS6)。ステップS6の処理では、ΔE算出部21a,40,50によってローカルフィールドの更新が行われるとともに、更新部21dによる記憶部21d1に記憶されている4つの状態変数の更新が行われる。ΔE算出部50が用いられる場合、更新回路52によって、記憶部51に記憶されているDとri,tが更新される。
【0180】
さらに、ステップS6の処理では、遷移許容範囲決定部22のホットビット更新部22bにより、記憶部22aに記憶されているホットビットの識別番号が更新される。
制御部21eは、上記のようなステップS2~S6の処理の繰返し回数が、所定回数N1に達したか否か判定する(ステップS7)。繰返し回数が所定回数N1に達していない場合には、ステップS2からの処理が繰り返される。
【0181】
繰返し回数が所定回数N1に達した場合、制御部21eは、Tの変更回数(温度変更回数)が、所定回数N2に達したか否かを判定する(ステップS8)。
温度変更回数が所定回数N2に達していない場合、制御部21eは、Tを変更する(温度を下げる)(ステップS9)。所定回数N1,N2、Tの値の変更の仕方(一度に値をどのくらい小さくするかなど)は、所定の温度変更スケジュールなどに基づいて決定される。ステップS9の処理後、ステップS2からの処理が繰り返される。
【0182】
温度変更回数が所定回数N2に達したとき、制御部21eは、たとえば、そのとき記憶部21d1に保持されている全状態変数の値を計算結果として出力し(ステップS10)、処理を終える。なお、制御部21eは、状態遷移が生じるたびに、全状態変数の値に基づいてエネルギーを計算し、最小エネルギーが得られる全状態変数の値を逐次更新し、温度変更回数が所定回数N2に達した時点での、その全状態変数の値を、解として出力してもよい。
【0183】
なお、上記の処理の順序は、上記の例に限定されるわけではなく、適宜順番を入れ替えてもよい。
以上のような、第2の実施の形態の最適化装置20によれば、第1の実施の形態の最適化装置10と同様の効果が得られる。すなわち、遷移許容範囲決定部22は、あるグループにおいて、値が1である状態変数の識別番号に基づいて、別のグループにおいて、0から1への値の変化を許容する状態変数の識別番号の上限または下限を決定する。これにより、現在の状態に応じて、次に値の変化を許容する状態変数の範囲を制限することができ、制約項を増やさずに制約条件を満たす解の探索が可能となり、最適解への収束性を向上させることができる。
【0184】
以上、実施の形態に基づき、本発明の最適化装置及び最適化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0185】
10 最適化装置
11 探索部
11a,12a 記憶部
12 遷移許容範囲決定部
15 枠
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18