(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-11
(45)【発行日】2024-12-19
(54)【発明の名称】割当問題処理システム及び割当問題処理方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20241212BHJP
G06Q 10/04 20230101ALI20241212BHJP
G06Q 50/10 20120101ALI20241212BHJP
【FI】
G06N99/00 180
G06Q10/04
G06Q50/10
(21)【出願番号】P 2022042261
(22)【出願日】2022-03-17
【審査請求日】2024-02-16
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】山本 佳生
(72)【発明者】
【氏名】加藤 晶子
【審査官】真木 健彦
(56)【参考文献】
【文献】国際公開第2020/235649(WO,A1)
【文献】特開平01-231200(JP,A)
【文献】特開2017-136943(JP,A)
【文献】特開2009-238033(JP,A)
【文献】池上 敦子,ナース・スケジューリングへの再挑戦,オペレーションズ・リサーチ 第59巻 第1号,日本,公益社団法人日本オペレーションズ・リサーチ学会,2014年01月01日,2014年1月号,P.26-33
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06Q 10/04
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
割当問題を処理する計算機を含む割当問題処理システムであって、
前記計算機は、
前記割当問題を分割して複数の部分問題を生成し、
一の前記部分問題に対する割当候補となる複数の候補を生成し、一の前記部分問題に対する解である部分解を、制約条件を満たす且つ前記各候補に付与されたコストに基づいて評価指標を高めるように最適化計算を複数回実行することにより複数取得し、取得した複数の前記部分解の中から所定の評価基準に基づいて所定数の前記部分解を選択し、前記部分解が求められていない他の部分問題に対する新たな前記割当候補となる複数の候補を新たに生成する処理を、全ての前記部分問題について所定数の前記部分解が選択されるまで繰り返し行い、
全ての前記部分問題について所定数の前記部分解が選択された後、最適化計算によって、複数の前記部分問題のそれぞれに対して選択された所定数の前記部分解を用いて、前記割当問題の解候補を計算し、
前記解候補を、評価指標に基づいて再評価し、再評価結果に基づいて最適化することにより、前記割当問題の解を計算する、
ように構成された、
割当問題処理システム。
【請求項2】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、
前記処理において、前回の処理で選択された所定数の前記部分解に基づいて、前記所定数の前記部分解が選択されていない前記他の部分問題に対する新たな前記割当候補となる複数の候補を新たに生成する、
ように構成された、
割当問題処理システム。
【請求項3】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、
前記部分解最適化処理において、前記所定の評価基準として類似度を用いる、
ように構成された、
割当問題処理システム。
【請求項4】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、所定の終了条件を満たすまで、前記解候補の最適化を繰り返し行う、
ように構成された、
割当問題処理システム。
【請求項5】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、
前記再評価の結果、評価が低い前記解候補の一部が存在する場合、前記解候補の一部に代わる割当候補となる複数の候補を新たに生成し、最適化計算により前記解候補の一部に代わる候補群を取得し、
前記解候補の評価が高くなるように、前記評価が低い前記解候補の一部を、前記候補群に入れ換えることで、前記解候補の最適化を行う、
ように構成された、
割当問題処理システム。
【請求項6】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、
前記再評価において、前記制約条件を違反しているかどうかを評価し、
前記制約条件を違反している前記解候補の一部が存在する場合、前記解候補の一部に代わる割当候補となる複数の候補を新たに生成し、最適化計算により前記解候補の一部に代わる候補群を取得し、
前記解候補の評価が高くなるように、前記制約条件を違反している前記解候補の一部を、前記候補群に入れ換えることで、前記解候補の最適化を行う、
ように構成された、
割当問題処理システム。
【請求項7】
請求項5に記載の割当問題処理システムにおいて、
前記計算機は、
前記再評価において、前記解候補の各候補の前記コストを既に前記最適化計算によって取得している前記部分解の各候補の前記コストと比較することにより評価する、
ように構成された、
割当問題処理システム。
【請求項8】
請求項1に記載の割当問題処理システムにおいて、
前記計算機は、
前記最適化計算の前記制約条件を満たすように、前記部分解が求められていない前記他の部分問題に対する前記割当候補となる複数の候補を新たに生成する、
ように構成された、
割当問題処理システム。
【請求項9】
請求項1乃至請求項8の何れか一項に記載の割当問題処理システムにおいて、
前記計算機は、
前記最適化計算をアニーリングによって行う、
ように構成された、
割当問題処理システム。
【請求項10】
割当問題を処理する計算機を用いた割当問題処理方法であって、
前記計算機によって、
前記割当問題を分割して複数の部分問題を生成し、
一の前記部分問題に対する割当候補となる複数の候補を生成し、一の前記部分問題に対する解である部分解を、制約条件を満たす且つ前記各候補に付与されたコストに基づいて評価指標を高めるように最適化計算を複数回実行することにより複数取得し、取得した複数の前記部分解の中から所定の評価基準に基づいて所定数の前記部分解を選択し、前記部分解が求められていない他の部分問題に対する新たな前記割当候補となる複数の候補を新たに生成する処理を、全ての前記部分問題について所定数の前記部分解が選択されるまで繰り返し行い、
全ての前記部分問題について所定数の前記部分解が選択された後、最適化計算によって、複数の前記部分問題のそれぞれに対して選択された所定数の前記部分解を用いて、前記割当問題の解候補を計算し、
前記解候補を、評価指標に基づいて再評価し、再評価結果に基づいて最適化することにより、前記割当問題の解を計算する、
割当問題処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、割当問題処理システム及び割当問題処理方法に関する。
【背景技術】
【0002】
社会システムの生産性向上のためアニーリング法が組合せ最適化問題の高速解法として注目を浴びている。交通系や配送・巡回経路決定などの実問題では多数の複雑な制約条件を加味する必要があり、特に勤務シフト作成や人員配置といったような割当問題は、所謂NP困難な問題に分類され、従来のコンピュータに基づくアルゴリズムでは、実用に耐えうる速度での計画の立案が困難であることが知られている。このため、割当計画立案の自動化へのシーズないしニーズが高まっていると考えられる。
【0003】
本発明者らは、鋭意研究を行い、このような再計画の立案は「最適化問題」として計算機で解くことができるとの知見ないしコンセプトのもと、以下のように思案するに至った。すなわち、実社会の大規模な最適化問題を高速で解くには、例えばイジングモデルなどの「相互作用モデル」で問題を記述し、CMOSアニーリングのような「最適化問題専用計算技術」を用いて計算を実行する方法が考えられる。相互作用モデルを用いて再計画立案を行うにあたり、複雑な制約条件を効率的に扱う方法として、列生成法等を用いて部分問題の候補生成を行った後に、集合分割問題や集合被覆問題を解く手段を用いることが有力である。
【0004】
上記に関連する従来技術として、例えば、下記特許文献1及び特許文献2に記載の技術が挙げられる。特許文献1の技術は、集合分割問題における部分集合の候補の情報である候補情報を取得する取得手段と、前記取得手段により取得された前記候補情報に基づいて、前記集合分割問題に対応するイジングモデルにおけるハミルトニアンの式を生成する生成手段と、を有する。
【0005】
特許文献2の技術は、集合分割問題の最適解を求める最適化システムを、集合分割問題を双対問題に変換し、双対問題の解を求め、双対問題の解を含み2値変数により表される列生成子問題を作成し、列生成子問題を求解する。特許文献2の技術は、列生成子問題の解に収束条件を満たさない解が含まれる場合、当該列生成子問題の解を部分集合の候補として部分集合族に追加し、列生成子問題の解に収束条件を満たさない解が含まれなくなるまで列生成子問題の生成および求解を繰り返す。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2017-151810号公報
【文献】特開2021-43693号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1には、一般的な集合分割問題/集合被覆問題を相互作用モデルによって記述し、最適化問題を高速に解くための構成が記載されている。特許文献2には、特許文献1の手法を拡張し、元の問題を子問題に分割し、収束条件を満たさない解が含まれなくなるまで求解を繰り返し行うことで最適化問題を解くための構成が記載されている。
【0008】
しかし、特許文献2の技術では、この際(最適化問題を解く際)、子問題に対して、単一の解のみを保持し、局所的に更新を実行する場合は、探索が不十分であり、部分的には最適解、あるいは準最適解であっても、全体として局所解に捕らわれる可能性が高いことが懸念される。
【0009】
本発明は上記課題を解決するためにされた。即ち、本発明の目的の一つは、全体として局所解に捕らわれる可能性を低下でき、より広い解探索が可能になり、高い評価値を持つ解を得る可能性を向上できる割当問題処理システム及び割当問題処理方法を提供することにある。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明の割当問題処理システムは、割当問題を処理する計算機を含む割当問題処理システムであって、前記計算機は、前記割当問題を分割して複数の部分問題を生成し、一の前記部分問題に対する割当候補となる複数の候補を生成し、一の前記部分問題に対する解である部分解を、制約条件を満たす且つ前記各候補に付与されたコストに基づいて評価指標を高めるように最適化計算を複数回実行することにより複数取得し、取得した複数の前記部分解の中から所定の評価基準に基づいて所定数の前記部分解を選択し、前記部分解が求められていない他の部分問題に対する新たな前記割当候補となる複数の候補を新たに生成する処理を、全ての前記部分問題について所定数の前記部分解が選択されるまで繰り返し行い、全ての前記部分問題について所定数の前記部分解が選択された後、最適化計算によって、複数の前記部分問題のそれぞれに対して選択された所定数の前記部分解を用いて、前記割当問題の解候補を計算し、前記解候補を、評価指標に基づいて再評価し、再評価結果に基づいて最適化することにより、前記割当問題の解を計算する、ように構成されている。
【0011】
本発明の割当問題処理方法は、割当問題を処理する計算機を用いた割当問題処理方法であって、前記計算機によって、前記割当問題を分割して複数の部分問題を生成し、一の前記部分問題に対する割当候補となる複数の候補を生成し、一の前記部分問題に対する解である部分解を、制約条件を満たす且つ前記各候補に付与されたコストに基づいて評価指標を高めるように最適化計算を複数回実行することにより複数取得し、取得した複数の前記部分解の中から所定の評価基準に基づいて所定数の前記部分解を選択し、前記部分解が求められていない他の部分問題に対する新たな前記割当候補となる複数の候補を新たに生成する処理を、全ての前記部分問題について所定数の前記部分解が選択されるまで繰り返し行い、全ての前記部分問題について所定数の前記部分解が選択された後、最適化計算によって、複数の前記部分問題のそれぞれに対して選択された所定数の前記部分解を用いて、前記割当問題の解候補を計算し、前記解候補を、評価指標に基づいて再評価し、再評価結果に基づいて最適化することにより、前記割当問題の解を計算する。
【発明の効果】
【0012】
本発明によれば、全体として局所解に捕らわれる可能性を低下でき、より広い解探索が可能になり、高い評価値を持つ解を得る可能性を向上できる。
【図面の簡単な説明】
【0013】
【
図1】
図1は本発明の実施形態に係る情報処理システムの構成例を説明するためのブロック図である。
【
図2】
図2は物理的な計算機のハードウェア構成の一例を示すブロック図である。
【
図4】
図4は割当問題処理システムが実行する処理の処理フローを示すフローチャートである。
【
図5】
図5は割当問題の例を説明するための図である。
【
図6】
図6は部分問題に対する割り当て候補の例を説明するための図である。
【
図8A】
図8AはCandidate1から作成される候補の例を示す図である。
【
図8B】
図8BはCandidate2から作成される候補の例を示す図である。
【発明を実施するための形態】
【0014】
<<実施形態>>
本発明の実施形態について、図面を参照して詳細に説明する。ただし、本発明は以下に示す実施形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0015】
以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。
【0016】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスを使用することができる。
【0017】
さらに、以下の説明では、説明の便宜のため、ソフトウエアブロックが主体となって処理を実行する旨を記述する場合があるが、実際の処理の主体はプロセッサであることに注意されたい。
【0018】
<システム全体の概要>
図1は情報処理システム(割当計画案出力システム)の処理ブロックを示す。
図1に示す情報処理システムは、一つの物理的な計算機によって構成されることができる。この場合、「情報処理装置」とも称呼される場合がある。あるいは、情報処理システムは、各構成要素が別々の物理的な計算機によって実現されていてもよい。さらにまた、情報処理システムは、一つ以上の物理的な計算機を備えた計算機システムに代えて、他種のシステム、例えば、物理的な計算リソース群(例えば、クラウド基盤)上に実現されたシステム(例えば、クラウドコンピューティングシステム)であってもよい。
【0019】
図2は物理的な計算機のハードウェア構成の一例を示すブロック図である。
図2に示すように、物理的計算機200は、CPU201、ROM202、RAM203、データの読み出し及び書き込み可能な不揮発性の記憶装置(HDD)204、ネットワークインタフェース205及び入出力インタフェース206などを含む。これらは、バス207を介して互いに通信可能に接続されている。CPU201はROM202及び/又は記憶装置204に格納された図示しない各種プログラムをRAM203にロードし、RAM203にロードされたプログラムを実行することによって、各種機能を実現する。RAM203には、上述したようにCPU201が実行する各種プログラムがロードされ、CPU201が各種プログラムを実行する際に使用するデータが一時的に記憶される。ROM202及び/又は記憶装置204は、不揮発性の記憶媒体であり、各種プログラムが記憶されている。ネットワークインタフェース205は、物理的計算機200がネットワークに接続されるためのインタフェースである。入出力インタフェース206は、キーボード、マウスなどの入力装置(操作装置)及びディスプレイなどの表示装置に接続されるためのインタフェースである。
【0020】
図1に示す情報処理システム100は、本発明の「割当計画案出力システム」に対応する。なお、割当計画案出力システムは、便宜上、「割当問題処理システム」とも称呼される場合がある。情報処理システム100は、入出力支援部101、分割候補生成部102及び最適化計算部103を含む。
【0021】
図1に示す例では、情報処理システム100に対する情報(データ)の入出力は、入出力支援部101を介して行われる。入出力支援部101は、例えばPC(Personal Computer)などの外部装置の入力インタフェース(キーボードやマウスなどの操作入力部、モデムなどの通信部、など)と接続され、かかる入力インタフェースを介してユーザが入力する情報を受け取り、該受け取った情報を、後述する入力データ記憶部101aに格納するととともに、分割候補生成部102に供給する。
【0022】
また、入出力支援部101は、例えばPCなどの外部装置の出力インタフェース(LCDなどの表示部、プリンタなどの印刷部、HDDなどの外部メモリ、モデムなどの通信部、など)と接続される。外部装置は、出力インタフェースを介して、情報処理システム100により入力データD10(割当問題)を処理することによって自動立案された計画案のデータ(一例として、再計画案のデータ)を、情報処理システム100から受け取ることができる。更に、外部装置は、計画案のデータ(一例として、再計画案のデータ)を目視できるように、例えば外部装置が備えるディスプレイに表示することができる。
【0023】
入出力支援部101は、上述したPCなどの外部装置と通信しながら上述した処理を遂行するためのハードウェアプロセッサを含んでいてもよい。
【0024】
さらに、入出力支援部101は、当初に策定された計画(以下は「元の計画」という)および発生した事故についての情報を入力データとして記憶する入力データ記憶部101aと、計画案に関する情報(例えば、当該元の計画を基盤とした再計画案に関する情報)を出力データとして記憶する出力データ記憶部101bと、を備えており、かかる構成および格納される情報等についての詳細は後述する。
【0025】
分割候補生成部102は、生成する候補の列長を決定し、部分的な割当候補群を生成する。分割候補生成部102は、分割単位決定部102a、部分候補生成部102b、再計算範囲決定部102c及び部分候補再生成部102dを含む。なお、これらの各部の詳細は、後に説明する。
【0026】
最適化計算部103は、再計画立案の最適化問題を高速に処理するために、CMOSアニーリングのような「最適化問題専用計算技術」を用いて実現する。ここで、最適化問題とは、要請された制約の下、評価値となるコストを最小化あるいは最大化する変数の値を求める問題を指す。最適化問題専用計算技術は、例えばイジングモデルやボルツマンマシンのような、
図3の数式1の形で記述される相互作用モデルの超高速な専用シミュレータとなっている。
【0027】
数式1中、xおよびhは縦ベクトルであり、Jは対称行列である。数式1のxは変数である。変数xの型は、ハードウェアの性質に依存するため、適宜、ハードウェアの性質に合わせてモデル化すればよい。なお、添え字Tは、転置行列を示す符号である。
【0028】
さらに、数式1中、Jおよびhは、各々、定数であり、これら定数の幅(大きさ)、Jおよびhが整数か実数か等についてもハードウェアの性質に依存するが、特に限定されるものではなく、加えて、本実施形態の特徴との関連性は低い。
【0029】
一般に、専ら最適化問題のみを計算するコンピュータ関連技術(以下、「最適化問題専用計算技術」と称する場合がある)においては、数式1で記述したような相互作用モデルの最低エネルギー状態(数式1の左辺Hが最小となるxの値)を計算機上で探索あるいは再現することによって、最適な変数xの値を求める。
【0030】
言い換えると、最適化問題専用計算技術では、相互作用モデルの相互作用係数(数式1ではJに対応する値)や外場係数(数式1ではhに対応する値)などを入力値として演算を行い、Hが最小となる変数xを算出して出力する。
【0031】
図1に戻ると、最適化計算部103は、並列処理デバイス(並列処理が可能なデバイス)の一例であり、数式1で上述したような相互作用モデル(例えばイジングモデル)を演算することで割当問題を解くためのアクセラレータとしての役割を担う。
【0032】
最適化計算部103は、典型的には、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)又はGPU(Graphics Processing Unit)のようなハードウェア回路である。
【0033】
なお、最適化計算部103は、一つ以上の物理的な又は仮想的なコアを有するCPU(Central Processing Unit)により実現されてもよい。
【0034】
あるいは、最適化計算部103は、例えば、半導体回路(例えばCMOS(Complementary Metal Oxide Semiconductor)回路)でイジングモデルの動作を疑似的に再現した半導体コンピュータ(例えばCMOSアニーリングマシン)とすることができる。最適化計算部103は、例えば、GPU上で動作するアルゴリズム(例えば、Momentum annealing)によって実現されてもよい。
【0035】
また、最適化計算部103は、デジタル計算機ではなく、アニーリング型量子計算機や汎用型量子計算を用いてもよい。
【0036】
最適化計算部103は、候補選択最適化計算部103a、KPI評価部103b、部分解記憶部103c、部分解選択データ作成部103d、部分解選択最適化計算部103e、選択部分解記憶部103f、選択候補記憶部103g、KPI評価部103h及び結果選択最適化計算部103iを含む。なお、これらの各部の詳細は、後に説明する。
【0037】
入出力支援部101及び分割候補生成部102の一例は、汎用計算機を含む。汎用計算機は、例えば、ノイマン型コンピュータ等の計算機であり、例えば、上述の
図2に示した物理的な計算機で構成される。
【0038】
例えば、入出力支援部101は、ネットワークインタフェース205及び/又は入出力インタフェース206、ROM202及び/又は記憶装置204に格納された各種プログラム、並びに、記憶装置204で構成される。入力データ記憶部101aは、記憶装置204で構成される。出力データ記憶部101bは、記憶装置204で構成される。
【0039】
分割候補生成部102は、CPU201で実行されるROM202及び/又は記憶装置204に格納された各種プログラム構成される。分割単位決定部102a、部分候補生成部102b、再計算範囲決定部102c及び部分候補再生成部102dは、ROM202及び/又は記憶装置204に格納された各種プログラムで構成される。
【0040】
最適化計算部103のハードウェア構成の一例は、汎用計算機、専用計算機及び記憶装置を含む。汎用計算機は、例えば、上述の
図2に示した物理的な計算機で構成される。専用計算機は、例えば、CMOSアニーリングマシンで構成される。記憶装置は、上述の
図2に示した物理的な計算機に含まるRAM203及び/又は記憶装置204で構成される。
【0041】
例えば、KPI評価部103b、部分解記憶部103c、部分解選択データ作成部103d、選択部分解記憶部103f、選択候補記憶部103g、KPI評価部103hは、物理的な計算機で構成される。
【0042】
例えば、KPI評価部103bは、CPU201で実行されるROM202及び/又は記憶装置204に格納された各種プログラム構成される。
【0043】
部分解記憶部103cは、RAM203及び/又は記憶装置204で構成される。
【0044】
部分解選択データ作成部103dは、CPU201で実行されるROM202及び/又は記憶装置204に格納された各種プログラムで構成される。
【0045】
選択部分解記憶部103fは、RAM203及び/又は記憶装置204で構成される。
【0046】
選択候補記憶部103gは、RAM203及び/又は記憶装置204で構成される。
【0047】
KPI評価部103hは、CPU201で実行されるROM202及び/又は記憶装置204に格納された各種プログラム構成される。
【0048】
候補選択最適化計算部103a、部分解選択最適化計算部103e、及び、結果選択最適化計算部103iは、例えば、上述したCMOSアニーリングマシンで構成される。
【0049】
図1を用いて本システムの動作を説明する。入力データD10は、割当対象群(ヒト、モノ、タスク等)のノードデータD11、列生成により生成される候補の列長を制限する候補列長制限パラメータD12である。
【0050】
候補列長制限パラメータD12は、情報処理システム100の分割候補生成部102の分割単位決定部102aへと入力される。分割単位決定部102aは、候補列長制限パラメータD12に基づいて、生成する候補の列長を決定し、部分候補生成部102bへ出力する。
【0051】
部分候補生成部102bは、この値(列長を示す値)とノードデータD11を用いて、部分的な割当候補群(後述の
図6を参照。)を生成する
生成された部分割当候補群は、最適化計算部103の候補選択最適化計算部103aによって、割当問題の形で(割当問題を分割した各部分問題の形で)解かれる。得られた解は、KPI評価部103bで、評価値の計算や制約の充足の判定が行われる。この一連の最適化計算とKPI評価は複数回実行され、得られた制約充足解は部分解記憶部103cへと保存される。
【0052】
その後、部分解記憶部103cに蓄積された、複数の部分解からなる部分解群は、部分解選択データ作成部103dにおいて、それぞれのKPIと解の多様性を両立するよう解候補の組合せを見つける組合せ最適化問題へと変換され部分解選択最適化計算部103eで計算が行われる。この計算により選択された部分解群は、選択部分解記憶部103fへと保存される。
【0053】
選択部分解記憶部103fでは、以前のある部分問題に対するイタレーション(計算)の結果がある場合、部分解同士を結合して保存され、保存された解は次の部分問題に対するイタレーションにおいて部分候補生成部102bの入力となる。そして、そのデータとノードデータD11を用いて、部分候補生成部102bにて当該イタレーションの部分候補の生成が行われ、最適化計算部103(候補選択最適化計算部103a)では同様に部分解を算出する。
【0054】
既定のイタレーション回数後、全ての割当対象に解が割当られた後、選択部分解記憶部103fに記憶された解候補群からKPIが最も高いものを選択候補記憶部103gへと保存する。
【0055】
選択候補記憶部103gに保存された解は、再計算範囲決定部102cにおいて、再評価される。即ち、選択候補記憶部103gに保存された解は、再計算範囲決定部102cにおいて、これまで計算した部分解のKPI等と現在保持している解との比較を行い、KPIを低下させている区間を検出し、部分候補再生成部102dにてその区間において部分候補を再生成し、結果選択最適化計算部103iにて最適化計算を行い、KPI評価部103hにて解の評価値を算出し、全体の評価値を改善するようであれば、選択候補記憶部103gに保存される。
【0056】
上記の処理を規定回数や処理時間等の終了条件(例えば、規定回数が閾値回数に達したとの条件、処理時間が閾値時間に達したとの条件)を満たすまで行い、結果は割当データD20として出力される。
【0057】
図4は、前述の情報処理システム100の処理フローを記述したものである。入力データD10として、割当対象のデータD11と割当候補の列長(候補内に含まれる要素数)を制限するような候補列長制限パラメータD12を用いる(ステップ400)。上記のデータから部分候補群の生成を行い、最適化計算により候補群から候補選択を行う(ステップ401~ステップ403)。算出された候補に対して部分評価値を計算し(ステップ404)、規定回数(規定の試行回数)に達していない場合(ステップ405にて「NO」)は、繰り返し最適化計算を行い、候補の選択を行う。得られた候補は、既に他の部分問題の解が存在する場合、それらと結合して新たな解とする(ステップ406)。
【0058】
既定の回数の試行後、分割された全ての部分問題に対して割当候補を生成できていない場合(ステップ407にて「NO」)は、現在得られている部分問題の候補を元に部分入力データの作成を行う(ステップ401)。全ての部分問題に対して割当候補を生成した後(ステップ407にて「YES」)は、最もKPIの高い解候補を選択する。
【0059】
得られた解候補に対して、計算した部分問題のKPI等と現在の解候補を比較する等してKPIの低下している箇所を発見する(ステップ408)。発見された部分に対して、再度割当を行うために部分入力データを作成(ステップ409)、部分候補群を生成し、再度割当をし直す(ステップ410)。そこで得られた解の評価値(ステップ411)が既存のもののそれを超えている場合、新たな解候補とする。
【0060】
これを、終了条件(基準KPIや処理時間に基づく条件など)を満たす(ステップ412にて「YES」)まで繰り返し、終了条件を満たしたものを全体の解として出力する(ステップ413)。
【実施例】
【0061】
以下、実施例により本発明をより詳細に説明する。なお、本発明は下記の実施例に限定されるものではない。以下は、
図4のフローチャートを参照しながら、問題としてタスクスケジューリングを例にとって説明をする。
【0062】
本実施例は、6日の期間において、作業員8人に対して3種類のタスク及び休みを割り振る問題であるが、あくまで一例として作業員にタスクを割り振るものであって、本発明は以下の記載内容に限定して解釈されるものではない。したがって、例えば他の例として、作業員を、工場のライン等に置き換えても良い。
【0063】
このような割当問題では、各タスクの必要人数、作業員に対する最低休日取得数、禁止パターン、日勤、夜勤、経験者と新人の振り分け等がしばしば制約として課される。また、作成した割当案を評価する指標としては、多能工化の観点から各作業員に対して、必要なタスクがどの程度割り振られているか、作業員が希望する休日がどれほど守れているか等が挙げられる。
【0064】
本実施例では、順守すべき制約として、各タスクの必要人数を設定し、評価指標としては、各作業員に対して、作業員が希望する休日がどれほど守れているかを用いた。評価指標はそれぞれ作成した候補に対して、例えば、前者は作業員1に期間中タスク1を3回割り当てることが課せられ、不足している数だけ評価値が下がるといったような形で算出される。
【0065】
入力データとしては、作業員の人数とタスクの種類、割当対象期間、制約に付随する条件及び候補の列長(この例では、日にちで分割するため1から6が考えられ、本実施例では3とする。)が与えられ、出力データとしては、
図5の表500に示すような各作業員に対する各日にちにおける割当てられたタスクが考えられる。
【0066】
図4のステップ401では、与えられた入力データに対して、部分入力データの作成を行う。部分入力データは、部分問題の候補生成に必要なデータであり、部分問題は、入力データである候補の列長を制限するパラメータを用いて、元のデータを複数の部分データに分割して作成されるものである。本実施例では、割当期間の6日間に対して、制限パラメータが3であるため、部分問題は、8人の作業員に対するDAY1~3、DAY4~6のそれぞれの期間に対する2つのタスクの割当問題を指す。本実施例では期間に対してタスクの中身が変化しないため部分入力データに関して特に考慮する必要はない。
【0067】
図4のステップ402では、ステップ401において作成された部分入力データに対応する部分問題に対して、
図6の表600に示すように、各作業員に対するタスクのf割り当て候補は、1,0の2値からなるベクトルによって表現される。この表では、列方向は計画候補を示し、行方向は割り当て対象の作業員とタスクをそれぞれ示す。j=1の列は、部分問題(DAY1~3)における割当候補の一つであり、i=1の行が作業員1への割り当ての有無を示すため、この割当候補が作業員1へのタスク割り当ての候補を意味する。この候補では、i=9,14,18がそれぞれ1であるため、作業員1に対してDAY1はタスク1を、DAY2はタスク2、DAY3では、タスク2がそれぞれ割り当てられる。
【0068】
ステップ403では、最適化計算により候補選択を行う。ここで行われる最適化計算は、各作業員に対して、タスクが1つ割り当てられており、タスクの重複は許すという集合被覆問題を解くものであり、一般的に
図3の数式2のように表現される。この式においてどの列jの組み合わせを選択するかをバイナリ変数xjで決定する。具体的には、列jの計画候補を選択する場合はxj=1、選択しない場合はxj=0とする。xj=1となる行路のみを取り出したものが実際のシフト計画案となる。数式2のAijは、
図6の例では、太枠線L1で囲まれた0/1のバイナリ値の行列である。また、Biは各作業員及び作業が割り当てられる必要のある回数を示し、通常、作業員は1回ずつ選択され、各タスクは、必要人数分設定され、Cjは、候補jにおいて、各作業員が希望する休日が割り当てられていない場合にコストとしてカウントする。本実施例では、
図5に記載する「休」を希望する休日とし、この希望日以外の休日を割り当てられた場合、コストを1とし、希望通りの場合は0とする。ここで得られる結果としては、8人の作業員の3日間のタスクの部分割当計画候補である8つの候補の集合が得られる。またそれらは、数式2によってCjが小さい候補集合であり、作業員が希望する休日が可能な限り順守されているものであり、KPIは数式2をそのまま用いて計算可能である。本実施例では、最適化計算部103では、数式3を用いた。KPI(Key Performance Indicator)は、目標を達成する度合いを監視、評価、または計測するための指標(数値、パラメータ)である。KPIを含むこのような指標は、便宜上、「評価指標」とも称呼される場合がある。
【0069】
ステップ404では、得られた部分割当計画候補に対して、前述の評価指標から部分評価値の計算を行い。部分割当計画候補と得られた部分評価値を紐づけて保存する。
【0070】
ステップ405では、この候補選択と評価値計算を規定回数実施されていることを判定し、規定回数に達するまで候補選択と評価値計算を繰り返す。
【0071】
次に処理する部分問題は、前の部分問題の状態を考慮して生成されるため、複数回のイタレーションによって得られた部分割当計画候補群全てを残した場合、候補の数が部分問題を解くごとに爆発してしまうことが考えられる。そのため、ステップ406では、次の部分問題の入力とする候補の数を制限するために解候補の選定を行う。
【0072】
具体的には、例えば、各部分割当計画候補の評価値及び候補ベクトル間の距離から算出される候補同士の類似度を用いて、KPIと解の多様性との両立を考慮して、解候補の選択を行う。候補同士の類似度に関しては、
図6に示すように各候補ベクトル長は全て等しいため、ハミング距離を用いて類似度係数Sijの計算を行うが、ユークリッド距離等の別の指標を用いても構わない。また、アニーリングでは、
図3の数式4に示すような目的関数を用いて部分割当候補の選択を行う。本実施例では、部分割当計画候補として、2つの候補(cand1,cand2)を残したとする。なお、
図7Aにcand1(Candidate1)を示し、
図7Bにcand2(Candidate2)を示す。
【0073】
ステップ407では、全ての部分問題に関してこの計算が完了したかを判定する。この時点では、まだDAY4~6の部分問題に対する割当が完了していないため、再度ステップ201に戻り部分入力データを作成する。
【0074】
2回目以降のステップ402では、
図8A及び
図8Bに示すように、2つの部分割当計画候補に対してそれぞれ候補の作成を行う。より詳しく説明すると、
図7Aに示すcand1から
図8Aに示す部分割当計画候補を作成し、
図7Bに示すcand2から
図8Bに示す部分割当計画候補を作成する。ここではj’がcand1に対する生成された割当候補を意味しており、j”をcand2から生成された割当候補としている。
【0075】
このように候補を生成するのは、本実施例では制約として考慮していないが、例えば「期間中に1回休日を割り当てる」、「期間中、特定のタスクを特定の人に特定回数割り当てる」、「連続して同じタスクをなるべく割り当てない(追加でコストを付与する)」等の部分問題ではなく元の問題全体に制約がかかる場合、それぞれの部分割当計画候補で、割り当てられたタスクの数や休日の日数等が異なるため、各候補のコストや制約が異なるためである。
【0076】
例えば、元の問題全体に制約がかかる場合のこのような制約(例えば、6日間で最低1回休む)に対しては、問題分割を行う際に、事前に「1つめの分割単位(DAY1~3)で1日休日を取らせ、2つめの分割単位(DAY4~6)では、休みの回数を0以上とする」といったような部分問題用の制約を新たに付与するか、部分問題の割当結果毎に、以降の部分問題に付与する制約を変更することで対応可能である。
【0077】
再度ステップ403~406を実施した後、ステップ407では、全ての部分問題の選択を完了したため、最も評価指標の高い部分割当計画候補を1つ選択し、元の問題に対する暫定的な解(
図9を参照。)とする。
【0078】
ステップ408以降では、この暫定的な解に対して、これまで得られた部分評価値をもとに、評価値が低下している部分、あるいは全体を通してみた時に制約を違反しているような箇所を発見し、該当区間(DAY1~3とDAY4~6に区切る必要はなくDAY2~5等の前段と異なる区間を生成してもよい)に関して入力データを作成し(ステップ409)、複数回部分候補群の生成と評価値の計算を行い(ステップ410,411)、評価値が改善しているようであればそれを新たな暫定的な解とする。本実施例では、部分問題ごとの制約が存在しないため、暫定最適解のDAY1~3部に対して、ステップ403で求めたcand1と比較してコストが増えていることが分かるため、DAY1~3部をコスト低下区間として再計算を行い、最終的な解を出力する(
図10を参照。)。
ステップ412では、規定の評価値を満たしている、あるいは所定の計算時間を超過しているといったような終了条件をもとに、計算処理を終了させ、その際に保持している解を最終的な割当案として出力する。
【0079】
<効果>
以上説明したように、本発明の実施形態に係る割当計画案出力システム(情報処理システム100)は、列生成の候補の列長(ノード数)を制限するようなパラメータを導入し、問題分割を行うことで候補数の爆発を抑制し、アニーリングを部分問題ごとに逐次的に実行することで最適解を保持したままアニーリングを行う(手段1)。更に、割当計画案出力システムは、分割された部分問題に対して複数回アニーリングを実施して得られた候補群に対して、「KPI」と「解の多様性(ベクトル間の距離より算出)」を両立するような候補を選択し、次の分割の入力とする(手段2)。更に、割当計画案出力システムは、選択結果に対して、制約違反または(アニーリング結果等から)KPIを低下させている区間を検知し、終了条件を満たすまで再度アニーリングを実施しKPIを改善させる(手段3)。
【0080】
これらにより、割当計画案出力システムは、複数の解を持つことにより、より広い解探索が可能になるため、高い評価値を持つ解を得ることができる。更に、割当計画案出力システムは、副次的な効果として、従来の手法では困難な規模のデータを処理可能であり、且つ、アニーリング後のデータ内容の変更に対して手段3をもって対応可能である。
【符号の説明】
【0081】
100…情報処理システム、101…入出力支援部、102…分割候補生成部、102a…分割単位決定部、102b…部分候補生成部、102c…再計算範囲決定部、102d…部分候補再生成部、103…最適化計算部、103a…候補選択最適化計算部、103b、103h…KPI評価部、103c…部分解記憶部、103d…部分解選択データ作成部、103e…部分解選択最適化計算部、103f…選択部分解記憶部、103g…選択候補記憶部、103i…結果選択最適化計算部